Advertisement
Guest User

Untitled

a guest
Dec 11th, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.43 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <iomanip>
  4. #include <vector>
  5. #include <fstream>
  6.  
  7. using namespace std;
  8.  
  9. class Program
  10. {
  11. public: float SumaSzeregu(float X, float Eps,string what="Suma")
  12. {
  13. float Suma = 0.0F;
  14. float W = 1.0f;
  15. int k = 0;
  16. do
  17. {
  18. k++;
  19. W=W*((X+1)/k);
  20. Suma = Suma + W;
  21.  
  22. } while (abs(W) > Eps);
  23. if(what=="iteracje")
  24. return k;
  25. else
  26. return Suma;
  27. }
  28. };
  29.  
  30. int main()
  31. {
  32. Program program;
  33. char wybor_opcji;
  34. cout<<"Program umozliwa obliczanie wartosciu szeregu w zadanym punkcie X oraz tablicowanie zmian wartosci szeregu w zadanym przedziale [Xd,Xg] z krokiem h"<<endl;
  35. do{
  36. cout<<"Menu programu: "<<endl;
  37. cout<<"A. Obliczanie wartosci szeregu"<<endl;
  38. cout<<"B. Tablicowanie zmian wartosci szeregu" <<endl;
  39. cout<<"X. Zakonczenie programu"<<endl;
  40. cin>>wybor_opcji;
  41. wybor_opcji=toupper(wybor_opcji);
  42. switch(wybor_opcji){
  43. case 'A':
  44. {float X, eps,SumaSzereguPotegowego;
  45. int licznik_zsumowanych_wyrazow;
  46. string s;
  47. cout<<"Podaj wartosc zmienej niezaleznej X"<<endl;
  48. cin>>X;
  49. while(!cin.good()){
  50. cin.clear();
  51. cin.ignore(INT_MAX, '\n');
  52. cout<<"ERROR W zapisie wartosci X wystapil niedozwolony znak!!!"<<endl;
  53. cout<<"Podaj ponowanie wartosc zmienej X"<<endl;
  54. cin>>X;
  55. }
  56. do{
  57. cout<<"Podaj wartosc zmienej eps"<<endl;
  58. cin.clear();
  59. cin.ignore(INT_MAX, '\n');
  60. cin>>eps;
  61. while(!cin.good()){
  62. cin.clear();
  63. cin.ignore(INT_MAX, '\n');
  64. cout<<"ERROR W zapisie wartosci Eps wystapil niedozwolony znak!!!"<<endl;
  65. cout<<"Podaj ponowanie wartosc zmienej eps"<<endl;
  66. cin>>eps;
  67. }
  68. if((eps<=0 or eps>=1) and cin.good()){
  69. cout<<"ERROR dokladnosc obliczen musi spelniac warunek 0.0<Eps<1.0"<<endl;
  70. }
  71. }while(eps<=0 or eps>=1);
  72. SumaSzereguPotegowego=program.SumaSzeregu(X,eps);
  73. cout<<"Suma szeregu potegowego dla eps: "<<eps<<" wynosi: "<<SumaSzereguPotegowego<<endl<<endl;
  74. cout<<"Aby kontynulowac wcisnij enter..."<<endl;
  75. cin.clear();
  76. cin.ignore(INT_MAX, '\n');
  77. getline(std::cin, s);
  78. cout<<endl<<endl;}
  79. break;
  80. case 'B':
  81. float Xd,Xg,h,eps;
  82. vector <float> sumy,wartosci;
  83. cout<<"Podaj wartosc dolnej granicy przedzialu Xd"<<endl;
  84. cin>>Xd;
  85. while(!cin.good()){
  86. cin.clear();
  87. cin.ignore(INT_MAX, '\n');
  88. cout<<"ERROR W zapisie wartosci Xd wystapil niedozwolony znak!!!"<<endl;
  89. cout<<"Podaj ponowanie wartosc dolnej granicy Xd"<<endl;
  90. cin>>Xd;
  91. }
  92. do{
  93. cout<<"Podaj wartosc gornej granicy przedzialu Xg"<<endl;
  94. cin>>Xg;
  95. while(!cin.good()){
  96. cin.clear();
  97. cin.ignore(INT_MAX, '\n');
  98. cout<<"ERROR W zapisie wartosci Xd wystapil niedozwolony znak!!!"<<endl;
  99. cout<<"Podaj ponowanie wartosc gornej granicy Xg"<<endl;
  100. cin>>Xg;
  101. }
  102. if(Xg<=Xd){
  103. cout<<"Podales wartosc gornej granicy Xg mniejsza lub rowna wartosci dolnej Xd";
  104. }
  105. } while(Xg<=Xd);
  106. do{
  107. cout<<"Podaj wartosc kroku h"<<endl;
  108. cin>>h;
  109. while(!cin.good()){
  110. cin.clear();
  111. cin.ignore(INT_MAX, '\n');
  112. cout<<"ERROR W zapisie wartosci kroku h wystapil niedozwolony znak!!!"<<endl;
  113. cout<<"Podaj ponowanie wartosc kroku h"<<endl;
  114. cin>>h;
  115. }
  116. if(h<=0 or h>=1){
  117. cout<<"ERROR Krok musi spelniac warunek 0.0<h<1.0"<<endl;
  118. }
  119. if(h>(Xg-Xd)/2){
  120. cout<<"ERROR Krok musi spelniac warunek h<(Xg-Xd)/2"<<endl;
  121. }
  122. } while(h<=0 or h>(Xg-Xd) or h>=1);
  123. do{
  124. cout<<"Podaj wartosc zmienej eps"<<endl;
  125. cin.clear();
  126. cin.ignore(INT_MAX, '\n');
  127. cin>>eps;
  128. while(!cin.good()){
  129. cin.clear();
  130. cin.ignore(INT_MAX, '\n');
  131. cout<<"ERROR W zapisie wartosci Eps wystapil niedozwolony znak!!!"<<endl;
  132. cout<<"Podaj ponowanie wartosc zmienej eps"<<endl;
  133. cin>>eps;
  134. }
  135. if((eps<=0 or eps>=1) and cin.good()){
  136. cout<<"ERROR dokladnosc obliczen musi spelniac warunek 0.0<Eps<1.0"<<endl;
  137. }
  138. }while(eps<=0 or eps>=1);
  139. cout<<left<<setw(10)<<"Wartosc zmienej X";
  140. cout<<right<<setw(30)<<"Wartosc szeregu potegowego";
  141. cout<<right<<setw(40)<<"Ilosc zsumowanych wyrazow ciagu"<<endl;
  142. cout<<left<<setw(10)<<"-----------------";
  143. cout<<right<<setw(30)<<"--------------------------";
  144. cout<<right<<setw(40)<<"-------------------------------"<<endl;
  145. bool petla_osiagnela_Xg = false;
  146. for(float i=Xd; i<Xg; i+=h){
  147. wartosci.push_back(i);
  148. cout<<left<<setw(30)<<wartosci[wartosci.size()-1];
  149. sumy.push_back(program.SumaSzeregu(i,eps));
  150. cout<<left<<setw(30)<<sumy[sumy.size()-1];
  151. cout<<right<<setw(15)<<program.SumaSzeregu(i,eps,"iteracje")<<endl;
  152. if(i==Xg){
  153. petla_osiagnela_Xg==true;
  154. }
  155. }
  156. if(!(petla_osiagnela_Xg)){
  157. wartosci.push_back(Xg);
  158. cout<<left<<setw(30)<<wartosci[wartosci.size()-1];
  159. sumy.push_back(program.SumaSzeregu(Xg,eps));
  160. cout<<left<<setw(30)<<sumy[sumy.size()-1];
  161. cout<<right<<setw(15)<<program.SumaSzeregu(Xg,eps,"iteracje")<<endl;
  162. }
  163. char wybor_tabelka;
  164. do{
  165. cout<<endl<<endl;
  166. cout<<"Aby kontynulowac wcisnij 'X'"<<endl;
  167. cout<<"Aby zobaczyc tabelke z wynikami w roznych formatach wcisnij 'T'"<<endl;
  168. cout<<"Aby zapisac tabelke z wynikami do pliku wcisnij 'Z'"<<endl;
  169. cin>>wybor_tabelka;
  170. wybor_tabelka=toupper(wybor_tabelka);
  171. switch(wybor_tabelka){
  172. default:
  173. cout<<endl<<endl;
  174. cout<<"ERROR wpisano bledny klawisz!!!"<<endl;
  175. break;
  176. case 'X':
  177. cout<<endl<<endl;
  178. break;
  179. case 'T':
  180. cout<<endl<<endl;
  181. cout<<left<<setw(10)<<"Wartosc zmienej X";
  182. cout<<right<<setw(30)<<"Wartosc szeregu potegowego";
  183. cout<<right<<setw(30)<<"Wartosc szeregu potegowego";
  184. cout<<right<<setw(30)<<"Wartosc szeregu potegowego";
  185. cout<<right<<setw(30)<<"Wartosc szeregu potegowego"<<endl;
  186. cout<<right<<setw(45)<<"w formacie domyslnym";
  187. cout<<right<<setw(30)<<"w formacie wykladniczym";
  188. cout<<right<<setw(32)<<"w formacie stalopozycyjnym";
  189. cout<<right<<setw(25)<<"w formacie zwiezlym"<<endl;
  190. for(int i=0; i<sumy.size(); i++){
  191. cout<<setprecision(6);
  192. cout<<left<<setw(10)<<wartosci[i];
  193. cout<<right<<setw(30)<<sumy[i];
  194. cout<<setprecision(8);
  195. cout<<right<<setw(30)<<scientific<<sumy[i];
  196. cout.unsetf(ios::scientific);
  197. cout<<right<<setw(30)<<showpoint<<sumy[i]<<endl;
  198. cout.unsetf(ios::showpoint);
  199. }
  200. break;
  201.  
  202. case 'Z':
  203. fstream plik;
  204. plik.open("plik.txt", ios::out | ios::trunc);
  205. if(plik.good() == true)
  206. {
  207. plik<<left<<setw(10)<<"Wartosc zmienej X";
  208. plik<<right<<setw(30)<<"Wartosc szeregu potegowego";
  209. plik<<right<<setw(30)<<"Wartosc szeregu potegowego";
  210. plik<<right<<setw(30)<<"Wartosc szeregu potegowego";
  211. plik<<right<<setw(30)<<"Wartosc szeregu potegowego"<<endl;
  212. plik<<right<<setw(45)<<"w formacie domyslnym";
  213. plik<<right<<setw(30)<<"w formacie wykladniczym";
  214. plik<<right<<setw(32)<<"w formacie stalopozycyjnym";
  215. plik<<right<<setw(25)<<"w formacie zwiezlym"<<endl;
  216. for(int i=0; i<sumy.size(); i++){
  217. plik<<setprecision(6);
  218. plik<<left<<setw(10)<<wartosci[i];
  219. plik<<right<<setw(30)<<sumy[i];
  220. plik<<setprecision(8);
  221. plik<<right<<setw(30)<<scientific<<sumy[i];
  222. plik.unsetf(ios::scientific);
  223. plik<<right<<setw(30)<<showpoint<<sumy[i]<<endl;
  224. plik.unsetf(ios::showpoint);
  225.  
  226. }
  227. plik.close();
  228. cout<<"Plik zostal zapisany!!!"<<endl;
  229. }
  230. break;
  231. }
  232.  
  233. }while (wybor_tabelka!='X');
  234. }
  235.  
  236. }while (wybor_opcji!='X' and wybor_opcji!='x');
  237. cout<<endl<<endl;
  238. cout<<"Autor:"<<endl;
  239. cout<<"Jan"<<endl;
  240. cout<<"Pedziwiatr"<<endl;
  241. cout<<"Nr indeksu 289021"<<endl;
  242. return 0;
  243. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement