Arrays in umgekehrter Reihenfolge kopieren mit Hilfe von einer Funktion



  • Hallo zusammen,

    meine Frage ist wie ich 2 Arrays mit einer Funktion anspreche und das eine Array umgekehrt in das andere kopiere. Ich bin ziemlich am verzweifeln und weiß echt nicht mehr weiter.. Ich hoffe ihr könnt mir helfen. Danke Tetris

    #include<stdio.h>
    
    int einlesenbisnull(int x[], int groesse){
    int i, eing;
    
    printf("Zahlen bis Null: ");
    
    for(i = 0; i < groesse; i++);
    
    scanf("%d", &eing);
    
    if(eing==0){
    
    break;
    }
    else {
    
    array[i] = eingabe;
    }
    }
    return i;
    }
    
    void ausgabe( int x[], int groesse) {
    int i;
    
    for(i = 0; i<groesse; i++){
    printf("%d", x[i]);
    }
    }
    void kopierenUmgekehrt(int x[], int y[], int groesse){
    
    int i;
    
    for(i = 0; i<groesse; i++){
    y[i] = x[i];
    }
    
    for(i=0; i<groesse; i++){
    
    x[i]=y[groesse-1-i];
    }
    printf("Umgekehrt Array: ");
    for(i = 0; i <groesse;i++){
    
    printf("%d", x[i]);
    }
    
    int main(int argc, char const *argv[]; char const *envp){
    
    const int Max = 1000;
    int ar[Max], i;
    const int MAX = 1000;
    int array[MAX];
    
    int abc = einlesenbisnull(ar, Max);
    
    printf("\n\n");
    ausgabe(a,abc);
    kopierenUmgekehrt(array, MAX);
    
    return 0;
    }
    


  • Was hast du da denn zusammenkopiert?
    Das kann überhaupt nicht compilieren.

    - in Zeile 8 ist ein Fehler
    - in Zeile 49 ist ein Syntaxfehler
    - was soll der "const int" Quatsch?
    - compilierst du mit einem C++ Compiler?



  • "in Zeile 8 ist ein Fehler" - Können Sie/Du mir den Fehler sagen, weil das Programm an sich hat funktioniert, bis auf das umgekehrte kopieren.

    Also ich konnte so viele Werte einlesen wie ich wollte bis ich die null eingegeben habe und diese wurden auch ausgegeben.( innerhalb der Grenzen natürlich). Nur weiß ich nicht wie ich ein zweites Array kopiere bzw dem main programm vertraut mache. Ich weiß das Arrays als Pointer behandelt werden und per call by refernce

    Ja das Programm ist auch auseinander gepflückt, weil ich viele funktionen schreiben musste wie 2te größte zahl ausgeben usw und das hat auch alles geklappt nur nicht das kopieren.

    const int wurde von meinem Prof vorgegeben

    und ja der syntax fehler ist wegen [], tschuldigung

    int einlesenbisnull(int x[], int groesse){
    int i, eing;
    
    printf("Zahlen bis Null: ");
    
    for(i = 0; i < groesse; i++);
    
    scanf("%d", &eing);
    
    if(eing==0){
    
    break;
    }
    else {
    
    array[i] = eing;
    }
    }
    return i;
    }
    
    void ausgabe( int x[], int groesse) {
    int i;
    
    for(i = 0; i<groesse; i++){
    printf("%d", x[i]);
    }
    }
    
    int main(int argc, char const *argv[]){
    
    const int Max = 1000;
    int ar[Max], i;
    
    int abc = einlesenbisnull(ar, Max);
    
    printf("\n\n");
    ausgabe(a,abc);
    
    return 0;
    
    }
    

    Hatte bei mir geklappt.

    Also ich weiß wie man ein array in ein anderes kopiert, nur nicht wie ich es als Funktion verfasse samt ausgabe und das kopierte array in der main funktion aufrufe.



  • Tetris123 schrieb:

    Also ich konnte so viele Werte einlesen wie ich wollte bis ich die null eingegeben habe und diese wurden auch ausgegeben.

    Das ist Unsinn. Bei einer Zeile wie

    for(i = 0; i < groesse; i++);
    

    kann das überhaupt nie funktioniert haben.
    Das ist mir zu albern, wenn sich jemand anders deine falsch zusammenkopierten Codes antun will, möge er das tun, ich nicht.


  • Mod

    Das kann nicht sein, es ist absolut unmöglich, dass dieses Programm funktioniert, denn es ist keine gültiges Programm. Also entweder ist dies nicht der Code zu deinem Programm oder du erzählst uns nicht die Wahrheit. Egal welches davon, man kann dir nicht helfen, wenn du das machst. Also stell dies ab. Niemand wird seine Zeit verschwenden wollen, dein Programm zu korrigieren, das offensichtlich sowieso nicht deinem echten Programm entspricht; oder mit jemandem, der nur einen großen Haufen Unsinn erzählt, weil er Codefetzen aus dem Internet zusammen kopiert hat und dieser Code nun - oh Wunder - nicht funktioniert.



  • Alles klar, danke für die Anschuldigung

    ich würde dir gerne per mail meine komplette Version von meinem Code zeigen, das programmstück ist nur abgetippt damit keine anderen aus meinem studium 1 zu 1 den code haben. Ich habe extra lücken eigefügt und variablen schwachsinnig benannt. wenn du draus zieht ich hätte es nur kopiert ok.

    aber es ist deine sache, danke trotzdem



  • ja tut mir leid, dachte man könnte die variablen einer for schleiße auch beliebig auseinander ziehen



  • Wenn eine Funktion drei Parameter hat, dann solltest du ihr auch drei Parameter übergeben (Zeile 31 und 60 vom ersten Programm).

    Wenn das auch "nur Abschreibfehler" sind, dann weißt, warum sich die anderen aufregen.

    Nebenbei ist dein Einrückungstil Müll.

    Tetris123 schrieb:

    Nur weiß ich nicht wie ich ein zweites Array kopiere bzw dem main programm vertraut mache.

    Hast du schon mal strcpy benutzt?



  • Hi, ich habe ihm mein ganzes Programm geschickt, vielleicht glaub er mir dann das ich es selber geschrieben habe.

    strcpy darf ich nicht benutzen.



  • Tetris123 schrieb:

    Hi, ich habe ihm mein ganzes Programm geschickt, vielleicht glaub er mir dann das ich es selber geschrieben habe.

    Das was du öffentlich gepostest hast, ist Müll. Alleine darum geht es.

    Tetris123 schrieb:

    strcpy darf ich nicht benutzen.

    Du sollst es dir auch nur anschauen.
    strcpy kopiert Arrayinhalte und bekommt als Parameter zwei Arrays.
    Das wäre evtl. möglicherweise als Beispiel zu gebrauchen.
    memcpy wäre noch besser, aber da bezweifele ich, dass du es kennst.



  • Sollst du überhaupt ein Quell- und ein Zielarray haben?
    Oder soll der Inhalt vom Array in sich selbst umgekehrt werden?



  • Ja klar, das ist natürlich richtig. Ich dachte ich tippe das eben nur schnell ab, damit man meine idee sieht ob ich das so richtig an die Sache rangehe. Mir ging es natürlich nicht darum das die Syntaxfehler usw berichtigt werden oder ob ein Fehler in der eingabe ist.

    Tut mir Leid



  • Die Afg war es in ein anderes hineinzukopieren



  • Hast du es denn jetzt verstanden? Du musst nur die i-te Stelle an die (n-i) -te Stelle kopieren.



  • Ja, habe ich danke



  • Und einmal von y nach x kopieren reicht auch. Du musst nicht vorher noch von x nach y kopieren.

    Sonst gilt das bei https://www.c-plusplus.net/forum/p2518865#2518865 ff. geschriebene auch noch.


Anmelden zum Antworten