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.