this is prog in C (adjacency.c) that checks if exists in directed graph way from node a to node b
# include <stdio.h>
# include <stdlib.h>
#define N 11
#define FALSE 0
#define TRUE 1
typedef int[N][N] adj_mat;
int path (adj_mat A, int u, int v)
void main()
{
adj_mat Matrix;
int dadnode, sonnode;
printf("bla-bla-bla enter nodes.\n");
printf("Press Ctrl+Z after finishing of bla-bla-bla all the nodes\n");
do {
printf("Enter the number of first node\n");
scanf("%d", &dadnode);
printf("Enter the number of second node\n");
scanf("%d", &sonnode;);
if ((dadnode < sonnode) && (sonnode <= N) && (dadnode > 0))
Matrix[dadnode][sonnode] = 1;
} while ( (dadnode != EOF ) && (sonnode != EOF));
printf("Now enter u and v nodes to check if exists way from u node to we node\n")
printf("Enter the number of u node\n");
scanf("%d", &dadnode);
printf("Enter the number of v node\n");
scanf("%d", &sonnode;);
if ((dadnode < sonnode) && (sonnode <= N) && (dadnode > 0))
{
if(path(Matrix,dadnode,sonnode) == TRUE )
printf ("Exists way from node u to node v ");
}
else printf printf ("Not exists way from node u to node v ");
}
int path (adj_mat A, int u, int v)
{
if (v >= u)
return FALSE;
int nodenum;
for(nodenum = v - 1; nodenum > 0; nodenum-- )
{
if (A[nodenum][v] == TRUE)
{
if (nodenum == u) /
return TRUE;
else if (path (adj_mat A, int u, int nodenum))
return TRUE;
}
}
return FALSE;
}
when i type command
gcc -o adjacency -ansi adjacency.c
i get
adjacency.c:8: error: expected identifier or ‘(’ before ‘[’ token
adjacency.c:10: error: expected ‘)’ before ‘A’
adjacency.c:58: error: expected ‘)’ before ‘A’
how to fix ?
update: thanks to all for help. compiled.
You should move the
[N][N]part to the end of the declaration, and add a semicolon after the forward declaration ofpath.There are also inaccuracies in the remaining of your code:
scanf("%d", &sonnode;);has extra semicolon, should bescanf("%d", &sonnode);else printf printfshould beelse printf/is at the end of one line that shouldn’t be theremainneeds to return anint