Strukturen zugreifen
-
Hallo!
Ich mache grade die Aufgabe von http://www.highscore.de/cpp/einfuehrung/strukturen.html#strukturen_aufgaben
Und bin stehen bei 3. Aufgabe geblieben.
Wie kann ich einer Funktion die gespeicherte variablen übergeben?
Und
noch hier//cout<<"Land "; //cin>>land; //ich weiss nicht wie ich das hier änder soll //nameBestellung.Adresse.Land;Ich weiss, das cin mit enum nicht funktioniert, muss ich den Typ ändern oder einen andere Funktion benutzen?
Vielen Dank im Voraus.
#include <string> #include<iostream> using namespace std; enum land { Deutschland, Oesterreich, Schweiz }; struct lieferanschrift { string Anrede; string Vorname; string Nachname; string Strasse; int Hausnummer; int Postleitzahl; string Ort; land Land; }; struct kreditkarte{ string gueltigkeit; int kartenummer; }; struct bestellung { int Kundennummer; lieferanschrift Adresse; kreditkarte Kreditkarte; string Ware[9]; }; int main(){ string Anrede; string Vorname; string Nachname; string Strasse; int Hausnummer; int Postleitzahl; string Ort; land Land; string gueltigkeit; string Ware; string eingabe; int kartenummer; int Kundennumer; bestellung nameBestellung; cout<<"ihre Bestellung"<<endl; cout<<"Kundennumer: "; cin>>Kundennumer; nameBestellung.Kundennummer; cout<<"Ihre Lieferanschrift:"<<endl; cout<<"Anrede: "; cin>>Anrede; nameBestellung.Adresse.Anrede; cout<<"Vorname: "; cin>>Vorname; nameBestellung.Adresse.Vorname; cout<<"Nachname: "; cin>>Nachname; nameBestellung.Adresse.Nachname; cout<<"Strasse "; cin>>Strasse; nameBestellung.Adresse.Strasse; cout<<"Hausnummer "; cin>>Hausnummer; nameBestellung.Adresse.Hausnummer; cout<<"Postleitzahl "; cin>>Postleitzahl; nameBestellung.Adresse.Postleitzahl; cout<<"Ort "; cin>>Ort; nameBestellung.Adresse.Ort; //cout<<"Land "; //cin>>land; //ich weiss nicht wie ich das hier änder soll //nameBestellung.Adresse.Land; cout<<"Kreditkartenummer"; cin>>kartenummer; nameBestellung.Kreditkarte.kartenummer; cout<<"Gültigkeitsdatum der Kreditkarte"; cin>>kartenummer; nameBestellung.Kreditkarte.gueltigkeit; cout<<"Ware"; cin>>Ware; nameBestellung.Ware; cout<<"Wollen Sie noch was bestellen?"; cin>>eingabe; if(eingabe=="ja"){ for(int n=1;n<10,n++;){ cout<<"Ware"; cin>>Ware; nameBestellung.Ware; cout<<"Wollen Sie noch was bestellen?"; cin>>eingabe; if(eingabe=="nein"){break;}}} ausgeben(); system("Pause"); } void ausgeben();{ //Erorr: hier wurde eine Deklaration erwartet; cout<<"Ihre Bestellung:"; cout<<nameBestellung.Kundennummer; cout<<nameBestellung.Adresse.Anrede; cout<<nameBestellung.Adresse.Vorname; cout<<nameBestellung.Adresse.Nachname; cout<<nameBestellung.Adresse.Strasse; cout<<nameBestellung.Adresse.Hausnummer; cout<<nameBestellung.Adresse.Postleitzahl; cout<<nameBestellung.Adresse.Ort; cout<<nameBestellung.Kreditkarte.kartenummer; cout<<nameBestellung.Kreditkarte.gueltigkeit; cout<<nameBestellung.Ware;}
-
1. Das Semikolon gehört da nicht hin.
2. Wenn du mit Funktionen Schwierigkeiten hast, dann guck dir doch nochmal das Kapitel 5 an. Keine Schande, in einem Lehrbuch mal ein paar Seiten zurück zu gehen.
3. Du solltest die Funktionsdefinition (oder wenn dir das besser gefällt zumindest eine Forwärts-Deklaration) vor die Stelle machen, an der du die Funktion benutzt.
-
Was ist dann mit ?
//cout<<"Land "; //cin>>land; //ich weiss nicht wie ich das hier änder soll //nameBestellung.Adresse.Land;Wenn du mit Funktionen Schwierigkeiten hast, dann guck dir doch nochmal das Kapitel 5 an. Keine Schande, in einem Lehrbuch mal ein paar Seiten zurück zu gehen.
Ich verstehe das trotzdem nicht.
Ich weiss nicht wie ich innerhalb einer Funktion auf struct zugreifen kann.void ausgeben(){ cout<<"Ihre Bestellung:"; cout<<bestellung.Kundennummer; cout<<bestellung.Adresse.Anrede;}So was geht auch nicht. Er sagt mir "Ein nicht statischer Memberverweis muss relativ zu einem bestimmten Objekt sein"
-
akvarel schrieb:
Was ist dann mit ?
//cout<<"Land "; //cin>>land; //ich weiss nicht wie ich das hier änder soll //nameBestellung.Adresse.Land;Du müsstest einen eigenen Eingabeoperator für dein enum definieren. Und jetzt bist du vermutlich komplett verwirrt. Für den Anfang ist es vermutlich besser, wenn du einfach einen int oder string einliest und dann ein paar Vergleiche machst, um deinem enum-Feld den passenden Wert zuzuweisen.
Wenn du mit Funktionen Schwierigkeiten hast, dann guck dir doch nochmal das Kapitel 5 an. Keine Schande, in einem Lehrbuch mal ein paar Seiten zurück zu gehen.
Ich verstehe das trotzdem nicht.
Ich weiss nicht wie ich innerhalb einer Funktion auf struct zugreifen kann.Das steht da aber. Lesen und Lernen musst du schon selber.
-
Wenn du auf ein Struct-Element zugreifen willst, benötigst du auch eine Variable dazu:
bestellung bst; cin>>bst.Kundennummer;
-
Ich habe jetzt so was, aber auf dem Bildschirm kommt nicht das, was ich will=)
void ausgeben(struct bestellung v){ cout<<"Ihre Bestellung: "; cout<<v.Kundennummer; cout<<v.Adresse.Anrede; cout<<v.Adresse.Vorname; cout<<v.Adresse.Nachname; cout<<v.Adresse.Strasse; cout<<v.Adresse.Hausnummer; cout<<v.Adresse.Postleitzahl; cout<<v.Adresse.Ort; cout<<v.Kreditkarte.kartenummer; cout<<v.Kreditkarte.gueltigkeit; cout<<v.Ware;}
-
Das liegt wohl daran, daß Konstruktionen wie diese
cout<<"Kundennumer: "; cin>>Kundennumer; nameBestellung.Kundennummer;nutzlos sind - du liest zwar etwas ein, packst es aber nicht in die Struct. Die letzte Zeile (sollte wohl eine Zuweisung werden) macht gar nichts - und dürfte von jedem Compiler wegoptimiert werden.
-
nutzlos sind - du liest zwar etwas ein, packst es aber nicht in die Struct. Die letzte Zeile (sollte wohl eine Zuweisung werden) macht gar nichts - und dürfte von jedem Compiler wegoptimiert werden.
Jep, das hab ich schon vor deinem Kommentar verstanden.
Ich habe jetzt so was und das einzige ist Ware geblieben.
Die werden nicht gespeichert#include <string> #include<iostream> #include <stdio.h> using namespace std; enum land { Deutschland, Oesterreich, Schweiz }; struct lieferanschrift { string Anrede; string Vorname; string Nachname; string Strasse; int Hausnummer; int Postleitzahl; string Ort; land Land; }; struct kreditkarte{ string gueltigkeit; int kartenummer; }; struct bestellung { int Kundennummer; lieferanschrift Adresse; kreditkarte Kreditkarte; string Ware[9]; }; void ausgeben(struct bestellung v){ //Erorr: hier wurde eine Deklaration erwartet; cout<<"Ihre Bestellung: "<<endl; cout<<"Ihre Kundennummer : "<<v.Kundennummer<<endl; cout<<"Ihre Anrede "<<v.Adresse.Anrede<<endl; cout<<"Ihre Vorname: "<<v.Adresse.Vorname<<endl; cout<<"Ihre Nachname: "<<v.Adresse.Nachname<<endl; cout<<"Ihre Strasse "<<v.Adresse.Strasse<<endl; cout<<"Ihre Hausnummer:"<<v.Adresse.Hausnummer<<endl; cout<<"Post: "<<v.Adresse.Postleitzahl<<endl; cout<<"Adresse "<<v.Adresse.Ort<<endl; cout<<"Kreditkarte: "<<v.Kreditkarte.kartenummer<<endl; cout<<"Gultigkeit "<<v.Kreditkarte.gueltigkeit;<<endl; cout<<v.Ware;} int main(){ string Anrede1; string Vorname1; string Nachname1; string Strasse1; int Hausnummer1; int Postleitzahl1; string Ort1; string gueltigkeit1; string Ware1; string eingabe; int kartenummer1; int Kundennummer1; struct bestellung nameBestellung; cout<<"ihre Bestellung"<<endl; cout<<"Kundennumer: "; cin>>Kundennummer1; nameBestellung.Kundennummer=Kundennummer1; cout<<"Ihre Lieferanschrift:"<<endl; cout<<"Anrede: "; cin>>Anrede1; nameBestellung.Adresse.Anrede=Anrede1; cout<<"Vorname: "; cin>>Vorname1; nameBestellung.Adresse.Vorname=Vorname1; cout<<"Nachname: "; cin>>Nachname1; nameBestellung.Adresse.Nachname=Nachname1; cout<<"Strasse "; cin>>Strasse1; nameBestellung.Adresse.Strasse=Strasse1; cout<<"Hausnummer "; cin>>Hausnummer1; nameBestellung.Adresse.Hausnummer=Hausnummer1; cout<<"Postleitzahl "; cin>>Postleitzahl1; nameBestellung.Adresse.Postleitzahl=Postleitzahl1; cout<<"Ort "; cin>>Ort1; nameBestellung.Adresse.Ort=Ort1; //cout<<"Land "; //cin>>land; //ich weiss nicht wie ich das hier änder soll //nameBestellung.Adresse.Land; cout<<"Kreditkartenummer"; cin>>kartenummer1; nameBestellung.Kreditkarte.kartenummer=kartenummer1; cout<<"Gültigkeitsdatum der Kreditkarte"; cin>>gueltigkeit1; nameBestellung.Kreditkarte.gueltigkeit=gueltigkeit1; cout<<"Ware"; cin>>Ware1; nameBestellung.Ware[0]=Ware1; cout<<"Wollen Sie noch was bestellen?"; cin>>eingabe; if(eingabe=="ja"){ for(int n=1;n<10,n++;){ cout<<"Ware"; cin>>Ware1; nameBestellung.Ware[n]=Ware1; cout<<"Wollen Sie noch was bestellen?"; cin>>eingabe; if(eingabe=="nein"){break;}}} ausgeben(nameBestellung); system("Pause"); }