Как повторить это уравнение греха? - PullRequest
0 голосов
/ 30 апреля 2019

Я не могу создать правильный файл.уравнение в программе не выполняет итерацию и записывает только ту же сумму на столько выборок, сколько было запрошено.

для циклов.

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

#define LEN 256

int main ()
{
   FILE * fp;
   double i=0; //sample count
   double y=0; //y values
   double f=0; //frequency
   double t=0; //time

   /* open the file for writing*/
   fp = fopen ("1.dat","w");
//fprintf(fp, "sample #\ty-value\n"); 

printf("Enter the frequency in hertz: ");
scanf("%lg", &f);
printf("Enter the number of samples : ");
scanf("%lg", &t);



   /* write 1 seconds of time data into the file stream*/
   for(i = 0; i < t;i++){

//y=sin(i*M_PI/180);
y=sin(2*M_PI*f*t);

//       fprintf (fp, "%g  %g\n",i ,y);
       fprintf (fp, "%g\n",y);
   }

   /* close the file*/  
   fclose (fp);
   return 0;
}

1 Ответ

0 голосов
/ 30 апреля 2019

Мне кажется, я понимаю, что вы действительно хотите сделать:

Ваша управляющая переменная - это не i и не t, а i / t, которая является i-й выборкой из t выборок в секунду:

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

#define LEN 256

int main ()
{
    FILE * fp;
    unsigned int i=0; //sample count
    double y=0; //y values
    double f=0; //frequency
    unsigned int t=0; //time

    /* open the file for writing*/
    fp = fopen ("1.dat","w");

    printf("Enter the frequency in hertz: ");
    scanf("%lg", &f);
    printf("Enter the number of samples : ");
    scanf("%u", &t);
    /* write 1 seconds of time data into the file stream*/
    for(i = 0; i < t;i++){
        y=sin(2*M_PI*f*i/t);
        fprintf (fp, "%g\n",y);
    }

    /* close the file*/  
    fclose (fp);
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...