Advertisement
Guest User

Untitled

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