У меня есть домашнее задание, и мне нужно написать программу, в которой матрица представляет смежность. Пользователю нужно ввести матрицу и индекс, и программа вернет true, если между двумя значениями индексов есть путь. Например
0 1 2 3 4
1 0 1 0 0
2 0 0 1 0
3 0 0 0 0
4 0 0 0 0
Если пользователь предоставляет эту матрицу (без номеров индексов) и дает значение 3,1, тогда она возвращает true, потому что 3 является сыном 2, а 2 является сыном единицы. Но если пользователь дает значение 4,1, он возвращает false.
#include <stdio.h>
#define N 11
#define TRUE 1
#define FALSE 0
int path(long int [][20] A, int u, int v)
{
if(u == 0 && A[u][v] == TRUE)
return TRUE;
if(u == 0 && A[u][v] == FALSE)
return FALSE;
if(A[u][v] == FALSE)
return path(A, u--, v);
else if(A[u][v] == TRUE)
return path(A, N, u);
}
int main()
{
int arr[11][11] = {{0,1,1,1,0,0,0,0,0,0,0},
{0,0,0,0,1,1,1,1,1,0,0},
{0,0,0,0,0,0,0,0,0,1,0},
{0,0,0,0,0,0,0,0,0,0,1},
{0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0}};
return path(arr,1,8);
return 0;
}
когда я пытаюсь запустить его на gcc, он возвращает:
adjacency.c:8:26: ошибка: ожидается ';', ',' или ')' перед 'A' adjacency.c: в функции 'main': adjacency.c:30:1: предупреждение: неявное объявление функции 'путь' [-Wimplicit-function-declaration]
Кто-нибудь может сказать мне, почему? И если моя программа вообще работает?? Спасибо ребята
return 0;
никогда не будет выполняться - person Spikatrix   schedule 25.04.2015return path(A, N, u);
вызывают внешние границы массива - person BLUEPIXY   schedule 25.04.2015