

2次元ランダムウォークのプログラミングです。

Google Colabで入力したのですが、以下のエラーが出てしまいます。  
直し方を教えてください。

**エラーメッセージ:**

[code]

    File "<ipython-input-3-95051bfc0730>", line 8
        int main()
               ^
    SyntaxError: invalid syntax
    
[/code]

**ソースコード:**

[code]

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #define n 100
    #define m 10000
    #define seed 7892
    int main()　←ここでエラーが出ました。
    {
        int i,j;
        double x,y,r,rn,sum,average;
        FILE *output;
        output=fopen("output.data","w");
        sum=0.0;
        srand(seed);
        for(j=1;j<m;j++) {
            x=y=0.0;
            for(i=1;i<n;i++) {
                rn=rand()/(RAND_MAX+1.0);
                if(rn<0.25) x=x-1.0;
                else if(rn>=0.25 && rn<0.5) x=x+1.0;
                else if(rn>=0.5 && rn<0.75) y=y-1.0;
                else y=y+1.0;
            }
            r=sqrt(x*x+y*y);
            sum+=r;
        }
        average=sum/m;
        printf("%f\n",average);
        fclose(output);
        return 0;
    
[/code]


CC BY-SA 4.0
2022-01-17T11:45:39.843
85761
2022-01-20T00:06:36.167
2022-01-20T00:06:36.167
3060
50937
question
c google-colaboratory
int main が Google Colaboratory で SyntaxError となる


こちらの記事のように、Python以外のソースプログラムでは先頭にファイルに保存する指定を入れておかないといけないようです。  
[「Google Colaboratory」で
C言語のプログラムを実行できる？](https://tomokatsu.hatenablog.com/entry/2021/12/06/222107)

[「編集」
ソースプログラムの作成](https://tomokatsu.hatenablog.com/entry/2021/12/06/222107#%E7%B7%A8%E9%9B%86%E3%82%BD%E3%83%BC%E3%82%B9%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AE%E4%BD%9C%E6%88%90)

> ノートブック内に C 言語のソースプログラムを作成するときには、コードセルの先頭に **%%file hello.c**
> といった記述が必要になります。その一行を記述する以外は、普通にプログラムを記述します。

質問のプログラムの場合はランダムウォークということなので、先頭に以下の行を挿入すれば良いでしょう。

[code]

    %%file randomwalk.c
    
[/code]

ちなみに質問記事のソースプログラムは質問時の転記ミスでしょうか、最後の`}`が抜けています。

同様のソースプログラムがこちらの記事の後半に掲載されています。  
[ランダムウォークの数値計算例(C言語)](http://computational.pc-physics.com/randomwalk.html)

* * *

そして以下のように実行することでソースプログラムをストレージに保存する手順が必要なようですね。

>
> ただし、ソースプログラムを記述したら、コードセルの左上にある「セルを実行」ボタンを押して、インスタンスのストレージ内にソースプログラムを保存（書き出し）しておくことを忘れないようにしてください。

* * *

次に保存したC言語のソースプログラムをコンパイル＆実行することになります。  
[「実行」
コンパイルと実行](https://tomokatsu.hatenablog.com/entry/2021/12/06/222107#%E5%AE%9F%E8%A1%8C%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB%E3%81%A8%E5%AE%9F%E8%A1%8C)

上記紹介記事では Hello World!... の表示だけなので単純でしたが、質問のプログラムは math.h の sqrt()
を使っているので、そのライブラリをリンクする指定が必要です。  
[ライブラリのリンクを忘れずに](https://qiita.com/percipere/items/678a8ec1299a7564f6a3)

ソースプログラムの次に新しいセルを追加して、以下のように入力・実行すれば、結果が表示されるでしょう。

[code]

    !gcc randomwalk.c -lm -o randomwalk && ./randomwalk
    
[/code]


CC BY-SA 4.0
2022-01-19T14:38:10.397
85801
2022-01-19T14:38:10.397
26370
85761
answer