Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #pragma warning(disable:4996)
- double LaskeSini(double x);
- double LaskeKosini(double x);
- double LaskeEx(double x);
- double LaskeNelioJuuri(double x);
- int TeeValinta();
- double HaeX(double alaraja, double ylaraja);
- double LaskeSini(double x)
- {
- int etumerkki = -1;
- int kierros = 1 ;
- double valisumma;
- double osasumma;
- do
- {
- osasumma = (osasumma * x * x) / ((kierros+1)*(kierros+2) );
- kierros = kierros + 2;
- valisumma = valisumma + osasumma*etumerkki;
- etumerkki = etumerkki * -1;
- }
- while ( kierros < 10);
- return valisumma;
- }
- double LaskeKosini(double x)
- {
- double valisumma = 1;
- double osasumma = 1;
- int etumerkki = -1;
- int kierros = 1;
- do
- {
- osasumma = (osasumma * x * x) / (kierros*(kierros+1) );
- kierros = kierros + 2;
- valisumma = valisumma + osasumma*etumerkki;
- etumerkki = etumerkki * -1;
- }
- while ( kierros < 10);
- return x;
- }
- double LaskeEx(double x)
- {
- double valisumma = 1;
- double osasumma = 1;
- int toistomaara = 1;
- double kierros = 1;
- do
- {
- while ( kierros <= toistomaara )
- {
- osasumma = (osasumma * x) / kierros;
- kierros = kierros + 1;
- }
- toistomaara = toistomaara + 1;
- valisumma = valisumma + osasumma;
- }
- while ( osasumma > 0.00001);
- return valisumma;
- }
- double LaskeNelioJuuri(double x)
- {
- double arvo=0;
- double dx,dy=0;
- double muutos=0;
- arvo=x;
- dy = arvo / 10;
- do
- {
- dx = (arvo - dy*dy) / ( 2.0 * dy );
- dy = dy + dx;
- if ( arvo > dy*dy)
- {
- muutos = arvo - dy*dy;
- }
- else
- {
- muutos = dy*dy - arvo;
- }
- }
- while ( muutos > 0.00001 );
- return dy;
- }
- int TeeValinta()
- {
- double x=0;
- do
- {
- int a = 0;
- printf("KOTITEHT\216V\216 2\n\n");
- printf("1 = Anna x\n");
- printf("2 = sin\n");
- printf("3 = cos\n");
- printf("4 = e^x\n");
- printf("5 = neli\224juuri\n");
- printf("6 = lopetus\n\n");
- printf("Valinta:");
- scanf("%i", &a);
- switch (a)
- {
- case 1: x=HaeX(1,1);break;
- case 2: LaskeSini(x);printf("\n Sin(%3.2f) = %6.3f\n",x,LaskeSini(x));break;
- case 3: LaskeKosini(x);printf("\n Cos(%3.2f) = %6.3f\n",x,LaskeKosini(x));break;
- case 4: LaskeEx(x);printf("\n e^%3.2f = %6.3f\n",x,LaskeEx(x));break;
- case 5: LaskeNelioJuuri(x);printf("\n Neli\224juuri (%3.2f) = %6.3f\n",x,LaskeNelioJuuri(x));break;
- case 6: return 0; break;
- }
- }
- while (1==1);
- }
- double HaeX(double alaraja, double ylaraja)
- {
- float d=0;
- alaraja = -1.57;
- ylaraja = 1.57;
- do
- {
- printf("Anna x:n arvo (välillä -1,57..+1.57):");
- scanf("%f", &d);
- }
- while(d < alaraja || d > ylaraja);
- return d;
- }
- int main(void)
- {
- TeeValinta();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement