Çözüldü C++ veri alma

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

bedrhnaliakcy

Decapat
Katılım
16 Temmuz 2018
Mesajlar
83
Arkadaşlar nesne dizilerine çalışıyorum ve kitaptaki kendini dene kısmı yapıyorum. Soruyu anladım ama anlamadığım tek kısım şu oldu.
Ben kullanıcıdan çalışan bilgileri alıyorum ve kullanıcı -1 girdiğinde ise program duruyor ve ekrana girmiş olduğu bütün bilgileri ekrana yazıyor.
Her ihtimale rağmen soruyu yazıyorum.
Çalışanların ad, soyadı, maaşlarını klavyeden alan ve bu bilgileri nesne dizisine kaydediyor. Sonrası yukarıda zaten.
Benim aslında demek istediğim arkadaşlar şu ben nesne dizisini nasıl ayarlamam gerekiyor. Yani kullanıcı girdik cemi boyut büyüyecek yoksa önceden ayarlamam mı gerekiyor. Belki kullanıcı 100 tane veri girecek ben ne bileyim değil mi yani nesne tanımlaması nasıl olacak?
Şimdiden teşekkür ederim arkadaşlar.
Şimdi aklıma geldi.
Ben şöyle bir şey düşündüm aslında. For döngüsü içerisine.

C++:
int main() {
 calisan nesne[];
 int k=1;
 for(int i=0;i<5;i++){
 nesne[i].bilgi_al();
 //buraya koşul kontrolü koysak.
 k++;
 }
 return 0;
}

Yazsak. Devamında for içerisine kullanıcı ekrana -1 yazdırdı mı diye kontrol etsek ve daha sonrasında evet ise (break) yani bitir. Hayır ise k bir artsın.
 
Son düzenleyen: Moderatör:
Çözüm
Factory pattern arkadaşımız için biraz kafa karıştırıcı olabilir. Arkadaş henüz OOP temellerini öğreniyor. Koşul kontrolü yapmak istersen, bu doğru olabilir hocam fakat dilin bir tık daha güçlü olan yanını kullanayım derseniz, pointer ile dynamic Memory allocation dediğimiz metodu uygulayabilirsiniz. Dma ile hem c++'ın pointer nimetinden faydalanırsınız, hem de şu an çok önemli olmasa da ileride önünüze gelecek performanslı kod yazma durumunu çözersiniz.
Ben de ayrıca listeleri öneriyorum. Listeleri araştırırsanız dinamik olarak genişleyebilen bir generic sınıfı kullanmış olursunuz. Birkaç metot ile okuma, yazma ve gezme işlemlerini gerçekleştirebilirsiniz. Lists
Bir de kanımca, yazılım ile ilgili takıldığınız sorulara cevabı burada aramak yerine stack overflow kullanmanız daha doğru olur. Bu hem ingilizcenizi geliştirecek, hem de direkt olarak bu işin forumunda cevap arayacaksınız. Örneğin Google'a " how to create a dynamic arrays in c++" yazsanız örnek kodlardan tutun da anlatımlara kadar çok şey bulacaksınız muhtemelen.

LayThese

Kilopat
Katılım
2 Haziran 2016
Mesajlar
2.139
Çözümler
25
Soruyu doğru mu anladım bilmiyorum ama gördüğüm eksiklerinizi yazayım.

1) Nesne listesi oluşturmak yerine daha dinamik olan array list ya da linked list gibi yapıları kullanabilirsiniz.

2) Nesne oluştururken ya factory pattern gömmeniz gerek bir fonksiyon içine ya da new operatörünü kullanmanız gerek loop içinde.

3)Sonsuza kadar veri girilmesi için dediğiniz gibi -1'i girdiğiniz referansı kontrol eden bir mekanizmaya ihtiyacınız var "while(true)" diyip onun içine if de açabilirsiniz ya da" while(referans != 0)" da kullanabilirsiniz.
 
Katılım
20 Ekim 2014
Mesajlar
86
Çözümler
1
Factory pattern arkadaşımız için biraz kafa karıştırıcı olabilir. Arkadaş henüz OOP temellerini öğreniyor. Koşul kontrolü yapmak istersen, bu doğru olabilir hocam fakat dilin bir tık daha güçlü olan yanını kullanayım derseniz, pointer ile dynamic Memory allocation dediğimiz metodu uygulayabilirsiniz. Dma ile hem c++'ın pointer nimetinden faydalanırsınız, hem de şu an çok önemli olmasa da ileride önünüze gelecek performanslı kod yazma durumunu çözersiniz.
Ben de ayrıca listeleri öneriyorum. Listeleri araştırırsanız dinamik olarak genişleyebilen bir generic sınıfı kullanmış olursunuz. Birkaç metot ile okuma, yazma ve gezme işlemlerini gerçekleştirebilirsiniz. Lists
Bir de kanımca, yazılım ile ilgili takıldığınız sorulara cevabı burada aramak yerine stack overflow kullanmanız daha doğru olur. Bu hem ingilizcenizi geliştirecek, hem de direkt olarak bu işin forumunda cevap arayacaksınız. Örneğin Google'a " how to create a dynamic arrays in c++" yazsanız örnek kodlardan tutun da anlatımlara kadar çok şey bulacaksınız muhtemelen.
 
Çözüm

TerabyteForever

Kilopat
Katılım
5 Mart 2017
Mesajlar
5.779
Makaleler
5
Çözümler
47
Yer
/dev/sda1
Vector yapısı (std::vector) tam dedğiniz iş için. Vector'den başka olarak linked list (std::list) de kullanabilirsiniz. Fakat Bjarne, kitabında std::vector kullanmanın daha iyi olduğunu ve diğer veri yapılarını kullanmak için bir sebebin olması gerektiğini söylemişti.

C++:
int main() {
std::vector<calisan> nesne;
int k=1;
for(int i=0;i<5;i++){
nesne[i].bilgi_al();
//buraya koşul kontrolü koysak.
k++;
}
return 0;
}

Bilgi alma fonksiyonunda ne olduğunu bilmediğim için koda bir adet vector ekleyerek bırakmak istedim.
 
KS
bedrhnaliakcy

bedrhnaliakcy

Decapat
Katılım
16 Temmuz 2018
Mesajlar
83
Şimdi hepinize teşekkür ederim. İşte bu konu sonu sınavını geçersem dinamik bellek yönetimini dersine geçeceğim. Ama ben daha dinamik bellek yönetimini öğrenmedim. O yüzden onsuz deneme yapmam gerekiyor. Büyük ihtimal ile koşullu denemem gerekiyor.

Çok teşekkür ederim
 
Yukarı