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(¥i_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 ¥i_isim diyeceğimiz/dediğimiz için yeni_isim.musteri_sayisi diyebiliyorsun. Aynı şey isim için de geçerli.
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?
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.