2014-09-27 5 views
0

Я пытаюсь вычислить значения pi от 0 до 1-1/n с шагом 1/n, но c не позволяет мне умножить 2PI и мой массив шагов (ошибка, оператор * должен быть указателем). Я новичок в c, поэтому, если кто-нибудь может указать мне в правильном направлении, это было бы здорово. Вот мой код.Ошибка, оператор * должен быть указателем

#include <stdio.h> 
#include <conio.h> 
#include <inttypes.h> 
#include <math.h> 
#define PI 

int main(){ 
    int i; 
    double in[256], out[256],n; 
    n = 128.0000; 
    for (i = 0; i <= n-1; i++){ 
     in[i] = i/n; 
     out[i] = sin(2*PI*in[i]); 
     printf("%lf %lf \n", in[i],out[i]); 
    } 


    _getch(); 



} 
+1

определить PI что? –

ответ

4
#define PI 

вы не определите значения для PI, изменить это

#define PI 3.14159265358979323846 

или

#define PI M_PI 

, если вы находитесь в мире POSIX (math.h также должны быть включенным).

В вашем примере, PI просто замещена ничего и ваш оператор присваивания:

out[i] = sin(2*PI*in[i]); 

заканчивается до:

out[i] = sin(2**in[i]); 
2

Вы определяете PI но не определяю его быть ничего. В результате токен PI заменяется на ничего в вашем коде. Так эта линия:

out[i] = sin(2*PI*in[i]); 

становится:

out[i] = sin(2**in[i]); 

Что эквивалентно:

out[i] = sin(2*(*in[i])); 

Что означает «получить i-й элемент in массива, разыменования его, умножаем результат на 2 и передать это sin(). Но элемент i-го массива in - это двойной, а не указатель pe - и именно поэтому вы получаете эту конкретную ошибку, потому что операнд * действительно не является типом указателя.

Вы должны добавить значение для определения PI:

#define PI 3.1415926535897932384626433 
Смежные вопросы