2016-05-11 400 views
0

我知道這個問題已經被問到了,我檢查了所有以前的答案,但仍然找不到錯誤,程序還沒有完成,所以邏輯不完整我只是想運行和檢查什麼我有這麼遠。error:expected identifier or'('before'}'token}

#include <math.h> 
#include <stdio.h> 
#include <omp.h> 

int a[100][100]; 

int countNeighbors(int x, int y){ 

    int count = 0; 
    int i,j; 
    for (i = x-1; i <= x+1; i++) 
     for (j = y-1; i <= y+1; j++) 
      if (a[x][y] == 1) count++; 

    return count; 
} 

int main (int argc, const char* argv[]) { 

    int n, i, j, count; 

    printf("Enter grid dimension:"); 
    scanf("%d",&n); 

// Initializing the array with random values 
    srand (time(NULL)); 
    for (i=0;i<n;i++) 
     for(j=0;j<n;j++) 
      a[i][j] = rand() % 2; 


    for (i=0;i<n;i++){ 
     printf("\n"); 
     for(j=0;j<n;j++) 
      printf("%d",a[i][j]); 
    } 

    for (i = 1; i < n-1; i++) 
     for (j = 1; j < n-1; j++){ 
      count = countNeighbors(i,j); 
      if (a[i][j] == 1){ 
       if (count >= 4 || count <=1) a[i][j] = 0; 
       else a[i][j] = 1; 
      } 
      else if (count == 3) a[i][j] = 1; 
     } 


    for (i=0;i<n;i++){ 
     printf("\n"); 
     for(j=0;j<n;j++) 
      printf("%d",a[i][j]); 
    } 


} 

回答

1

看來,問題可能是在該行#include <omp.h>。有的圖書館甚至可能需要包括按照一定的順序它們的頭文件,否則他們可能會導致errors like this。我的建議是嘗試將#include放置在文件的頂部,但它看起來並沒有被使用,所以我會放棄它,直到您確定需要它爲止。

另外,即使你刪除的#include,你將需要確保#include <time.h>#include <stdlib.h>,否則您的通話time()rand()會導致編譯錯誤。

+0

我刪除了並添加了,但我得到了同樣的錯誤。 project.c:50:31:error:expected identifier or'('before'}'token }} – Katya

+1

我沒有收到這樣的錯誤,你說錯誤在第50行,第31列?有一個嵌套for循環,我不知道爲什麼你的編譯器會抱怨,因爲語法看起來有效,它爲我編譯。你使用什麼編譯器?你確定你正在編譯你的最新代碼嗎?另外,當你在for循環後面添加大括號,並在其中加入'printf(「%d」,a [i] [j]);'在if語句和循環之後加上花括號 - 這會讓你的代碼更具可讀性 –

+0

@Katya:據我所知,第50行沒有第31列。請提供更準確的代碼和錯誤消息。 –

相關問題