Próbkowanie, błędne wartości wynikowe

0

Dlaczego wszystkie wartości wynikowe są równe, gdzie jest błąd w kodzie? x(0) powinno być równe x(1), ale reszta powinna być już inna.

#include <iostream>
#include <math.h>
using namespace std;
int main()
{
    signed long double PI=3.1416;
    for(int i=0;i<8;i++)
    {
        signed long double tmp=sin(2*PI*1000*i*(1/8000))+0.5*sin(2*PI*2000*i*(1/8000)+(3*PI/4));
        cout << "x(" << i << ") = " << tmp << "\n";
    }
    cout << "\n";
    return 0;
}

http://ideone.com/lj5eDX

0

Kod mi się pomylił, o ten chodzi, przepraszam:

#include <iostream>
#include <math.h>
using namespace std;
int main()
{
    float PI=3.1416;
    for(int i=0;i<8;i++)
    {
        float tmp=sin(2*PI*1000*i*(1/8000))+0.5*sin(2*PI*2000*i*(1/8000)+(3*PI/4));
        cout << "x(" << i << ") = " << tmp << "\n";
    }
    cout << "\n";
    return 0;
}
0

1/8000 = 0
Jak chcesz dzielic zmiennoprzecinkowo to przynajmniej jeden operand musi być zmiennoprzecinkowy -> na przykład 1.0/8000

0

Dzięki, muszę zacząć czytać dokumentację, bo w książce tego nie było :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1