Anzahl der verschiedenen Zeilen und Spalten in einem zweidimensionalem Feld



  • Hallo 🙂

    Bin im ersten Semester Informatik und versuche mich mit ein paar alten Prüfungsaufgaben, leider nicht immer mit Erfolg 😉

    Hier folgende Aufgabe:
    Schreiben Sie eine Prozedur verschiedene, die ermittelt, wie viele verschiedene
    Zeilen und Spalten in einem zweidimensionalen Feld vorkommen. Die Prozedur hat
    drei Parameter:
    - feld (ein Feld ganzer Zahlen mit den Dimensionen MAX_Z und MAX_S)
    - zeilen (Ergebnisparameter, der die Zahl der verschiedenen Zeilen angibt)
    - spalten (Ergebnisparameter, der die Zahl der verschiedenen Spalten angibt)

    Beispiel für ein Feld mit 3 Zeilen und 4 Spalten:
    1 2 3 2
    4 2 3 2
    1 2 3 2
    -> Dieses Beispiel hat 2 verschiedene Zeilen und 3 verschiedene Spalten.

    So, jetzt habe ich zwar versucht was zu programmieren, aber es funktioniert nicht... Hier mein Ansatz:

    void verschiedene(int feld[MAX_Z][MAX_S])
    {
        int a, b, c, d, zeilen, spalten;
    
        zeilen = MAX_Z - 1;
        spalten = MAX_S - 1;
    
        for(d=1; d < MAX_S; d++)
        {
            a=0;
            if(feld[a][b] == feld[a][b+d])
            {
                d++;
    
                if (a == MAX_Z -1)
                {
                    printf("Spalte %d und %d sind gleich", b, b+d);
                    spalten -= 1;
                }
                else
                {
                    return;
                }
            }
            else
            {
                return;
            }
        }
    
        printf("Die Reihe hat %d verschiedene Spalten.", spalten);
    
        for(c=1; c < MAX_Z; c++)
        {
            b=0;
            if(feld[a][b] == feld[a+c][b])
            {
                b++;
    
                if (b == MAX_S - 1)
                {
                    printf("Zeile %d und %d sind gleich", a, a+c);
                    zeilen -= 1;
                }
                else
                {
                    return;
                }
    
            }
            else
            {
                return;
            }
        }
    
        printf("Die Reihe hat %d unterschiedliche Zeilen.", zeilen);
    }
    
    int main(void)
    {
       int i,j;
    
       int array[MAX_Z][MAX_S]= {{1, 2, 3, 2},
                                 {1, 2, 3, 2},
                                 {4, 2, 3, 2}};
    
       printf("\nAusgabe von array[%d][%d]:\n\n", MAX_Z, MAX_S);
       for(i=0; i < MAX_Z; i++)
       {
          for(j=0; j < MAX_S; j++)
          {
             printf(" %d ",array[i][j]);
          }
          printf("\n");
       }
    
       printf("\nAnzahl der verschiedenen Zeilen und Spalten:\n");
    
       verschiedene(array[MAX_Z][MAX_S]);
    
       return 0;
    }
    

    Kann mir jemand einen Tipp geben? Danke schon mal!



  • Bei verschiedene(array[MAX_Z][MAX_S]); übergibst du der Funktion ein Element. Das Element existert noch nicht mal, da der höchste Element array[MAX_Z-1][MAX_S-1] ist.

    Deine Funktion erwartet allerdings auch ein ganzes Array und nicht nur ein Element.

    verschiedene(array);
    

    reicht.


Anmelden zum Antworten