2015-05-17 2 views
-4

Существует код, который преобразует отношения в матрицуИспользование массива и функции для цикла

При компиляции он дает 2 ошибки. Я отлаживал его, но не могу найти настоящую причину.

#include <stdio.h> 
#include <stdlib.h> 
#include<string.h> 

int main() { 
int i=0,j=0,k=0; 
char a[] = "12345"; 
char b[] = "abcde"; 
char r[] = "1c2b3e4d5a"; 
// Array Long 
int LA = sizeof(a)-1; 
int LB = sizeof(b)-1; 
int LR = sizeof(r)-1; 


    //index function 

int index(char arr[],char v){ // [Error] a function-definition is not allowed here before '{' token 
    for(k=0;k<sizeof(arr)-1;k++){ 
     if(arr[k]==v){ 
     return k; 
     } 
    } 

} 


// trying printf("%d\n%d\n%d\n",LA,LB,LR); 


int rel[LA][LB]; 

for(i=0;i<LR;i+=2){ 
    int indexa = index(a,r[i]); 
    int indexb = index(b,r[i+1]); 
    rel[indexa][indexb]=1; 
} 


//print the matrix 

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

return -1; 
} //[Error] expected '}' at end of input 

Как я могу решить эту проблему?

Ошибки:

[Error] функция разрешения не допускается здесь до '{' лексема
[Error] ожидалось '}' в конце ввода

преобразовать это код из java-кода: Converting Relation to Matrix

+3

Каковы ошибки? – skandigraun

+0

Кроме того, на самом деле это не похоже на код Java, более похожий на c. – skandigraun

+0

Вы не можете определить функцию внутри основного тела –

ответ

0

Вы не можете определить функцию внутри функции в C, а ваш текущий код пытается определить index внутри main. Переместить его до определения main «s, и вы должны быть в порядке:

int index(char arr[],char v) { 
    for (k = 0; k < sizeof(arr) - 1; k++) { 
     if (arr[k] == v) { 
      return k; 
     } 
    } 
} 

int main() { 
    // code goes here... 
} 
+0

Спасибо, что ошибки выходят. Но результаты не такие, как я. –

0

Вы не можете определить функцию внутри функции то, что вы здесь делаете, что вы определили функцию (индекс) внутри (основной) функции

она идет, как этот

#include <stdio.h> 
    #include <stdlib.h> 
    #include<string.h> 

int index(char arr[],char v) { 
for (k = 0; k < sizeof(arr) - 1; k++) { 
    if (arr[k] == v) { 
      return k; 
     } 
    } 
} 

int main() { 
int i=0,j=0,k=0; 
char a[] = "12345"; 
char b[] = "abcde"; 
char r[] = "1c2b3e4d5a"; 
// Array Long 
int LA = sizeof(a)-1; 
int LB = sizeof(b)-1; 
int LR = sizeof(r)-1; 
//.... 
} 
Смежные вопросы