code :: blocks создает файл .dat, но он пуст - PullRequest
0 голосов
/ 28 мая 2020

Я написал код случайного блуждания на языке c. Программа компилируется отлично, и я вижу результаты в консоли code :: blocks. Но мне нужно создать файл .dat для импорта его данных и построить график зависимости «числа итераций от среднего квадратного смещения» в qtgrace.

Проблема в том, что code :: blocks создает .dat файл, но он пуст. Я не знаю, почему это происходит.

Это мой код:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>

FILE *fp;

int c,i;//c is the number of walkers and i is the iterations number
double x,r; //x is the displacement and r is a random number
double s[2000]; //array for the displacement squared
int n[10]; //array for the number of walkers

double main(){
fp=fopen("caminata.dat","w");

    printf("Write the iterations number i=");
    scanf("%d",&i);
    printf("Write the number of walkers c=");
    scanf("%d",&c);


    n[10]=0;
    s[2000]=0;

    for (int j=0; j<c; j++){ 

        //srand((long)time((time_t *)(NULL)));
        x=0.;

        for(int k=0; k<i; k++){

            r=rand()/(double)RAND_MAX;

            if(r<=0.5){

                x=x+1;

            }

            if(r>0.5){

                x=x-1;

            }

        s[k]=s[k]+x*x;//
        }

        }

    for (int k=0; k<i; k++){//mean of the square displacement
            s[k]=s[k]/c; //divided by the number of walkers
            printf("\n%d    %lf",k,s[k]);
            fprintf(fp, "\n%d    %lf",k,s[k]);
        }
        fclose(fp);
    }

Это график, который я должен получить

Random_Walk: количество итераций против среднего квадрата смещения

1 Ответ

0 голосов
/ 28 мая 2020

Я вижу 2 раза k<i в циклах for, но не вижу определения i. Существует 1 шанс из 2, что значение определяется как отрицательное значение, и в этом случае имеет смысл, что ваш файл пуст.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...