24522


C言語のソースコードでエラーが出ますが、原因がわかりません。  
助けて頂ければ幸いです。

> C:\Users\dell-\Desktop\annd.c(33) : error C2143: syntax error :  
>  missing ';' before 'type' C:\Users\dell-\Desktop\annd.c(34) : error  
>  C2143: syntax error : missing ';' before 'type'
>
> annd.exe - 1 error(s), 0 warning(s)
[code]

    #include<stdio.h>  
    #include<math.h>  
    #include <stdlib.h>  
    #include <time.h> 
    
    int x[2];// 入力层 
    double w[2][2];//入力层と中间层の重み 
    double a[2];//中间层 
    double cw[2];//中间层と出力层の重み 
    double o;//出力层 
    double sum;//中间层と出力层の重みと中间层の挂け算の総和 
    double bias;//バイアス 
    double hoge;
    int T;//教师信号 
    double dnn_sig(double in){  //sigmoid
        return 1.0/(1.0+exp(-1.0*in));  // ゲインを1.0に 
    }  
    int A_nd(int x,int y) {//AND関数 
        if(x==1&&y==1) 
        return 1;
        else 
        return 0;
    }
    
    int main()
    {int i,j,n;
    int t=0;
    n=0;
    bias=0.5;
    double w[2][2]={0.2,0.2,0.4,0.7};//入力层と中间层の重み 
    double cw[2]={0.3,0.4};
    sum=0;
    hoge=0;
    do
    { srand(time(NULL));
       for(i=0;i<2;i++)//ランダム and 
       {
          x[i]=rand()%2;
       }
       T=A_nd(x[0],x[1]);
       for(j=0;j<2;j++)
       {
         for(i=0;i<2;i++)
          {
          hoge+=w[j][i]*x[i];
         }
         a[j]=dnn_sig(hoge);
        hoge=0;
        sum+=a[j]*cw[j];
        }
       o=dnn_sig(sum-bias);
       sum=0;
      for(j=0;j<2;j++)
       {
        cw[j]+=0.1*(T-o)*a[j];
        }
        bias-=0.1*(T-o);
    printf("%.9f\n",T-o);
    n++;
    }while( (double)o!=(int) T&&n<1000000);
    }
    
[/code]


CC BY-SA 3.0
2016-05-02T13:18:18.237
24521
2016-05-02T14:13:11.417
2016-05-02T14:13:11.417
3068
15359
question
c
vc++ error C2143: syntax error : missing ';' before 'type'

[code]

    double w[2][2]={0.2,0.2,0.4,0.7};//入力层と中间层の重み 
    double cw[2]={0.3,0.4};
    
[/code]

を

[code]

    n=0;
    
[/code]

の前に移動し

[code]

    int main()
    {    
        int i,j,n;
        int t=0;
        double w[2][2]={0.2,0.2,0.4,0.7};//入力层と中间层の重み 
        double cw[2]={0.3,0.4};
        n=0;
        bias=0.5;
        sum=0;
        hoge=0;
    
[/code]

のようにブロックの先頭に宣言・定義文をまとめて式文(例:`n=0;`)と混在しないようにします。

このようなエラーはMSVCのようなC90準拠のＣコンパイラで起こります。  
C99以降のＣコンパイラでは混合して記述可能なので起こりません。


CC BY-SA 3.0
2016-05-02T13:27:08.257
24522
2016-05-02T13:36:02.177
2016-05-02T13:36:02.177
5044
5044
24521
answer