Klassen und Vererbung



  • Hi, habe ein kleines Problem und vielleicht bekomme ich hier geholfen.
    Habe folgendes Programm:

    #include "Student.h"
    #include "Dozent.h"

    void main(void)
    {
    Dozent Dozent;
    CStudent Student[16];

    string _Vorname;
    string _Nachname;
    string _Mail;
    int iMatrikelNummer;
    int n = 0;
    int x = 0;

    cout << "Bitte geben sie den Vornamen des Dozenten an: ";
    cin >> _Vorname;
    cout << "\nBitte geben sie den Nachnamen des Dozenten an: ";
    cin >> _Nachname;
    cout << "\nBitte geben sie die Mail des Dozenten an: ";
    cin >> _Mail;

    Dozent.Eingabe(_Vorname, _Nachname, _Mail);

    cout << "\nAnzahl der Studenten eingeben (1-16): ";
    cin >> n;

    cout << "Bitte geben sie " << n << " Studenten ein: " << endl;

    for(int i=0; i<n; i++)
    {
    cout << "Student " << i+1 << " Vorname: ";
    cin >> _Vorname;
    cout << "\nStudent " << i+1 << " Nachname: ";
    cin >> _Nachname;
    cout << "\nStudent " << i+1 << " Mat.Nr.: ";
    cin >> iMatrikelNummer;
    Student[i].Eingabe(_Vorname, _Nachname, iMatrikelNummer);
    }
    cout << "Wie soll weiter verfahren werden?" << endl;
    cout << "1. Ausgabe des Dozenten?" << endl;
    cout << "2. Ausgabe eines bestimmten Studenten?" << endl;
    cout << "3. Ausgabe aller Daten?" << endl;
    cout << "4. Ende des Programms?" << endl;
    cout << "Bitte entsprechend der Postion eine Zahl eingeben: ";
    cin >> x;
    cout << endl;
    do
    {
    if (x == 1)
    {
    cout << setw(10) << "" << setw(15) << "Vorname" << setw(15) << "Nachname" << setw(10) << "Mail" << endl;
    cout << setw(10) << "Dozent:";
    }
    else if (x == 2)
    {
    cout << "welcher Student soll ausgegeben werden? (Zahl eingeben): ";
    cin >> x;
    cout << setw(10) << "" << setw(15) << "Vorname" << setw(15) << "Nachname" << setw(10) << "Mat.Nr." << endl;
    cout << setw(10) << "Student:";
    Student[x-1].Ausgabe();
    }
    else if (x == 3)
    {
    cout << setw(10) << "" << setw(15) << "Vorname" << setw(15) << "Nachname" << setw(10) << "Mat.Nr." << setw(20) << "Mail" << endl;
    cout << setw(10) << "Dozent:";
    Dozent.Ausgabe();
    cout << endl;

    for(int j=0; j<n; j++)
    {
    cout << "Student " << j+1 << ":";
    Student[j].Ausgabe();
    cout << endl;
    }
    }
    while (x <= 4);
    cout << "Programm wird beendet!" << endl;
    }
    }

    nun zu meinem Problem.
    Ich bekomme beim erstellen folgenden Fehler angezeigt.

    c:\dokumente und einstellungen\björn lang\eigene dateien\visual studio 2005\projects\aufgabe_12\main.cpp(87) : error C2059: Syntaxfehler: '}'
    Person.cpp
    Student.cpp

    Kann mir da jemand helfen?

    Danke im voraus.

    Gruß paul



  • c++_paul schrieb:

    ...
    c:\dokumente und einstellungen\björn lang\eigene dateien\visual studio 2005\projects\aufgabe_12\main.cpp(87) : error C2059: Syntaxfehler: '}'
    Person.cpp
    Student.cpp
    ...

    Wenn Du Schwierigkeiten hast, Zeile 87 zu finden, obwohl Du Zeilennummern, Einrückungen und "Syntaxhighlighting" hast, wird's hier nicht einfacher, wenn DU uns all das vorenthältst.

    Gruß,

    Simon2.



  • Zeile 87 ist die letzte Klammer ganz unten.
    Hatte ich vergessen zu schreiben.



  • Zusatz: Es heißt int main() oder int main(int argc, char argv[])*
    Anstelle der Funktion Dozent::Eingabe würde es sich lohnen, den operator >> für std::istream zu überladen.

    Und eine Prüfung auf korrekte Eingabe (z.b. if(std::cin >> x) ) ist auch hilfreich.



  • c++_paul schrieb:

    Zeile 87 ist die letzte Klammer ganz unten.
    Hatte ich vergessen zu schreiben.

    Das ist ja schonmal was.

    Nun mach doch nochmal eben cpp-Tags (Nicht "Code" !!) und Einrückungen rein, dann hilft das gegen Augenkrebs.... 😉

    Ach ja und wenn wir schon beim Geben von "Verschönerungstipps" sind (die das ursprüngliche Problem nicht lösen): Bezeichner sollte NICHT mit _ anfangen. Da kommt man sich schnell mit Compilerinterna in die Quere.

    Gruß,

    Simon2.



  • Nun mach doch nochmal eben cpp-Tags (Nicht "Code" !!) und.... <--- wenn mir jetzt noch jemand sagt was ein cpp-Tags ist?

    Möchte mich nicht zu dämlich anstellen, aber ich weiß es leider nicht.


  • Administrator

    Das hier:
    http://img148.imageshack.us/img148/2674/cpptagps0.jpg

    Könnte man das Bild nicht irgendwo neben dem Eingabetext hinsetzen? 🙂

    Grüssli



  • #include "Student.h"
    #include "Dozent.h"
    
    void main()
    {
    	Dozent		Dozent;
    	CStudent	Student[16];
    
    	string		_Vorname;
    	string		_Nachname;
    	string		_Mail;
    	int			iMatrikelNummer;
    	int			n = 0;
    	int			x = 0;
    
    	cout << "Bitte geben sie den Vornamen des Dozenten an: ";
    	cin >> _Vorname;
    	cout << "\nBitte geben sie den Nachnamen des Dozenten an: ";
    	cin >> _Nachname;
    	cout << "\nBitte geben sie die Mail des Dozenten an: ";
    	cin >> _Mail;
    
    	Dozent.Eingabe(_Vorname, _Nachname, _Mail);
    
    	cout << "\nAnzahl der Studenten eingeben (1-16): ";
    	cin >> n;
    
    	cout << "Bitte geben sie " << n << " Studenten ein: " << endl;
    
    	for(int i=0; i<n; i++)
    	{
    		cout << "Student " << i+1 << " Vorname: ";
    		cin >> _Vorname;
    		cout << "\nStudent " << i+1 << " Nachname: ";
    		cin >> _Nachname;
    		cout << "\nStudent " << i+1 << " Mat.Nr.: ";
    		cin >> iMatrikelNummer;
    		Student[i].Eingabe(_Vorname, _Nachname, iMatrikelNummer);
    	}
    	cout << "Wie soll weiter verfahren werden?" << endl;
    	cout << "1. Ausgabe des Dozenten?" << endl;
    	cout << "2. Ausgabe eines bestimmten Studenten?" << endl;
    	cout << "3. Ausgabe aller Daten?" << endl;
    	cout << "4. Ende des Programms?" << endl;
    	cout << "Bitte entsprechend der Postion eine Zahl eingeben: ";
    	cin >> x;
    	cout << endl;
    	do
    	{
    		if (x == 1)
    		{
    			cout << setw(10) << "" << setw(15) << "Vorname" << setw(15) << "Nachname" << setw(10) << "Mail" << endl;
    			cout << setw(10) << "Dozent:";
    		}
    		else if (x == 2)
    		{
    			cout << "welcher Student soll ausgegeben werden? (Zahl eingeben):  ";
    			cin >> x;
    			cout << setw(10) << "" << setw(15) << "Vorname" << setw(15) << "Nachname" << setw(10) << "Mat.Nr." << endl;
    			cout << setw(10) << "Student:";
    			Student[x-1].Ausgabe();
    		}
    		else if (x == 3)
    		{
    			cout << setw(10) << "" << setw(15) << "Vorname" << setw(15) << "Nachname" << setw(10) << "Mat.Nr." << setw(20) << "Mail" << endl;
    			cout << setw(10) << "Dozent:";
    			Dozent.Ausgabe();
    			cout << endl;
    
    			for(int j=0; j<n; j++)
    			{
    				cout << "Student " << j+1 << ":";
    				Student[j].Ausgabe();
    				cout << endl;
    			}
    		}
    		while (x <= 4);
    		cout << "Programm wird beendet!" << endl;
    	}
    }
    


  • da verwendet jemand jpg für screenshots, die sicher keine Fotos sind.
    PNG ftw!


  • Administrator

    Sehr gut, jetzt kann man helfen:

    do 
    { 
        //...
        while (x <= 4); 
        cout << "Programm wird beendet!" << endl; 
    }
    

    Fällt dir etwas auf? Ansonsten schau nochmal die do-while Konstrukte an 😉

    Grüssli



  • Kann jetzt nicht sagen das mir was auffällt, habe auch nochmal in das script geschaut vom Dozenten das wir für die Programmierung bekommen haben.

    Ich stehe eben voll auf dem Schlauch.... 😕



  • c++_paul schrieb:

    Kann jetzt nicht sagen das mir was auffällt, habe auch nochmal in das script geschaut vom Dozenten das wir für die Programmierung bekommen haben.

    Ich stehe eben voll auf dem Schlauch.... 😕

    Kleinen weiteren Tip: Schau dir mal das an... Speziell das Beispiel.

    Dannach schau dir mal dein Konstrukt an:

    do
    {
      while (x <= 4);
    }
    

    Und dann geh endlich von dem Schlauch runter 😉



  • Ich Danke euch, jetzt nachdem ich den Fehler auch gesehen habe komme ich mir irgendwie sehr dämlich vor..... 😞



  • c++_paul schrieb:

    Ich Danke euch, jetzt nachdem ich den Fehler auch gesehen habe komme ich mir irgendwie sehr dämlich vor..... 😞

    Keine Panik, das wird am Anfang mehrfach passieren 😉


  • Administrator

    asc schrieb:

    c++_paul schrieb:

    Ich Danke euch, jetzt nachdem ich den Fehler auch gesehen habe komme ich mir irgendwie sehr dämlich vor..... 😞

    Keine Panik, das wird am Anfang mehrfach passieren 😉

    Und passiert später auch noch, vielleicht nicht bei solchen Dingen, aber anderen 😃

    Grüssli


Anmelden zum Antworten