2-Dimesionales Array übergeben

nahkampfschaf

Grünschnabel
2-Dimensionales Array übergeben

Ich arbeite gerade mit Matrizen in C und scheitere an folgendem Problem:
in_matrix1 soll 1 zurückgeben, falls sich x in der Matrix a befindet.
Wenn ich aber per a[i][j] zugreife bekommen in aber einen Compilerfehler.
"Bounds not specified" Gib es ein kleinen Hack//Tipp, wie ich dieses Problem umgehen kann?

HIER DER BEISPIELCODE
Code:
#include <stdio.h>

int in_matrix1 (int a[][], int x, int n) {
    //a[] -> array mit Werten
    //x -> gesuchter Wert
    //n -> Größe der n*n Matrix

    int i, j;

    for (i = 0, j = 0; i < n; i++, j++)
      if(a[i][j] = x)
        return 1;

    return 0;
}

int main (int argc, char *argv[]) {
    int n = 3, res;
    int a[n][n];

    a[0][0] = 1;
    a[0][1] = 6;
    a[0][2] = 8;
    a[1][0] = 7;
    a[1][1] = 37;
    a[1][2] = 7;
    a[2][0] = 8;
    a[2][1] = 1;
    a[2][2] = 9;

    res = in_matrix1(a, 78, n);
}
 
Zuletzt bearbeitet:
1.)
Code:
 if(a[i][j] = x)
führt kein Vergleich sondern eine Zuweisung durch ! Benutze ==

2.) In deiner Schleife durchläufst du nur die Diagonale der Matrix

3.) Die main Funktion muss ein Wert zurück liiefern , z.B.: return res;

4.) Code Tags verwenden wenn code gepostet wird. [CODE ] [/ CODE]

5.)
Code:
 int a[n][n];
geht nur wenn n Konstant ist sprich eine Zahl ist oder n ein const int ist.

6.) Wenn dein Array immer mit a[CONST_X ][CONST_Y] definiert wird würde ich in der Funktion ein int* übergeben
Code:
int in_matrix1 (int *a, int x, int n);
Beim Aufruf a casten (int *)a.
Beim Zugriff auf Elemente a[i*j + j] verwenden.

Soll mal das Array dynamisch erstellt werden kann mna auf int** umsteigen.

Oder man verwendet die Template Klasse vector (siehe auch Suche nach mehrdimensional) im Forum.
 
Zurück