Advertisement
Guest User

Untitled

a guest
Jul 20th, 2017
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.82 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3. #pragma warning(disable:4996)
  4.  
  5. double LaskeSini(double x);
  6. double LaskeKosini(double x);
  7. double LaskeEx(double x);
  8. double LaskeNelioJuuri(double x);
  9. int TeeValinta(char menu[]);
  10. double HaeX(double alaraja, double ylaraja);
  11.  
  12. double LaskeEx(double x)
  13. {
  14. double y;
  15. y=x;
  16. double valisumma = 1;
  17. double osasumma = 1;
  18.  
  19. int toistomaara = 1;
  20. int kierros = 1;
  21.  
  22. do
  23. {
  24. while(kierros<=toistomaara)
  25. {
  26. osasumma = (osasumma*y) / kierros;
  27. kierros++;
  28. }
  29. toistomaara = toistomaara + 1;
  30. valisumma = valisumma + osasumma;
  31.  
  32. }
  33. while( osasumma > 0.00001);
  34.  
  35. return valisumma;
  36. }
  37.  
  38.  
  39. double LaskeKosini(double x)
  40. {
  41.  
  42. double valisumma =1;
  43. double osasumma =1;
  44. int etumerkki = -1;
  45. int kierros=1;
  46. double y;
  47. y=x;
  48. do
  49. {
  50. osasumma = (osasumma * y * y) / (kierros*(kierros+1) );
  51. kierros = kierros + 2;
  52.  
  53. valisumma = valisumma + osasumma*etumerkki;
  54. etumerkki = etumerkki * -1;
  55. }
  56. while (kierros < 10);
  57. return valisumma;
  58. }
  59.  
  60. double LaskeSini(double x)
  61. {
  62. int etumerkki = -1;
  63. int kierros = 1 ;
  64. double y;
  65. y=x;
  66.  
  67. double valisumma = y;
  68. double osasumma =y;
  69. do
  70. {
  71. osasumma = (osasumma * y * y) / ((kierros+1)*(kierros+2));
  72. kierros = kierros + 2;
  73.  
  74. valisumma = valisumma + osasumma*etumerkki;
  75. etumerkki = etumerkki * -1;
  76. }
  77. while ( kierros<10) ;
  78. return valisumma;
  79. }
  80.  
  81.  
  82. double LaskeNelioJuuri(double x)
  83. {
  84.  
  85. double muutos = 0;
  86. double arvo = 0;
  87. double dx = 0;
  88. double yx=x;
  89. arvo=yx;
  90.  
  91. yx = arvo / 10;
  92. do
  93. {
  94. dx = (arvo - yx*yx) / ( 2.0 * yx );
  95. yx = yx + dx;
  96.  
  97. if ( arvo > yx*yx)
  98. {
  99. muutos = arvo - yx*yx;
  100. }
  101. else
  102. {
  103. muutos = yx*yx - arvo;
  104.  
  105. }
  106. }
  107. while (muutos > 0.00001 );
  108.  
  109.  
  110. return yx;
  111. }
  112.  
  113. int TeeValinta()
  114. {
  115. double x=0;
  116. double y,z,q,w;
  117.  
  118. do
  119. {
  120. int a=0;
  121.  
  122. printf("\n 1 = Anna x\n");
  123. printf(" 2 = sin\n");
  124. printf(" 3 = cos\n");
  125. printf(" 4 = e^x\n");
  126. printf(" 5 = neli\224juuri\n");
  127. printf(" 6 = lopeta\n");
  128. printf("\n Valintasi ");
  129. scanf("%i",&a);
  130. switch(a)
  131. {
  132. case 1:x=HaeX(1,1);break;
  133. case 2:q=LaskeSini(x);printf("\n Sin(%3.2f) = %6.3f\n",x,q);break;
  134. case 3:w=LaskeKosini(x);printf("\n Cos(%3.2f) = %6.3f\n",x,w);break;
  135. case 4:z=LaskeEx(x);printf("\n e^%3.2f = %6.3f\n",x,z);break;
  136. case 5:y=LaskeNelioJuuri(x);printf("\n Neli\224juuri (%3.2f) = %6.3f\n",x,y);break;
  137. case 6:return 0; break;
  138. }
  139. }
  140. while (1==1);
  141.  
  142. }
  143.  
  144. double HaeX(double alaraja, double ylaraja)
  145. {
  146. float e=0;
  147. alaraja = -1.58;
  148. ylaraja = 1.58;
  149. do
  150. {
  151. printf("\nAnna x:n arvo (v\204lill\204 -1.57..+1.57) ");
  152. scanf("%f", &e);
  153. }
  154. while(e<alaraja || e >ylaraja);
  155.  
  156. return e;
  157. }
  158.  
  159.  
  160.  
  161. int main(void)
  162. {
  163. printf("\n KOTITEHT\216V\216 2\n");
  164. TeeValinta();
  165.  
  166. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement