Array mit Int und String Werten ausgeben



  • @Belli

    Hatten gerade Tutorium, habe jetzt eine Funktion die mir auch das ausgibt was ich haben wollte. Ein ganz kleines Logikproblem habe ich noch.

    void Vehicle::writeVehicleY()
    {
    int j=1;
    
    
    {
    
    
    cout << "Fahrzeug" << j << endl;
    cout << "Hersteller: " <<  manufacturer << endl;
    cout << "Model " << model << endl;
    cout << "Gewicht: " << weight << endl;
    cout << "Leistung: " << power << endl;
    cout << "Türen: " << numDoors << endl;
    cout << "\n\n";
    j++;
    
    }
    
    
    }
    

    Das ist die Funktion.
    Wenn jetzt in der Main die Funktion per for Bedingung 6 mal aufgerufen wird (was auch tatsächlich funktioniert) hätte ich noch gerne dass für hochgezählt wird.
    Also:
    Fahrzeug1:
    ...
    Fahrzeug2:
    ....
    usw

    Ich weiß, die Lösung ist ein Logikproblem aber ich komme einfach nicht dahinter.
    Wenn ich um die Funktion auch nochmal for (j=0; j<6;j++;) packe gibt er mir jedes Fahrzeug 6 mal aus..



  • Also...

    • Du hast eine Funktion, die dir ein Fahrzeug ausgibt.
    • Du hast eine for-Schleife, über die Liste der Fahrzeuge läufst.

    Gib die Nummer des Eintrags nicht in der Ausgabefunktion, sondern in der for-Schleife aus.

    for( size_t i = 0; i < AnzahlFahrzeuge; ++i )
    {
       // gib Nummer aus 
       ...
       // gib Fahrzeugdaten aus
       ...
    }
    

    Ist doch klar, dass jedes Fahrzeug 6x ausgegeben wird, wenn du statt eines Fahrzeugs jedes Mal alle ausgibst.



  • void Vehicle::writeVehicleY(size_t nr)
    {
    cout << "Fahrzeug: " << nr << endl;
    cout << "Hersteller: " <<  manufacturer << endl;
    cout << "Model " << model << endl;
    cout << "Gewicht: " << weight << endl;
    cout << "Leistung: " << power << endl;
    cout << "Türen: " << numDoors << endl;
    cout << "\n\n";
    }
    

    und beim Aufruf die Nummer mitgeben ...



  • Aber irgendwie ist das schlecht ... Du hast ja jetzt die Ausgabe als Klassenmethode ... da würde ich die Nummer nicht mit ausgeben ... dann lieber

    cout << "Fahrzeug: " << nr;
    

    in der Schleife, jeweils vor dem Methodenaufruf, und die Methode gibt dann wirklich nur die Vehicle - Daten aus ... dann sollte sie auch besser wieder ohne Parameter definiert werden ...

    Also, wenn die Klasse ihre Daten via Methode selbst ausgibt, gehört die Ausgabe der Nummer auf keinen Fall in die Methode, es sei denn, die Klasse verwaltet auch die Anzahl der vorhandenen Fahrzeuge - dann müsstest Du eine statische Variable mit der Anzahl in der Klasse haben.



  • @Belli

    ok danke 🙂

    Noch eine Frage..

    Ich habe ja in der Main eine Zufallszahl generiert. Wie kann ich die an meine Funktion übergeben, sodass jedes Fahrzeug eine Seriennumer als "Zufallszahl" erhält?



  • Warum machst Du das nicht direkt bei Erstellung eines Fahrzeugs?



  • @Belli
    Wenn ich meine Variable für die Zufallszahl an entsprechende Stellen im Array setze gibt er mir einen Fehler aus..(iwas von cant int to const char*...)

    Liegt bestimmt an der Klasse bzw dem Konstruktor aber mein Programm ist inzwischen so unübersichtlich für mich geworden dass ich jetzt nicht nach dem Fehler suchen kann. Muss um 12 uhr abgegeben haben 😱

    Aber danke für den Hinweis. Auf die Idee wär ich nicht gekommen!



  • @NoobHunter12 sagte in Array mit Int und String Werten ausgeben:

    iwas

    Kompletten bis auf den Fehler kompilierbaren Code und komplette Fehlermeldung zeigen.



  • @NoobHunter12 sagte in Array mit Int und String Werten ausgeben:

    @Belli
    Wenn ich meine Variable für die Zufallszahl an entsprechende Stellen im Array setze gibt er mir einen Fehler aus..(iwas von cant int to const char*...)

    Klingt, als wenn Deine Seriennr. in der Klasse vom Typ

    const char *
    

    wäre, und die Seriennr. die Du zuweisen willst, vom Typ

    int
    

    Das ist jetzt nur geraten, aber wenn es so ist, dann sind die Typen ja auch inkompatibel.



  • @Belli

    Du wirst Recht haben.
    Habe alles nochmal gelöscht und den Zufallszahlgenerier mit in die Funktion gepackt.
    Jetzt läuft es so wie es soll.
    Erneut danke für deine Beiträge.
    Gebe das Programm jetzt ab 🤯


Anmelden zum Antworten