[]

bir C++ sorusu

Selam dostlar
kasa ve müşteri düğümü olacak.n tane kasa var her kasada max 5 müşteri olabilir ondan sonrası için yeni kasa açılmak zorunda.müşteri ve kasa pointer ile belirtilmek zorunda.kasalar dizi şeklinde tutulmalı.kasa structında kasano,müşteri structında müsterino ve isim bulunmalı.

sorumuz n kasa dolana kadar sürecek.bu soru sınavda çıktı tam hatırlamıyorum eksik bi nokta olabilir.

soruyu açıklamak gerekiyor olabilir.Hocamızın pointer ve struct takıntısı mevcut illa her soruda

struct kasa{
int kasano;
int toplamsatis;
};

tarzı bir tanımlama istiyor.main içinde de

struct *musteri,*kasa; tarzı bir tanımlama ile başlanması isteniyor

soruda bunu müşteri için de yapıcaz tabi soruda da yazıyor

sorunun çözümü çok uzun deil heralde ama mantığı zor geldi bana.dizi şeklinde olması işlemi bitirdi beni.zaten pek vakit yoktu sınavda.

bunun kodunu yazabilecek olan var mı?full yazmasanız bile en azından tiyo lazım

 
Linked list istemiş galiba hocanız? Tam anlayamadım ama bu konuya bakabilirsin.

Edit, ya da Linked List değilse şöyle yapardım. Bir struct oluşturan fonksiyon tanımlardım. Örn: void createStruct gibi. input olarak o struct a vereceğin ismi alırdı. void createStruct(string* isim) olsun mesela. Şöyle tanımlardım onu da:

void createStruct(string *isim)
{ struct kasa {
int kasano;
int musteri_sayisi;
in toplamsatis;
}

typedef struct kasa *isim;
}

sonra main fonksiyon içerisinde
if (isim.musteri_sayisi>5)
createStruct(&yeni_isim);

der bunu kullanırdım. Bu structları da bir array'in içine atabilirsin. Syntax hatalı olabilir ama mantık olarak böyle gibi. Dikkat edersen fonksiyona input olarak &yeni_isim diyeceğimiz/dediğimiz için yeni_isim.musteri_sayisi diyebiliyorsun. Aynı şey isim için de geçerli.
  • alicia_dominica  (11.01.13 14:59:52 ~ 15:15:06) 
dersin çoğunluğunda bağlı liste işlendi zaten.adam o yüzden herşeyi düğüm şeklinde oluşturtuyo bağlı listeden gidilsin diye.bu soruda da kasaları birbirine numarasıyla bağladık diyelim.sonra napıcaz?


  • amusan  (11.01.13 15:10:02) 
O zaman da bu kasadaki müşteri sayısı 5'i geçince, o listeye yeni düğüm eklenecek. Bunun için addNode(input1, input2, input 3) fonksiyonu tanımlamak gerek.

fonksiyonu genel olarak tanımlıyorum, syntax'ı değişir çünkü:

nodu'u nereye ekleyeceğini buluyorsun. Bunun için findnode diye bir fonksiyon yazabilirsin veya direk addnode fonksiyonu içinde yazabilirsin. Sizin soruda sıra önemli değil o yüzden direk sona ekleyebilirsin.

Sonra bu node için memory allocation'ı yapıyorsun.

atıyorum yaptığın struct benim yukarıda belirttiğim gibi olsun, data'yı şöyle aktarıyorsun:

isim.musteri_sayisi = input1;
isim.toplamsatis = input2;
isim.kasano= input3;

bundan sonra varsa bir önceki node'un pointer'ını buna yönlendir yoksa bu datanın pointerını ilkpointer olarak atayıp (sonra bir şey eklenirse yönlendirebilmek için), bunun pointer'ını varsa bir sonraki node'a yoksa null'a yönlendireceksin. eğer müşteri sayısı 5'i geçerse tekrar yeni node açıp aynen devam.

Müşteri için de ilgili sırada 5 kişiden fazla varsa kasa ll'indeki nodelara bakacak, müşteri sayısı 5'ten az olan birine geçecek, kasa numarası değişecek, kendisinden önceki müşteri değişecek, eğer birisi müşterinin arkasına geldiyse o zaman önceki node değişecek falan, kompleks biraz. Burada da findNode diye fonksiyon yazmak gerek. Çok uzun değil fonksiyonlar ama düşünmesi biraz karmaşık.

Kısaca: Node bulma fonksiyonu, yeni node ekleme fonksiyonu, node silme fonksiyonu, sıfırdan node initialize etme fonksiyonu yazıp bunları bir döngü içerisinde iflerle yöneteceksin.

Edit: struct array'i kullanıyosan o arraydeki hangi struct'a ekleyeceksen onu yazacaksyın atıyorum 1. struct'a yazacaksın

isim senin array'in olsun mesela

isim[1.struct'a point eden pointer].musteri_sayisi=input1; olacak gibi düşün.

Şimdi ben böyle deyince çok karmaşık gibi oldu da, değil, düzgün anlatan bir kaynaktan bakarsan anlarsın.
  • alicia_dominica  (11.01.13 15:25:34 ~ 15:43:26) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.