Witam.
Nie potrafię poradzić sobie z pozoru dla mnie prostym zadaniem. Mam narysować w języku C z pomocą biblioteki Allegro jeden okres Sin(x) rozpięty na ekranie 640x480 - i z tą częścią poradziłem sobie bez problemów. Jednakże druga część sprawia mi już duży kłopot. Należy zrobić to samo z funkcją sin(x)+(1/3)*sin(3x)+(1/5)*sin(5x)
.
Byłbym bardzo wdzięczny gdyby ktoś był w stanie mi pomóc i wyjaśnić jak mogę uzyskać drugi wykres.
Oto niedziałający kod:
#include<iostream>
#define USE_CONSOLE
#include<allegro.h>
#include<cmath>
using namespace std;
int main()
{
double y,x,a,b,c,z;
allegro_init();
install_keyboard();
set_color_depth(desktop_color_depth());
set_gfx_mode(GFX_AUTODETECT_WINDOWED,640,480,0,0);
acquire_screen();
x=0;
for(int i=0;i<640;i++)
{
line( screen, i-1, 480-480*((sin(x-0.0098179457921875)+1)/2), i, 480-480*((sin(x)+1)/2), makecol( 255, 255, 255 ) );
x=x+0.0098179457921875;
}//ta petla rysuje sin(x)
x=0;
for(int i=0;i<640;i++)
{
a=(sin(x)+((1/3)*sin(3*x))+((1/5)*sin(5*x)));
putpixel( screen, i, 480-480*((a+(14/15))/(28/15)), makecol( 255,0,0 ) );
x=x+0.0098179457921875;
}//ta powinna rysowac sin(x)+(1/3)*sin(3x)+(1/5)*sin(5x)
line( screen, 0, 240, 640, 240, makecol(255,255,255));
line( screen, 320, 0,320, 480, makecol(255,255,255));
release_screen();
readkey();
system("pause");
return 0 ;
}
END_OF_MAIN()