Gegeben ein Doppel-Array von Zufallswerten mod 5 und ein Wert X und eine Position im Array, ich muss den Wert der Position und alle seine Nachbarn zu X ändern. Ich mache es rekursiv. Ich denke, die Idee ist richtig, allerdings muss ich mich mit der Return-Anweisung und der Zuweisung durch den rekursiven Aufruf beschäftigen. Beim Kompilieren ich Note bekommen: erwartet 'int **', sondern Argument ist vom Typ 'int (*) [8]'Floodfill-Algorithmus C - Double Array zurückgeben?
auch, wenn ich die Funktion im Haupt verwende ich Warnung: Übergabe des Argument 1 von 'floodfill' vom inkompatiblen Zeigertyp table = floodfill (Tabelle, i, j, r);
Fehler: Zuordnung zu Ausdruck mit Array-Typ Tabelle = floodfill (Tabelle, i, j, r);
wo Tabelle ist der Tisch, auf dem der Algorithmus ausgeführt werden muss
int ** floodfill (int **tab, int i, int j, int v)
{
/*if statement to make the values to the right of the specified position
equal to the specified value*/
if (tab[i][j+1] == tab[i][j])
{
/*the assignment is recursive*/
tab = floodfill (tab, i, j+1, v);
}
/*this assignment is executed after each of the values to the
right of tab[i][j] are changed to v*/
tab[i][j] = v;
/*returns the tab with the specified position changed*/
return tab;
}
Offensichtlich ist der Code ist unvollständig (keine malloc, keine Prüfung für out-of-gebundenen Position und nur Floodfill der richtigen Werte) für der Kürze halber, aber für das, was mein Problem betrifft, sollte es alles geben.
Was ist Ihre Frage? Das ist nicht klar. – Carcigenicate
Wie wird 'Tabelle' deklariert? Verwechseln Sie ein 2D-Array und einen Zeiger auf den Zeiger auf T? Die Warnung weist darauf hin, dass dies der Fall ist. Lesen Sie http://stackoverflow.com/questions/7586702/is-2d-array-a-double-pointer –