在for循环

时间:2015-05-17 19:55:09

标签: c matrix

有一个代码可以将关系转换为矩阵

当我编译它时,它会产生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

我该如何解决这个问题?

错误:

  

[错误]在此之前不允许使用功能定义&#39; {&#39;令牌
  [错误]预期&#39;}&#39;在输入结束时

我从java代码转换此代码:Converting Relation to Matrix

2 个答案:

答案 0 :(得分:0)

您无法在C中的函数内定义函数,并且您当前的代码会尝试在index内定义main。在main的定义之前移动它,你应该没问题:

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...
}

答案 1 :(得分:0)

问题是,在the_list = [1, 2, 1, 2, 3, 1, 2, 3, 4] target = 1 keep(the_list, target) print(the_list) 中,您无法在函数内部定义函数 您在这里所做的是在[1, 1, 1] 函数中定义了$('#inputField').mask('AA/SS/YYYY', {'translation': { A: {pattern: /[A-Za-z0-9]/}, S: {pattern: /[A-Za-z]/}, Y: {pattern: /[0-9]/} } }); 函数,这就是为什么会出错的原因。

请尝试以下代码片段,希望它可以解决您的问题

C