Strukturen in Strukturen



  • Hallo ale zusammen, habe hier ei Programm geschrieben in welchem ich Daten eines Kfz eingeben kann und natürlich auch wieder ausgeben. Das Problem ist jetzt nur wie mache ich noch eine Struktur Fuhrpark die die Struktur des Kfz entält damit ich einen Fuhrpark der aus maximal 30 Autos besteht anlegen kann.
    das habe ich bisher gemacht:
    #include <iostream>
    #include <conio.h>

    using namespace std;

    struct cKfz
    {
    char marke[20],farbe[10];
    int tueren,baujahr,inventarnr;
    float ps;
    };

    void eingeben(cKfz&);
    void ausgeben(cKfz&);
    void leistung_kw(cKfz&);

    void eingeben(cKfz& car)
    {
    cout<<"Eingabe: "<<endl;
    cout<<"---------"<<endl<<endl;
    cout<<"Marke: ";cin.getline(car.marke, 20);
    cout<<"Farbe: ";cin.getline(car.farbe, 10);
    cout<<"Anzahl der Tueren: ";cin>>car.tueren;
    cout<<"Baujahr: ";cin>>car.baujahr;
    cout<<"Leistung in PS: ";cin>>car.ps;
    cout<<"Inventarnummer: ";cin>>car.inventarnr;cout<<endl<<endl;
    };

    void ausgeben(cKfz& car)
    {
    cout<<"Ausgabe: "<<endl;
    cout<<"---------"<<endl<<endl;
    cout<<"Marke: "<<car.marke<<endl;
    cout<<"Farbe: "<<car.farbe<<endl;
    cout<<"Anzahl der Tueren: "<<car.tueren<<endl;
    cout<<"Baujahr: "<<car.baujahr<<endl;
    cout<<"Leistung in PS: "<<car.ps<<endl;
    cout<<"Inventarnummer: "<<car.inventarnr<<endl;
    };

    void leistung_kw(cKfz& car)
    {
    cout<<"Leistung in KW: ";
    cout<<car.ps*0.735<<endl;
    };

    int main()
    {
    cKfz auto1;
    eingeben(auto1);
    cout<<"Beliebige Taste druecken fuer die Ausgabe"<<endl<<endl;
    getch();
    ausgeben(auto1);
    leistung_kw(auto1);
    getch();
    return 0;
    }

    (Und wie mach ich den Code in einen Tag oder wie das heißt)



  • In deinem Fuhrpark machst du ein Array, dass als Datentyp "Zeiger auf KFZ" hat.

    BTW:
    Wieso schreibst du dafür keine Klasse? In reinem C könnte man das so machen.



  • Ich schreibe das nicht in Klassen weil wir in der Schule noch nicht soweit sind, also genau das ist mein Problem, denn ich hab keine Ahnung wie das mit den Zeigern funktioniert, hab auch schon alle möglichen Tuts gelesen hat aber nichts gebracht.
    Könntest du mir ein kleines Beispiel aus diesem Programm geben oder einen Lösungsvorschlag. Bitte!!!



  • Schau dir das mal an:
    http://www.willemer.de/informatik/cpp/dynamic.htm

    Ein Array von 20 Zeigern auf deine Kfz Struktur:

    CKfz* meineAutos[20];
    

    Code-Tags findest du unter den Smilies. Das Tag C/C++ ist das, was du suchst,



  • Ja und weiter, sorry aber ich hab keine Ahnung wie ich weiter machen soll. Mir fehlt einfach der Faden wie ich die eingabe funktion schreibe und wie ich darauf im main programm zugreife, diese ganzen zeiger verwirren mich, das komische ist ich dachte bei einem array muss man keinen zeiger deklarieren , den ein array ist doch schon ein zeiger, so wäre es ja ein zeiger auf ein zeiger.....WUAAHAAHAHAHA ich drehe durch. Bitte ich verstehe jetzt gar nichts mehr, es war alles so gut bis diese verdammten zeiger aufgetaucht sind.



  • Ich arbeite grad dran in 30 mins vielleicht. Ein Array ist kein Zeiger.Mit einen Zeiger kann man die adressen eines Arrays leicht abklappern.



  • Dauert noch länger ^^
    Juhu, noch fertig geworden! Ich hab aber keine kommentare! Das verstehen musst du schon selber hinbekommen ^^! Stell ne konkrete frage und ich versuch dir best möglich zu helfen.

    #include <iostream> 
    #include <conio.h> 
    
    using namespace std; 
    
    struct cKfz 
    { 
    char marke[20];
    char farbe[10];
    
    int tueren;
    int baujahr;
    int inventarnr;
    
    float ps; 
    };
    /*void allewertenullsetzen(cKfz *); 
    void allewertenullsetzen(cKfz *car) 
    {
         while(car->tueren != -1)
         {
              car->marke={'n','o','n','a','m','e',0};
              car->farbe="dunkelbunt";
              car->tueren=5;
              car->baujahr=1940;
              car->2357;
    
              car++;  
         }     
    }*/
    
    void eingeben(cKfz *); 
    void ausgeben(cKfz); 
    void leistung_kw(cKfz); 
    
    void eingeben(cKfz *car) 
    { 
    cout<<"Eingabe: "<<endl; 
    cout<<"---------"<<endl<<endl; 
    cout<<"Marke: ";
    cin >> car->marke;
    
    cout<<"Farbe: ";
    cin >> car->farbe;
    
    cout<<"Anzahl der Tueren: ";
    cin>> car->tueren;
    
    cout<<"Baujahr: ";
    cin>> car->baujahr;
    
    cout<<"Leistung in PS: ";
    cin>> car->ps; 
    
    cout<<"Inventarnummer: ";
    cin>> car->inventarnr;
    cout<<endl<<endl; 
    }; 
    
    void ausgeben(cKfz car) 
    { 
    cout<<"Ausgabe: "<<endl; 
    cout<<"---------"<<endl<<endl; 
    cout<<"Marke: "<<car.marke<<endl; 
    cout<<"Farbe: "<<car.farbe<<endl; 
    cout<<"Anzahl der Tueren: "<<car.tueren<<endl; 
    cout<<"Baujahr: "<<car.baujahr<<endl; 
    cout<<"Leistung in PS: "<<car.ps<<endl; 
    cout<<"Inventarnummer: "<<car.inventarnr<<endl; 
    }; 
    
    void leistung_kw(cKfz car) 
    { 
    cout<<"Leistung in KW: "; 
    cout<<car.ps*0.735<<endl; 
    }; 
    
    int main() 
    { 
    cKfz autos[22];
    cKfz *ptauto;
    ptauto=&autos[0];
    
    int eingabe=1;
    int welchesauto;
    
            while(eingabe == 1 || eingabe == 2)
            {
                cout << "Was möchten Sie machen?" << endl << endl;
                cout << "[0] Beenden" << endl;
                cout << "[1] Autodaten eingeben" << endl;
                cout << "[2] Autodaten ausgeben" << endl;
                cin >> eingabe;
                switch(eingabe)
                    {
                        case 1:cout << "Bitte geben Sie die Addresse an zu Eingabe(1-21)" << endl;
                               cin >> welchesauto;
                               eingeben(ptauto+welchesauto);
                               //getch();
                               break;
    
                        case 2:cout << "Bitte geben Sie die Addresse an zur Ausgabe(1-21)" << endl;
                               cin >> welchesauto;
                               ausgeben(autos[welchesauto]); 
                               leistung_kw(autos[welchesauto]);
                               //getch();
                               break;
    
                        default:
                                break;     
                    }
            } 
    
    return 0; 
    }
    

    gruß Simon
    PS: auch dir sei es erlaubt vor und nach deinen code auf C/C++ zu druecken :p



  • Ja vielen Dank, ist alles richtig perfekt, doch das muss doch in eine structur fuhrpark, und wie schreibe ich das da rein,

    struct fuhrpark
    {
    cKfz autos[29];
    };
    .......
    

    nur wie geht es jetzt weiter, das ist das wo mir der Faden fehlt, das andere war super gemacht und sehr gut zu verstehen, dachte nur das es viel komplizierter geht nur wie mache ich das jetzt mit der struktur fuhrpark


Anmelden zum Antworten