C++, suche Tutorial

Deine Struktur ist ja nur sowas wie eine Schablone, ohne eine Instance davon hast du kein Speicherplatz. Ergo, ohne Variable davon auch kein Speicherplatz und somit keine Nutzung.
 
Ok thx. Ich habe versucht diese Aufgabe zu lösen (Ausgabe zu Überprüfung dazu gefügt)

Entwickeln Sie eine C++-Anwendung, die den Anwender zur Eingabe einer Bestellung auffordert. Der Anwender muss hierbei der Reihe nach die bestellte Ware, die Lieferanschrift, die Kreditkartennummer und das Gültigkeitsdatum der Kreditkarte eingeben. Die Daten sollen hierbei in geeigneten Variablen unter Zuhilfenahme benutzerdefinierter Strukturen und Enumerationen gespeichert werden. Lieferanschrift und Kreditkartendaten sollen jeweils in einer eigenen Struktur gespeichert werden. Die Bestellung wird ebenfalls in einer eigenen Struktur gespeichert, die sich der anderen beiden Strukturen bedient. Außerdem soll das Land, das in der Lieferanschrift gespeichert wird, vom Typ einer Enumeration sein.





und vermute dass ich noch viele Fehler eingebaut habe.


Meine Lösung sieht bis jetzt so aus(hoffe meine Schritte sind verständlich sonst einfach fragen).

#include<iostream>
#include<string>
using namespace std;

string Vorname, Nachname, Strasse, Ort, bestellte Ware;
int Hausnummer, Postleitzahl, Kreditkartennummer, KreditkartenGültigkeitsdatum;



struct Lieferanschrift
{
std::string Vorname;
std::string Nachname;
std::string Strasse;
int Hausnummer;
int Postleitzahl;
std::string Ort;
}




struct Kreditkartendaten
{ int Kreditkartennummer;
int KreditkartenGültigkeitsdatum;
}



enum land
{
Deutschland, Oesterreich, Schweiz, England, Frankreich
};



int main()
{


cout <<"Geben sie Ihre zu bestellende Ware ein" << endl;
cin >> bestellte Ware;



cout <<"Geben sie Ihren Vornamen ein" << endl;
cin >> Lieferanschrift.Vorname;

cout <<"Geben sie Ihren Nachnamen ein" << endl;
cin >> Lieferanschrift.Nachname;

cout <<"Geben sie Ihre Strasse ein" << endl;
cin >> Lieferanschrift.Strasse;

cout <<"Geben sie Ihre Hausnummer ein" << endl;
cin >> Lieferanschrift.Hausnummer;

cout <<"Geben sie Ihre Postleitzahl ein" << endl;
cin >> Lieferanschrift.Postleitzahl;

cout <<"Geben sie Ihren Ort ein" << endl;
cin >> Lieferanschrift.Ort;

cout <<"Geben sie Ihr Land ein" << endl;
cin >> land.Land;



cout <<"Geben sie Ihre Kreditkartennummer ein" << endl;
cin >> Kreditkartendaten.Kreditkartennummer;

cout <<"Geben sie Ihr Kredikarten Gültigkeitsdatum ein" << endl;
cin >> Kreditkartendaten.KreditkartenGültigkeitsdatum;


cout <<"Ihre Bestellung:" << Lieferanschrift << Kreditkartendaten << land << bestellte Ware <<endl;


}




Würde mich über schnelle Antworten freuen.


Grüße
silent12
 
struct blabla
{
...
}; // Semikolon fehltmain: return 0; fehlt (hatten wir doch schon mal...)

Die Länder-Enumeration soll sicherlich auch genutzt werden. Du könntest dafür z. B. ne Zahl abfragen (0 = D, 1 = CH, etc.) und dann auf das enum setzen
Code:
int cc; // "country code"
cout << "[0] Deutschland [1] Oesterreich" << ... << endl;
cin >> land;

land meinLand = land; // das geht nur wenn enum a) int ist und b) die Reihenfolge bei 0 beginnt und fortlaufen numeriert ist
// ansonsten
land meinLand = Deutschland;
switch (cc)
{
case 1:
    meinLand = Oesterreich;
    break;

case 2:
    meinLand = Schweiz;
    break;

...

default:
   // Fehler behandeln?
}
 
Servus,
ich schreib dir mal ein paar Kommentare rein:

Code:
#include<iostream>
#include<string>
using namespace std;
 
[COLOR=lime][I]// Wieso initialisiert du hier Variablen die du nachher in der Struktur anlegst? Die Struktur dient dazu, dass das nicht erforderlich ist.
// Die Variable "bestellte Ware" ist so nicht zulässig und führt zu einem Fehler (Leerzeichen)[/I]string Vorname, Nachname, Strasse, Ort, bestellte Ware;
int Hausnummer, Postleitzahl, Kreditkartennummer, KreditkartenGültigkeitsdatum;
 
 
[I][COLOR=lime]// Das Semikolon nach der geschweiften Klammer wurde schon erwähnt, ich hängs hier jetzt dran.
//Ich bin mit C++ nicht mehr ganz so vertraut, aber du hast ja die Zeile using namespace std oben schon drin, muss man dann bei string trotzdem noch std:: voransetzten?[/I]
struct Lieferanschrift 
{ 
  std::string Vorname; 
  std::string Nachname; 
  std::string Strasse; 
  int Hausnummer; 
  int Postleitzahl; 
  std::string Ort;  
};
 
 
[COLOR=lime][I] 
// Semikolon[/I]struct Kreditkartendaten
{ int Kreditkartennummer;
  int KreditkartenGültigkeitsdatum; 
};
 
 
[I][COLOR=lime]// Passt soweit, nur sollte man zumindest den ersten Eintrag mit einer Zahl versehen, also z.B.
//enum land
//{
//    D=0, AUT, CH, GB, F
//};[/I]
enum land 
{ 
  Deutschland, Oesterreich, Schweiz, England, Frankreich 
}; 
 
[COLOR=lime][I]//Mir fehlt noch eine Struktur laut deiner Aufgabenbeschreibung, ließ mal nochmal genau nach.[/I] 
 
int main() 
{ 
 
 
cout <<"Geben sie Ihre zu bestellende Ware ein" << endl;
cin >> bestellte Ware;
 
 
 
cout <<"Geben sie Ihren Vornamen ein" << endl;
cin >> Lieferanschrift.Vorname;
 
cout <<"Geben sie Ihren Nachnamen ein" << endl;
cin >> Lieferanschrift.Nachname;
 
cout <<"Geben sie Ihre Strasse ein" << endl;
cin >> Lieferanschrift.Strasse;
 
cout <<"Geben sie Ihre Hausnummer ein" << endl;
cin >> Lieferanschrift.Hausnummer;
 
cout <<"Geben sie Ihre Postleitzahl ein" << endl;
cin >> Lieferanschrift.Postleitzahl;
 
cout <<"Geben sie Ihren Ort ein" << endl;
cin >> Lieferanschrift.Ort;
 
cout <<"Geben sie Ihr Land ein" << endl;
cin >> land.Land;
 
 
 
cout <<"Geben sie Ihre Kreditkartennummer ein" << endl;
cin >> Kreditkartendaten.Kreditkartennummer;
 
cout <<"Geben sie Ihr Kredikarten Gültigkeitsdatum ein" << endl;
cin >> Kreditkartendaten.KreditkartenGültigkeitsdatum;
 
 
cout <<"Ihre Bestellung:" << Lieferanschrift <<  Kreditkartendaten << land << bestellte Ware <<endl;
 
 
}
Zum Ein- und Ausgabeprogramm schreib ich jetzt erst mal nichts, versuch zuerst die Punkte die ich aufgeführt habe einzuarbeiten. Das Thema, dass du noch jeweils eine Variable vom Typ deiner Struktur benötigst ist vorhin ja auch schon angesprochen worden. Die fehlen auch noch.
 
Die Variablen am Anfang waren eig. dafür gedacht, dass ich ja noch die Variablen erstellen sollte. Aber wie füge ich jetzt "....jeweils eine Variable vom Typ meiner Struktur" ein ?
 
soll ich einfach am Anfang die Variable Lieferanschrift und Kreditkartendaten erstellen (aber die sind dann ja int und string gemischt und von welchem Typ sind sie dann ?) ?

Grüße
silent12
 
Na vielleicht hab ich jetzt ein Schritt zu viel erwartet. ;) Machen wir es einfacher.

Du hast bisher ja immer mit einfachen Variablen gearbeitet. int und String (wobei String eigentlich nichts einfaches mehr ist). Und wie heißt der Typ jetzt wenn du eine Struktur verwenden willst?
 
Nein, struct ist ja nur das Schlüsselwort um den Compiler zu sagen das es sich um einen Struktur handelt ;)

Code:
struct IchBinEineStruktur
{
...
wie heißt die Struktur?
 
Mal ne blöde Frage, wo bekommst du die Aufgaben her? Hast du da ein Buch wo zuerst eine grobe Erklärung des Themas drin ist und dann die Aufgabe oder sonst irgendwo?
 
Mmh, Silent ... ich habe 2 Wörter geschrieben und wir wissen das eines davon ein Compiler Schlüsselwort ist oder? Welches der übergebliebene Wörte könnte dann wohl der Name sein?
 
kann ich dann einfach Lieferanschrift Eingabe 1;
eingeben um als Variable Eingabe 1 vom Datentyp Lieferanschrift zu speichern ?
 
So nun nochmal alles überarbeitet (danke für die Tipps --> nehme mir ab jetzt mehr Zeit dafür und mache nicht mehr so viel nebenher :-D)

#include<iostream>
#include<string>
using namespace std;



struct Lieferanschrift
{
string Vorname;
string Nachname;
string Strasse;
int Hausnummer;
int Postleitzahl;
string Ort;
};




struct Kreditkartendaten
{ int Kreditkartennummer;
int KreditkartenGültigkeitsdatum;
};



enum land
{
Deutschland=0, Oesterreich, Schweiz, England, Frankreich
};



int main()
{

Kreditkartendaten MeineKreditkartendaten;
Lieferanschrift MeineLieferanschrift;
land MeinLand;
string bestellteWare;

cout <<"Geben sie Ihre zu bestellende Ware ein" << endl;
cin >> bestellteWare;



cout <<"Geben sie Ihren Vornamen ein" << endl;
cin >> MeineLieferanschrift.Vorname;

cout <<"Geben sie Ihren Nachnamen ein" << endl;
cin >> MeineLieferanschrift.Nachname;

cout <<"Geben sie Ihre Strasse ein" << endl;
cin >> MeineLieferanschrift.Strasse;

cout <<"Geben sie Ihre Hausnummer ein" << endl;
cin >> MeineLieferanschrift.Hausnummer;

cout <<"Geben sie Ihre Postleitzahl ein" << endl;
cin >> MeineLieferanschrift.Postleitzahl;

cout <<"Geben sie Ihren Ort ein" << endl;
cin >> MeineLieferanschrift.Ort;

cout <<"Geben sie Ihr Land ein" << endl;
cin >> MeinLand.land;



cout <<"Geben sie Ihre Kreditkartennummer ein" << endl;
cin >> MeineKreditkartendaten.Kreditkartennummer;

cout <<"Geben sie Ihr Kredikarten Gültigkeitsdatum ein" << endl;
cin >> MeineKreditkartendaten.KreditkartenGültigkeitsdatum;


cout <<"Ihre Bestellung:" << MeineLieferanschrift << MeineKreditkartendaten << MeinLand << bestellteWare <<endl;


}



Was habe ich noch übersehen ?
 
Zuletzt bearbeitet:
Also wenn das deine Struktur ist:
Code:
struct Lieferanschrift 
{ 
       string Vorname; 
       string Nachname; 
       string Strasse; 
       int Hausnummer; 
       int Postleitzahl; 
       string Ort;  
};

Dann hast du ja einen Datentyp Lieferanschrift angelegt. Der belegt jetzt erst mal keinerlei Speicher sondern ist jetzt halt einfach mal definiert.
Jetzt willst du ihn benutzten. Dann ist der Vorgang zuerst einmal genau gleich wie wenn du z.B. ein int benutzten willst, du musst eine Variable initialisieren und das machst du exakt so wie du geschrieben hast:
Code:
Lieferanschrift Eingabe1;

Du hast jetzt eine Variable mit dem Namen Eingabe1 (du hast wieder den Fehler gemacht Eingabe 1 zu schreiben, in Variablen- und Funktionsnamen dürfen keine Leerzeichen vorkommen) angelegt.

Jetzt musst du dann entsprechend dem Struct Werte zuweisen, das habe ich in deinem ersten Beispiel schon gesehen machst du mit dem .-Operator.

Mach einfach mal an deinem Beispiel weiter und poste es wieder hier dann gehen wir wieder durch.
 
Das return 0 und einen Teil der Aufgabe, Zitat aus der Aufgabe: Die Bestellung wird ebenfalls in einer eigenen Struktur gespeichert, die sich der anderen beiden Strukturen bedient.

Außerdem wird es so wohl mit der Ausgabe nicht hinhauen, hast es es mal durch den Compiler geschickt?
 
also einfach im main teil noch return 0; einsetzen. Der meldet mir einen Fehler bei " int KreditkartenGültigkeitsdatum" was ich nicht verstehe.




Verändert sähe es bis jetzt so aus:



#include<iostream>
#include<string>
using namespace std;



struct Lieferanschrift
{
string Vorname;
string Nachname;
string Strasse;
int Hausnummer;
int Postleitzahl;
string Ort;
};


struct Bestellung
{ Lieferanschrift MeineLieferanschrift;
land MeinLand;
Kreditkartendaten MeineKreditkartendaten;
string bestellteWare;
}

struct Kreditkartendaten
{ int Kreditkartennummer;
int KreditkartenGültigkeitsdatum;
};



enum land
{
Deutschland=0, Oesterreich, Schweiz, England, Frankreich
};



int main()
{

Kreditkartendaten MeineKreditkartendaten;
Lieferanschrift MeineLieferanschrift;
land MeinLand;
string bestellteWare;

cout <<"Geben sie Ihre zu bestellende Ware ein" << endl;
cin >> bestellteWare;



cout <<"Geben sie Ihren Vornamen ein" << endl;
cin >> MeineLieferanschrift.Vorname;

cout <<"Geben sie Ihren Nachnamen ein" << endl;
cin >> MeineLieferanschrift.Nachname;

cout <<"Geben sie Ihre Strasse ein" << endl;
cin >> MeineLieferanschrift.Strasse;

cout <<"Geben sie Ihre Hausnummer ein" << endl;
cin >> MeineLieferanschrift.Hausnummer;

cout <<"Geben sie Ihre Postleitzahl ein" << endl;
cin >> MeineLieferanschrift.Postleitzahl;

cout <<"Geben sie Ihren Ort ein" << endl;
cin >> MeineLieferanschrift.Ort;

cout <<"Geben sie Ihr Land ein" << endl;
cin >> MeinLand.land;



cout <<"Geben sie Ihre Kreditkartennummer ein" << endl;
cin >> MeineKreditkartendaten.Kreditkartennummer;

cout <<"Geben sie Ihr Kredikarten Gültigkeitsdatum ein" << endl;
cin >> MeineKreditkartendaten.KreditkartenGültigkeitsdatum;


cout <<"Ihre Bestellung:" << Bestellung <<endl;


}
 
Zurück