Advertisement
Guest User

fisica exp. sou um genio

a guest
Sep 19th, 2019
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.72 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5.  
  6. void somas(float *v, int n, int ns, short int t, float *r, float *dr){
  7. int c;
  8. r[0] = 0; dr[0] = 0;
  9.  
  10. for (c = 0; c < ns; c++)
  11. r[0] += v[2*c];
  12. for (c = ns; c < n; c++)
  13. r[0] -= v[2*c];
  14.  
  15. if (t == 1)
  16. for (c = 0; c < n; c++)
  17. dr[0] += v[2*c + 1];
  18. if (t == 2){
  19. for (c = 0; c < n; c++)
  20. dr[0] += v[2*c + 1]*v[2*c + 1];
  21. dr[0] = sqrt(dr[0]);
  22. }
  23. return;
  24. }
  25.  
  26. void multiplic(float *v, float *r, float *dr, int n, int nd, short int t){
  27. int c;
  28. r[0] = 1; dr[0] = 0;
  29.  
  30. for (c = 0; c < nd; c++)
  31. r[0] *= v[2*c];
  32. for (c = nd; c < n; c++)
  33. r[0] /= v[2*c];
  34.  
  35. if(t == 1)
  36. for (c = 0; c < n; c++)
  37. dr[0] += v[2*c +1]/v[2*c];
  38. if(t == 2){
  39. for (c = 0; c < n; c++)
  40. dr[0] += (v[2*c +1]/v[2*c])*(v[2*c +1]/v[2*c]);
  41. dr[0] = sqrt(dr[0]);
  42. }
  43. dr[0] *= r[0];
  44.  
  45. return;
  46. }
  47.  
  48. void trat(float *v, float *r, float *dr, int n, short int t){
  49. int c;
  50. r[0] = 0; dr[0] = 0;
  51.  
  52. for (c = 0; c < n; c++)
  53. r[0] += v[c];
  54. r[0] /= n;
  55.  
  56. if (t == 1){
  57. for (c = 0; c < n; c++){
  58. if (v[c] < r[0])
  59. dr[0] += r[0] - v[c];
  60. if (v[c] > r[0])
  61. dr[0] += v[c] - r[0];
  62. }
  63. }
  64.  
  65. if (t == 2){
  66. for (c = 0; c < n; c++)
  67. dr[0] += (v[c] - r[0])*(v[c] - r[0]);
  68. dr[0] = sqrt(dr[0]);
  69. }
  70.  
  71. dr[0] /= n;
  72. return;
  73. }
  74.  
  75. int main(){
  76. float r, dr, *v;
  77. int n, c, nn;
  78. short int t=0, T=0;
  79.  
  80. setlocale(LC_ALL, "");
  81. while (T != 1 && T != 2 && T != 3){
  82. cout<<"O que dezejas fazer?\n1 - tratamento de dados\n2 - somas\n3 - multiplicações\n";
  83. cin>>T;
  84. if (T != 1 && T != 2 && T != 3)
  85. cout<<"Insira um valor válido"<<endl;
  86. }
  87.  
  88. cout<<endl;
  89. while (t != 1 && t != 2){
  90. cout<<"Desejas utilizar o desvio máximo (1) ou o desvio padrão (2)?\n";
  91. cin>>t;
  92. if (t != 1 && t != 2)
  93. cout<<"Insira um valor válido"<<endl;
  94. }
  95.  
  96. cout<<endl<<"Quantos valores diferentes são?"<<endl;
  97. cin>>n;
  98.  
  99.  
  100. if (T == 1){
  101. v = new float [n];
  102.  
  103. for (c = 0; c < n; c++){
  104. cout<<"Qual é o "<<c+1<<"° valor?"<<endl;
  105. cin>>v[c];
  106. }
  107. trat(v, &r, &dr, n, t);
  108.  
  109. cout<<endl<<endl<<"O valor obtido do tratamento de dados foi: ";
  110. cout<<r<<" +- "<<dr<<endl<<endl;
  111. }
  112. else{
  113. v = new float[2*n];
  114.  
  115. if (T == 2){
  116. cout<<"Quantos números são positivos?"<<endl;
  117. cin>>nn;
  118. cout<<endl<<"Digite primeiro todos os números positivos e, em seguida, os negativos:"<<endl;
  119. for (c = 0; c < n; c++){
  120. cout<<"Qual é o "<<c+1<<"° valor?"<<endl;
  121. cin>>v[2*c];
  122. cout<<"E a sua incerteza?"<<endl;
  123. cin>>v[2*c + 1];
  124. }
  125. somas(v, n, nn, t, &r, &dr);
  126. }
  127. if (T == 3){
  128. cout<<"Quantos números serão multiplicados?"<<endl;
  129. cin>>nn;
  130. cout<<endl<<"Digite primeiro todos os valores a serem multiplicados e, em seguida, os a serem divididos:"<<endl;
  131. for (c = 0; c < n; c++){
  132. cout<<"Qual é o "<<c+1<<"° valor?"<<endl;
  133. cin>>v[2*c];
  134. cout<<"E a sua incerteza?"<<endl;
  135. cin>>v[2*c + 1];
  136. }
  137. multiplic(v, &r, &dr, n, nn, t);
  138. }
  139.  
  140. cout<<endl<<endl<<"O valor obtido com a operação foi: ";
  141. cout<<r<<" +- "<<dr;
  142. }
  143.  
  144.  
  145. delete v;
  146. return 0;
  147. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement