2012-04-28 2 views
2

это прог в C (adjacency.c), который проверяет, существует ли в направленном графе путь от узла a к узлу б"ожидаемый идентификатор или '(' before '[' токен" и "ошибка: ожидаемый ')' до 'A'"

# 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; 
    } 

когда я типа команды

gcc -o adjacency -ansi adjacency.c

я получить

adjacency.c:8: error: expected identifier or ‘(’ before ‘[’ token

adjacency.c:10: error: expected ‘)’ before ‘A’

adjacency.c:58: error: expected ‘)’ before ‘A’

как исправить?

обновление: спасибо всем за помощь. скомпилирован.

+0

похоже, что вы забыли добавить ';' в функцию 'path()' в верхней части файла. – Muggen

+1

'void main()' - Бог спас тебя от ада! –

ответ

9

Вы должны переместить часть [N][N] в конец объявления и добавить точку с запятой после прямого объявления path.

typedef int adj_mat[N][N]; 
int path (adj_mat A, int u, int v); 

Есть также неточности в остальном вашем коде:

  • scanf("%d", &sonnode;); имеет дополнительную точку с запятой, должно быть scanf("%d", &sonnode);
  • else printf printf должен быть else printf
  • запятая отсутствует в нескольких местах
  • a / находится в конце одной строки, которая не должна быть там
  • main потребности, чтобы вернуть int
1

Вы пропустили точку с запятой после определения функции в строке 10:

int path (adj_mat A, int u, int v); 
4

Тип int[N][N] не является допустимым C++. Попробуйте:

typedef int adj_mat[N][N]; 

вместо этого.

также:

Вам нужна точка с запятой (';') в конце строки:

int path (adj_mat A, int u, int v) 
printf("Now enter u and v nodes to check if exists way from u node to we node\n") 

Вам не нужны первая точка с запятой в

scanf("%d", &sonnode;); 

У вас есть (избыточное) printf в

else printf printf ("Not exists way from node u to node v "); 

Вы имеете неверную строку в

if (nodenum == u)/ 
1

Там есть точка с запятой отсутствует в конце строки ниже.

int path (adj_mat A, int u, int v); 
Смежные вопросы