Çözüldü C++ veri alma

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

bedrhnaliakcy

Hectopat
Katılım
16 Temmuz 2018
Mesajlar
142
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
Meslek
İndie software
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.
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.
 
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
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.
 
Ş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
 

Yeni konular

Geri
Yukarı