ansatz richtig? matrix auf vector



  • Schreiben Sie ein Programm main(), welches aus einer 2-dimensionalen Matrix der Größe 3x4
    einen 1-dimensionalen Vektor erstellt und diesen anschließend auf dem Bildschirm ausgibt. Dazu
    müssen Sie zunächst die Matrix wie auch den Vektor als Variablen deklarieren. Die Anweisungen
    (bzw. den Funktionsaufruf), um die Matrix mit Werten zu füllen, brauchen Sie nicht zu schreiben.
    Kennzeichnen Sie diese Zeilen einfach durch „ . . .“.

    hi, oben steht die Aufgabenstellung. habs mal probiert. aber scheint noch nicht richtig zu funktionieren. Vielleicht könnt ihr mal darüber schauen!

    Beste Grüße Pitchy

    struct v{ // vektor
    int sx=0;
    int sy=0;
    int ex=0;
    int ey=0;
    };
    
    main(){
    struct v;
    v.sx=1;
    v.sy=1;
    v.ex=3;
    v.ey=3;
    for(i=0;i<3,i++){ //x-Achse
    
     for(j=0;j<4,j++){ //y-Achse
    
      if((i==v.sx && j==v.sy) || (i==v.ex && j==v.ey))
       feld[i][j]=1; //Wenn es sich um ein der Punkt handelt
      else
       feld[i][j]=0;
      if(j==3)
       printf("td%\n",feld[i][j]);
      else
       printf("td%",feld[i][j]);
     }
    }
    }
    
        return 0;
    }
    


  • Du hast weder die Matrix noch den Vektor deklariert. Dafür hast du eine seltsame Struktur. Außerdem füllst du die (nicht deklarierte) Matrix mit Werten, was du laut Aufabenstellung nicht zu tun brauchst.

    Vielleicht hilft dir der Hinweise, dass hier mit Matrix ein zweidimensionales Array gemeint ist, und mit Vektor ein eindimensionales.



  • #include<stdio.h>
    
    struct vektor{
     int sx;
     int sy;
     int ex;
     int ey;
    };
    
    main(){
        int feld[3][4];
     vektor v;
     v.sx=1;
     v.sy=1;
     v.ex=3;
     v.ey=3;
     int i;
     int j;
     for(i=0;i<3;i++){ //x-Achse
      for(j=0;j<4;j++){ //y-Achse
       if((i==v.sx && j==v.sy) || (i==v.ex && j==v.ey))
        feld[i][j]=1; //Wenn es sich um ein der Punkt handelt
       else
        feld[i][j]=0;
       if(j==3)
        printf("\td%\n",feld[i][j]);
       else
        printf("\td%",feld[i][j]);
      }
     }
    }
    

    wäre das so besser? Ich habe es einfach mal mit werten gefüllt, damit ich mir das besser vorstellen kann 🙂



  • Was willst du mit dieser Struktur?

    Du sollst einen Vektor mit den Daten aus der Matrix füllen. Du füllst die Matrix in Abhängigkeit vom Inhalt deiner Struktur.

    Du sollst den Inhalt des Vektors ausgeben. Du gibst irgendwelche Elemente der Matrix aus.



  • ich gebe eine matrix aus und da wo der vektor seine start und endpunkt hat mache ich eine 1

    ich dachte es wurde der vektor aus der mathematik vektoralgebra gemeint :I

    mein ansatz ist wahrscheinlich viel zu kompliziert gedacht oder?

    im prinzip muss ich ja nur:

    mit einer for-schleife zuerst die erste zeile auslesen, dann die zweite...
    und das ergebnis jeweils in ein array speichern, oder?



  • pitchy schrieb:

    ich gebe eine matrix aus und da wo der vektor seine start und endpunkt hat mache ich eine 1

    Schön, hat aber nichts mit der Aufgabe zu tun.

    pitchy schrieb:

    mit einer for-schleife zuerst die erste zeile auslesen, dann die zweite...
    und das ergebnis jeweils in ein array speichern, oder?

    Nicht jeweils. Die ganze Matrix soll hier wohl in ein großes Array.



  • Neuer Lösungsansatz, aber scheint auch noch nicht ganz funktionieren.

    #include<stdio.h>
    #include<conio.h>
    
    void wandle(int *feld, int *vektor){
       //int matrix[2][3];
       int x,y,i;
       i=0;
     for(y=0;y<4;y++){ //y-Achse
     for(x=0;x<3;x++){ //x-Achse
             *feld[x][y]=*vektor[i];
             i++;
           }
       }
    }
    
    main(){
       int feld[10][10]; //Matrixfeld
       int vektor[12]={10,7,5,22,9,61,83,3,44,9,39,11}; //Vektor
       int *zeigerfeld = &feld[0][0];
       int *zeigervektor = &vektor[0];
    int x;
    int y;
    wandle(zeigerfeld,zeigervektor);
    for(y=0;y<4;y++){ //y-Achse
     for(x=1;x<=3;x++){ //x-Achse
      if(x==3)
       printf("\t%d\n",feld[x][y]);
      else
       printf("\t%d",feld[x][y]);
     }
    }
    getch();
    }
    


  • - Wozu die Funktion?
    - Wozu die zusätzlichen Zeiger?
    - feld ist zu groß (siehe Aufgabenstellung)
    - Du füllst die Matrix mit den Daten des Vektors. Das soll andersrum sein.
    - Du gibst immer noch die Matrix aus.

    Und für die Zukunft: "scheint auch noch nicht ganz funktionieren" ist keine ausreichende Fehlerbeschreibung.

    Das ist doch eigentlich ganz einfach.

    - Matrix deklarieren
    - Vektor deklarieren
    - Matrix füllen (weglassen, siehe Aufgabenstellung)
    - Matrix in Vektor übertragen (verschachtelte Schleife)
    - Vektor ausgeben (einfache Schleife)


Anmelden zum Antworten