Funktionen mit Arrays



  • Hallo,
    ich sitze grade vor einer Aufgabe, allerdings komme ich nicht wirklich weiter.
    Hier erst mal die Aufgabe:

    Schreiben Sie eine Funktion, die eine Zeichenkette "Quelle" in eine neue Zeichenkette "Ziel" kopiert. Die Funktion muss wie folgt deklariert sein: void Kopie (char[], char[])

    Beispielausgabe:

    Variablenname "Quelle": Hallo

    Variablenname "Ziel": Hallo

    Hier mein Programm:

    #include <iostream>

    using namespace std;

    void kopie(char=q[],char=z[])
    {
    for(int i=0; q[i]!='\0';i++)
    {
    z[i]=q[i];
    }
    }

    int main()
    {
    char quelle[6];
    char ziel[]=" ";

    cout<<"Geben sie eine Zeichenkette mit max. 5 Zeichen ein: "<<endl;
    cin>>quelle;
    cout<<endl;

    cout<<"Ihre Eingabe lautet:\t"<<kopie(quelle[6],ziel[]);
    return 0;
    }

    Wenn ich das Programm, ohne Funktion erstelle wird alles kopiert wie es sein soll, aber mit funktion schaffe ich es einfach nicht.
    Ich hoffe ihr könnt mir weiterhelfen.
    🙂



  • 1. Wie viel Platz hast du in ziel zur Verfügung?
    Könnte man mit Code-Tags besser sehen. Aber ich zähle nur 4 Leerzeichen.
    Eine genaue Angabe wie bei quelle ist da besser.

    1. cout gibt den Rückgabewert von kopie aus.
      Nun hat aber kopie keinen Rückgabewert.

    3. Der Funktionskopf mit den = sieht für mich merkwürdig aus.
    ^Oder ist ds ein Feature von C++?^



  • DirkB schrieb:

    1. Wie viel Platz hast du in ziel zur Verfügung?
    Könnte man mit Code-Tags besser sehen. Aber ich zähle nur 4 Leerzeichen.
    Eine genaue Angabe wie bei quelle ist da besser.

    1. cout gibt den Rückgabewert von kopie aus.
      Nun hat aber kopie keinen Rückgabewert.

    3. Der Funktionskopf mit den = sieht für mich merkwürdig aus.
    ^Oder ist ds ein Feature von C++?^

    zu 1.
    Wenn ich eine genau Angabe wie bei qulle[6] mache, kommt immer eine Fehlermeldung, deswegen habe ich das mit " " gemacht.

    Laut einen Tutorial von Youtube benutzt man bei void kein return ?

    ich bin mir nicht sicher, ich habe es einfach so probiert, weil es in der Aufgabe auch so stand.

    🙂



  • Hardcor3chip schrieb:

    Laut einen Tutorial von Youtube benutzt man bei void kein return ?

    Doch da nutzt man auch return; . Was man da nicht nutzt ist return value;



  • Hardcor3chip schrieb:

    DirkB schrieb:

    1. cout gibt den Rückgabewert von kopie aus.
      Nun hat aber kopie keinen Rückgabewert.

    Laut einen Tutorial von Youtube benutzt man bei void kein return ?

    Ich denke, Dirk möchte wissen, was Du Du Dir bei dieser Zeile gedacht hast:

    cout<<"Ihre Eingabe lautet:\t"<<kopie(quelle[6],ziel[]);
    

    Die Ausgabe des Rückgabewerts nach cout ergibt doch keinen Sinn, wenn kopie() gar keinen Rückgabewert hat, oder?

    Übrigens kannst Du Deinen ersten Beitrag editieren und die fehlenden Codetags nachträglich einfügen - dann sieht's ordentlicher aus. (Code markieren und den C++ Button unter den Smilies betätigen.)


  • Mod

    out schrieb:

    Hardcor3chip schrieb:

    Laut einen Tutorial von Youtube benutzt man bei void kein return ?

    Doch da nutzt man auch return; . Was man da nicht nutzt ist return value;

    Auch in solchen Funktionen kann return value; verwendet werden (der Typ von value muss dann nat. void sein). Ausserhalb von Funktionstemplates allerdings kaum nützlich. In C dagegen ist es tatsächlich verboten.



  • Hardcor3chip schrieb:

    zu 1.
    Wenn ich eine genau Angabe wie bei qulle[6] mache, kommt immer eine Fehlermeldung, deswegen habe ich das mit " " gemacht.

    Die genaue Fehlermeldung kann da weiterhelfen. Das steht nicht einfach nur Error.
    Der Compiler sagt ziemlich genau, was im missfällt.

    Hardcor3chip schrieb:

    Laut einen Tutorial von Youtube benutzt man bei void kein return ?

    Dann ist entweder das void verkehrt oder der Aufruf der Funktion beim cout .


Anmelden zum Antworten