#include "stdafx.h" #include const double PI = 3.14159265358979323846; // pi const double PI2 = 6.28318530717958647692; // 2*pi float sinus(float x,float epsilon) { x = fmod(x,PI2); // funkcia je periodicka, posunutie do intervalu <0,2PI> if(x>PI/2 && x<=PI) { x=PI-x; } else if(x>PI && x<=3/2*PI) { x=-1*(x-PI); } else if(x>3/2*PI && x<=PI2) { x=-1*(PI2-x); } float item = x; //item je jedna zlozka radu float sum = item; float k = 1; float x_x=x*x; while(fabs(item) > epsilon) //rad sa spocitava pokym posledna zlozka radu nie je mensia ako epsilon(presnost) { // vypocet pomocou Taylorovho rozvoja k += 2; item = (-item*x_x)/(k*(k-1)); sum += item; } return sum; } int main(int argc, char* argv[]) { float x; printf("Zadaj stupne v radianoch!\n"); //ak chces zadavat stupne v stupnoch tak... if(scanf("%f",&x)!=1) { printf("CHYBA"); } else { printf("%f",sinus(x,1e-10)); //... sem to treba dat takto printf("%f",sinus(x * pi/180,1e-10); } getchar(); getchar(); return 0; }