Kopieren des ersten Eintrags eines Arrays in eine Variable



  • Ich muss ein eine Funktion schreiben, die das erste Element eines Arrays kopiert in eine Variable. Da jetzt auch noch eine Struktur hinzukommt, bin ich etwas überfordert.

    Ich habe die Struktur erstellt und das Array auch, jetzt weiß ich aber nicht, wie ich der Variable jetzt den ersten Eintrag zuordne.

    hatte überlegt das so ähnlich zu lösen, wenn das irgendwie geht

    Vehicle copyVehicle( Vehicle original, Vehicle vehicleCopy){
    vehicleCopy.weight = car[0].weight;
    // Vehicle ist als Datentyp definiert

    wie man sehen wird, ist das alles nur nicht richtig, vielleicht gibt es ja jemanden der mir ein wenig helfen kann 🙂



  • @Hermione126 sagte in Kopieren des ersten Eintrags eines Arrays in eine Variable:

    Da jetzt auch noch eine Struktur hinzukommt, bin ich etwas überfordert.

    Warum sollte es damit anders sein als mit einem int?


  • Mod

    Du denkst viel zu kompliziert. Es ist überhaupt nichts besonderes daran, wenn Arrays, structs, oder anderes dabei sind. Es geht einfach, wie immer, mit =:

    irgendeine_variable = dein_array[0];
    


  • okay, wenn ich aber jetzt mehrere einträge habe in dem struct, wie sage ich dem programm dann, das es jeden eintrag daraus kopieren soll? und wenn das Array nicht in der Funktion ist, muss ich etwas beachten um das aufzurufen?

    Ich habe nicht viel Ahnung vom programmieren, muss es jetzt aber dringend für die Uni lernen und bin für jeden Hilfe von euch dankbar 🙂



  • @Hermione126 sagte in Kopieren des ersten Eintrags eines Arrays in eine Variable:

    das es jeden eintrag daraus kopieren soll?

    mit =, wie SeppJ es geschrieben hat.



  • Ich bekomme die Fehlermeldung, dass
    main.cpp|76|error: no match for 'operator[]' (operand types are 'Vehicle' and 'int')|
    das heißt doch, dass der das Array nicht findet oder was bedeutet das?



  • @Hermione126 sagte in Kopieren des ersten Eintrags eines Arrays in eine Variable:

    das heißt doch, dass der das Array nicht findet oder was bedeutet das?

    Das bedeutet, dass du an der Stelle keine Arrayvariable verwendest.



  • @manni66 kann ich das Array aus einer anderen Funktion denn in der Funktion aufrufen um den string dann zu kopieren, oder muss ich mir dann ganz was anderes einfallen lassen 😅


  • Mod

    @Hermione126 sagte in Kopieren des ersten Eintrags eines Arrays in eine Variable:

    @manni66 kann ich das Array aus einer anderen Funktion denn in der Funktion aufrufen um den string dann zu kopieren, oder muss ich mir dann ganz was anderes einfallen lassen 😅

    Das ist alles ganz einfach, aber du bist verwirrt. Lies doch mal alleine deinen Satz hier, der macht überhaupt keinen Sinn. Da kann ein Programm nicht funktionieren, wenn der Programmierer verwirrt ist.
    Hilfe, diene Gedanken zu ordnen und eine gute Frage zu stellen findest du hier:
    https://www.c-plusplus.net/forum/topic/200753/du-brauchst-hilfe



  • @SeppJ du hast auf jeden fall Recht, ich verwirre mich liebend gerne selber beim programmieren.
    Ich weiß leider nicht mehr wie ich mein Problem anders beschreiben soll, ohne jetzt die ganze aufgabe zu erläutern. aber vielen dank, auch an alle anderen 😀


  • Mod

    @Hermione126 sagte in Kopieren des ersten Eintrags eines Arrays in eine Variable:

    Ich weiß leider nicht mehr wie ich mein Problem anders beschreiben soll, ohne jetzt die ganze aufgabe zu erläutern.

    Spricht denn etwas dagegen?



  • Habe einfach mal alles kopiert, ist aber was länger der text, geht speziell um die Funktion copyVehicle():
    Erstellen Sie einen Datentyp Vehicle für die Eckdaten eines Fahrzeugs (mit typedef und struct). Die Struktur enthält folgende Eigenschaften:
    manufacturer
    model
    serialNumber
    weightl
    power
    numDoors
    Anzahl der Türen
    Wählen Sie für Zeichenketten den C++ Datentyp string.
    Erstellen Sie außerdem folgende Funktionen:
    readVehicle()
    Bekommt eine Referenz vom Datentyp Vehicle übergeben und füllt die Struktur mit Daten, die von cin eingelesen werden. Vor dem Einlesen wird zuerst der Benutzer gefragt, ob überhaupt ein weiteres Fahrzeug eingelesen werden soll. Wenn die Antwort Ja lautet, lesen Sie die einzelnen Eigenschaften ein. Die Funktion gibt true zurück, wenn ein weiteres Fahrzeug eingelesen wurde. Die Funktion gibt false zurück, wenn der Benutzer Nein geantwortet hat und kein weiteres Fahrzeug eingelesen wurde.
    copyVehicle()
    Bekommt zwei Referenzen übergeben, die erste Referenz ist das zu kopierende Fahrzeug und in die zweite Referenz sollen alle Werte kopiert werden. Überlegen Sie welcher Parameter sinnvollerweise als unveränderlich deklariert werden sollte. Die Funktion hat keinen Rückgabewert.
    Deklarieren Sie in der main() Funktion ein Array vom Vehicle Datentyp (mit einer festen Dimension). Lesen Sie mit der Funktion readVehicle() die Fahrzeug Eigenschaften von mehreren Fahrzeugen von der Konsole ein. Achten Sie darauf, dass Sie prüfen ob ein weiteres Fahrzeug Element noch in ihr Array passt. Geben Sie die Fahrzeuge dann nacheinander mit writeVehicle() wieder aus. Arbeiten Sie möglichst nur mit Ein- und Ausgabe Streams cin und cout und nicht mit den C Funktionen printf() und scanf().
    Verwenden Sie die Funktion copyVehicle(), um das erste Fahrzeug im Array in eine Variable vehicleCopy vom Typ Vehicle zu kopieren und geben auch das kopierte Fahrzeug aus.



  • @Hermione126 du kannst also das Array per Funktion füllen und ausgeben, nicht aber das erste Element kopieren?



  • @manni66 nicht ganz, es gibt bei mir leider nur den letzten eingegeben eintrag aus, da bin ich auch noch dran, da warte ich aber auch noch auf ne Antwort von nem Freund



  • @Hermione126 sagte in Kopieren des ersten Eintrags eines Arrays in eine Variable:

    @manni66 nicht ganz, es gibt bei mir leider nur den letzten eingegeben eintrag aus, da bin ich auch noch dran, da warte ich aber auch noch auf ne Antwort von nem Freund

    Also mit anderen Worten: bisher benutzt du gar kein Array.


  • Mod

    @manni66 sagte in Kopieren des ersten Eintrags eines Arrays in eine Variable:

    @Hermione126 du kannst also das Array per Funktion füllen und ausgeben, nicht aber das erste Element kopieren?

    Ich wäre auch ganz schön verwirrt von der Aufgabe. Das macht ja mal gar keinen Sinn. Typischer Lehrer, der weder C kann (weil er zu schlecht ist für Arrays, Pointer, und Strings), noch C++ (weil er zu schlecht ist für hohe Abstraktion), und stattdessen einen gefährlichen Mischmasch aus beidem lehrt. (Schlechtes) C mit cin und string.



  • Och, ich weiß nicht, das Problem auf den Lehrer zu schieben, finde ich zu einfach. Man fängt eben hier mit einigen Dingen an. An der Aufgabe übt man: Arrays, Referenzen, const und Funktionsaufrufe. Wenn du diese Grundlagen am lernen bist, ist das doch ok?
    Gut, copyVehicle würde man durch ein einfaches "=" erschlagen - aber hier muss man eben zusätzlich Parameterübergabe an Funktionen üben. Und bevor man Operatorüberladung lernt, ist es doch ok, mit readVehicle per Funktion einzulesen?


  • Mod

    @wob sagte in Kopieren des ersten Eintrags eines Arrays in eine Variable:

    Gut, copyVehicle würde man durch ein einfaches "=" erschlagen

    Genau das meine ich. Der Lehrer meint garantiert, dass man alles einzeln kopieren müsste. Weil er es nicht besser weiß. Sonst macht die Aufgabe doch keinen Sinn. Was soll denn ein

    void copyVehicle(const Vehicle &from, Vehicle &to)
    {
        to = from;
    }
    

    für einen Lehrwert haben?

    @Hermione126 : Schaut so aus als hätte ich "versehentlich" die Aufgabe gelöst. Dein Glück 🙂



  • @SeppJ sagte in Kopieren des ersten Eintrags eines Arrays in eine Variable:

    void copyVehicle(const Vehicle &from, Vehicle &to)
    {
        to = from;
    }
    

    für einen Lehrwert haben?

    Unter anderem sowas wie "Überlegen Sie welcher Parameter sinnvollerweise als unveränderlich deklariert werden sollte." - das klingt jetzt für uns ganz simpel, ist es aber am Anfang nicht. Außerdem musst du dich selbst daran erinnern & verstehen, dass du Vehicle& statt Vehicle für to nimmst. Auch wenn das in der Aufgabe in Textform drinsteht.



  • Vielen dank für eure Hilfe, es lag im Endeffekt hauptsächlich daran, dass ich die Parameter falsch übergeben habe. Jetzt läuft das auch einfach mit dem = setzen.
    Vielen dank


Log in to reply