Stephen Prata'nın "C++ Primer Plus 6. Baskısını" kullanarak C++'yı öğrenmeye çalışıyorum. 5. bölümdeki alıştırmalardan biri, bir sayının adını ve yılını tutan dinamik bir yapı oluşturmamı istiyor. Tüm bu bilgiler kullanıcı tarafından girilecektir Sorularım:C++ Yapıların Dinamik Dizisi Kullanıcı Girişi
1) Yapıdaki bir char dizisi yerine bir string nesnesi kullanabilir miyim? Eğer öyleyse, nasıl anlatabilir misiniz?
2) Kullanıcının birden fazla sözcük içeren bir ad girmesini nasıl sağlayabilirim? Get(), getline() vb. Kullanmaya çalışıyorum ama işe yaramayacağım.
) Basit bir program olduğunu biliyorum, ancak kod nasıl geliştirilebilir?Önceden teşekkür ederiz.
struct automobile
{
std::string name;
int year;
};
2) How can I enable the user to input a name that consists of more than one word? I've been trying to use get(), getline() etc. but I just can't make it work.
kullanın std::getline()
:
cout << "Please enter the make: ";
std::getline(std::cin,car[n].name); cout << endl;
3) I know it is a simple programme but in what way could the code be improved?
#include<iostream>
using namespace std;
const int ArSize = 20;
struct automobile
{
char name[ArSize];
int year;
};
int main()
{
cout << "How many cars do you wish to catalogue?\n";
int number;
cin >> number;
automobile * car = new automobile[number];
int n = 0;
while (n < number)
{
cout << "Car #" << n+1 << ":\n";
cout << "Please enter the make: ";
cin >> car[n].name; cout << endl;
cout << "Please enter the year: ";
cin >> car[n].year; cout << endl;
n++;
}
cout << "Here is your collection:\n";
int m = 0;
while (m < number)
{
cout << car[m].year << " " << car[m].name << endl;
m++;
}
delete [] car;
return 0;
}
1. Muhtemelen bunu kullanabilirsiniz, ancak büyük olasılıkla tüm STD/STL malzemelerinde başka bir ders olacaktır. 2. Neden birden fazla kelime girmeniz gerekiyor? Ve şimdiki kod bunu neden yapamıyor? 3. Basitse - onu geliştirmeyin. Yanlış yapacaksın. – Igor
Soru 3'e gelince, Bu durumda, Döngüler gerçekten uygun değilken. Bunun yerine döngüler için kullanın. Döngüler için geleneksel olarak her yinelemede bir değişkeni arttırmak için kullanılır. Bir boole bayrağı veya her döngüde arttırmayan bir koşul ifadesi kullanıyorsanız bir süre daha iyi olurdu. Ayrıca okunabilirlik için herhangi bir kapsüllenmiş kod satırını girdiğinizden emin olun. Int main() {...} içindeki her şey girintili olmalıdır. Son olarak, yeni bir programcı olarak endl ile "\ n" arasındaki farkı öğrenmenizi öneririm ve birbirinin yerine geçiyormuş gibi görünüyorsunuz ama aynı şeyle aynıdırlar – shockawave123
Son bir not! "Sayı" gibi jenerik değişken adlarından uzak durun. Bu almak için kötü bir alışkanlık. Araba sayısı için "numCars" gibi bir şey adlandırın. Ayrıca, "araba" değişkeniniz de biraz geneldir, ancak bu küçük örnek için muhtemelen işe yarayacaktır. Ancak, bir liste olduğu için çoğul olarak değiştirilmesini öneririm çünkü sadece bir arabanın değil, bir otomobil listesi. Buna kendini belgeleme kodu denir. Girmek için iyi bir alışkanlık. – shockawave123