Advertisement
Guest User

Untitled

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