Problem mit Zugriff auf ein Struct innerhalb eines Arrays
-
#include <iostream> #include <cstring> using namespace std; int main() { struct car{ char make[]; int yearbuilt; }; cout << "how many cars do you want to be cataloged?" << endl; int a; cin >> a; for (int a; a>0; a--){ car *pointer=new car[a]; cout << "please enter the car's make: " << endl; cin.getline(pointer[a].make[],20); cout << "please enter the year it was built" << endl; cin >> pointer[a].yearbuilt; } system("PAUSE"); return 0; }leider kann dieses programm nicht kompiliert werden, irgendwas an der zeile "cin.getline(pointer[a].make[],20);" ist falsch...
die absicht wäre, dass so viele dynamische arrays für das car-struct erzeugt werden, wie der benutzer autos abspeichern will. dann soll er aufgefordert werden, den autonamen einzugeben, der dann im entsprechenden struct innerhalb des arrays abgespeichert werden soll. offenbar scheint an dieser stelle was am code nicht zu stimmen, habe schon verschiedene varianten ausprobiert aber komme nicht drauf wie ich das richtig schreiben soll...
-
Schon die Zeile "char make[];" ist falsch - da fehlt die Größenangabe für das Array. Wenn du das korrigiert hast, ist bei deinem getline() Aufruf das leere Klammerpaar hinter 'make' überflüssig.
(Ein persönlicher Tip: Mach dir das Leben leichter und verwende std::string und std::vector<>)
-
packe die speicher reservierung vor die schleife
car *pointer=new car[a];und gib den speicher wieder frei am ende des programms
-
danke für eure tipps! hab das soweit auch umgesetzt und noch das progi fertiggeschrieben, lässt sich soweit auch kompilieren:
#include <iostream> #include <cstring> using namespace std; int main() { struct car{ char make[20]; int yearbuilt; }; cout << "how many cars do you want to be cataloged?" << endl; int a; int b=a; cin >> a; car *pointer=new car[a]; for (int a=a-1; a>=0; a--){ cout << "car nr.1:" << endl; cout << "please enter the car's make: " << endl; cin.getline(pointer[a].make,20); cout << "please enter the year it was built:" << endl; cin >> pointer[a].yearbuilt; } cout << "here is your catalog:" << endl; for (int b=b-1; b>=0; b--){ cout << pointer[a].make << "\t" << pointer[a].yearbuilt << endl; } delete [] pointer; system("PAUSE"); return 0; }nur kommt das programm nicht sehr weit, sobald man die anzahl autos eingibt, deren daten man abspeichern will, kommt noch die eingabeaufforderung für das modell, doch das programm "stürzt" mit der typischen problembericht-senden fehlermeldung von windows ab... dabei hab ich das erzeugte array am ende des programms wieder gelöscht. was mach ich falsch??
-
Zeitvertreib

#include <iostream> #include <cstring> using namespace std; struct car{ char make[20]; int yearbuilt; }; int main() { int a = 0; cout << "how many cars do you want to be cataloged?" << endl; cin >> a; if(a) { car *pointer=new car[a]; for (int i=0; i < a; i++) { cout << "car nr." << i + 1 << ":" << endl; cout << "please enter the car's make: "; cin.ignore(); cin.getline(pointer[i].make,20); cout << endl; cout << "please enter the year it was built: "; cin >> pointer[i].yearbuilt; } cout << "here is your catalog: " << endl; for (int i=0; i < a; i++) { cout << pointer[i].make << "\t" << pointer[i].yearbuilt << endl; } delete [] pointer; } system("PAUSE"); return 0; }