Advertisement
Guest User

Untitled

a guest
Mar 28th, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 18.18 KB | None | 0 0
  1. // Uwaga z góry zaznaczam ze ten program nie jest przystosowany do obslugi liczb ujemnych
  2.  
  3.  
  4. #include <iostream>
  5. #include <cmath>
  6. #include <sstream>
  7. #include <string>
  8. using namespace std;
  9.  
  10.  
  11.  
  12.  
  13. string to_string(double i)          //Funkcja, która jest używana w dalszej części programu do konwertowania danych na typ string
  14. {
  15.     stringstream ss;
  16.     ss << i;
  17.     return ss.str();
  18. }
  19.  
  20. void dodaj(string liczba1,string liczba2)       //Funkcja dodaj, która przyjmuje 2 liczby jako parametry typu string (ciągi liczbowe)
  21. {
  22. double rozmiar1=liczba1.length();   //rozmiar liczby 1
  23. double rozmiar2=liczba2.length();   //rozmiar liczby 2
  24. double liczba1suma=0;               //zmienna przechowuje sume liczb, ktore sa obliczane w ponizszej funkcji na zasadzie liczba1suma= wartosc jednosci*10^0 + wartosc dziesiatek^1 + wartosc setek*10^2 itd. i skladaja sie na wartosc liczby1
  25. double liczba2suma=0;               // jw. wartosc liczby2
  26. double aktualnaliczba1=0;           //przechowuje wartosc liczby przetwarzanej w aktualnym obiegu petli (konwersja z ASCII na double dlatego stosuje pomniejszenie o 48 zeby dzialac na cyfrach 0-9
  27. double aktualnaliczba2=0;           //jw. wartosc liczby2  
  28. double dzielnik1=1;                 //liczba przetwarzana w petli jest mnozona przez 1 do momentu wystapienia kropki, po wystapieniu kropki dzielnik jest dzielony przez 10 i wynosi 0.1. Pomnozenie kolejnej wartosci przez 0.1 daje
  29.                                     //wartosci dziesietne pozniej dzielnik jest kolejny raz dzielony przez 10 i otrzymujemy czesci setne itd.
  30. double dzielnik2=1;                 //j.w wartosc liczby2
  31. double aktualnawartosc=0;           //przechowuje wartosc aktualnej liczby * dzielnik
  32. double aktualnawartosc2=0;          //jw. wartosc liczby2
  33. double rozmiarliczby1=0;            //przechowuje rozmiar liczby1 na zasadzie ilosc znakow od poczatku do kropki (jesli kropka wystepuje, bo jesli nie to od poczatku do konca)
  34. double rozmiarliczby2=0;            //jw. wartosc liczby2
  35.  
  36.  
  37. for(int i=0;i<rozmiar1;i++)
  38. {
  39. if( (liczba1[i]=='0') || (liczba1[i]=='1') || (liczba1[i]=='2') || (liczba1[i]=='3') || (liczba1[i]=='4') || (liczba1[i]=='5') || (liczba1[i]=='6') || (liczba1[i]=='7') || (liczba1[i]=='8') || (liczba1[i]=='9') )
  40. {rozmiarliczby1+=1;}
  41. else {break;}
  42. } //<-- powyzsza petla oblicza wartosc zmiennej rozmiarliczby1 na zasadzie od poczatku liczby do kropki. Pojawienie sie kropki lub znaku innego niz cyfry od 0 do 9 powoduje wyjscie z petli
  43.  
  44.  
  45. for(int i=0;i<rozmiar1;i++) //petla od 0 do liczby okreslajacej rozmiar liczby 1 ze skokiem co 1
  46. {
  47. if( (liczba1[i]=='0') || (liczba1[i]=='1') || (liczba1[i]=='2') || (liczba1[i]=='3') || (liczba1[i]=='4') || (liczba1[i]=='5') || (liczba1[i]=='6') || (liczba1[i]=='7') || (liczba1[i]=='8') || (liczba1[i]=='9') )
  48. {
  49. //<--warunek sprawdzajacy czy wprowadzone dane sa liczba, jesli tak wykonuje sie ponizsze dzialanie
  50. aktualnaliczba1=(liczba1[i]-48);
  51. aktualnawartosc=aktualnaliczba1*dzielnik1;
  52. if(dzielnik1>=1){aktualnawartosc*=pow(10,rozmiarliczby1-i-1);} //dopoki dzielnik1 jest nie mniejszy niz 1 akutalnawartosc zostaje pomnozone przez 10 do potegi ilosc liczb do przecinka-1-numer powtorzenia petli co daje liczbe jednosci, dziesiatek, setek itd.
  53.  
  54. liczba1suma+=aktualnawartosc;   //liczba2suma z kazdym przejsciem petli powiekszana jest o aktualnawartosc
  55. if(dzielnik1<1){dzielnik1=dzielnik1/10;}    //jesli dzielnik jest mniejszy od 1 czyli w wyrazeniu wystapila juz kropka dziesietna to dzielnik jest dzielony przezz 10 przez co sa otzymywane w kolejnych przejsciach petli czesci dziesietne, setne, tysieczne itd.
  56.  
  57.  
  58. }
  59. else if(liczba1[i]=='.')    //jesli warunek z linii 38 nie zostal spelniony, sprawdzamy czy aktualnie sprawdzany znak to kropka. Jesli tak to dzielnik jest dzielony przez 10 co uruchamia liczenie kolejnych czesci po kropce (setne, tysieczne itd.)
  60. {
  61. dzielnik1=dzielnik1/10;
  62. }
  63. else {cout<<"Wprowadzone dane to nie liczba!";break;}   //jesli warunki z linii 38 i 58 nie zostaly spelnione to znaczy ze wpisany znak nie jest cyfra !!! WYJĄTEK minus nie jest obsługiwany przez ten program i uznajemy ze wprowadzone dane nie sa poprawne
  64.  
  65. }
  66.  
  67.  
  68.  
  69. //************************************************************************************************ LICZBA 2 *******************************************************************************************************
  70.  
  71. /*
  72. UWAGA!          UWAGA!          UWAGA!          UWAGA!          UWAGA!          UWAGA!          UWAGA!          UWAGA!         
  73. Od tej pory powyższy kod zostanie użyty jeszcze wiele razy więc nie bede opisywal go ponownie
  74. niektóre zmienne są bardzo podobne np zamiast rozmiarliczby1 to rozmiarliczby2 i oznaczaja dokladnie to samo tylko dla liczby 2 wiec nie bede ich opisywal
  75. Niektóre zmiany są bardzo proste i widoczne więc nie będe ich opisywał
  76. Niektóre fragmenty poniższego kodu opisze aby wyjasnic ich znaczenie
  77. Program nie przewiduje podawania wartosci ujemnych
  78. UWAGA!          UWAGA!          UWAGA!          UWAGA!          UWAGA!          UWAGA!          UWAGA!          UWAGA!
  79. */
  80.  
  81.  
  82. for(int j=0;j<rozmiar2;j++)
  83. {
  84. if( (liczba2[j]=='0') || (liczba2[j]=='1') || (liczba2[j]=='2') || (liczba2[j]=='3') || (liczba2[j]=='4') || (liczba2[j]=='5') || (liczba2[j]=='6') || (liczba2[j]=='7') || (liczba2[j]=='8') || (liczba2[j]=='9') )
  85. {rozmiarliczby2+=1;}
  86. else {break;}
  87. }
  88. for(int j=0;j<rozmiar2;j++)
  89. {
  90. if( (liczba2[j]=='0') || (liczba2[j]=='1') || (liczba2[j]=='2') || (liczba2[j]=='3') || (liczba2[j]=='4') || (liczba2[j]=='5') || (liczba2[j]=='6') || (liczba2[j]=='7') || (liczba2[j]=='8') || (liczba2[j]=='9') )
  91. {
  92.  
  93. aktualnaliczba2=(liczba2[j]-48);
  94.  
  95. aktualnawartosc2=aktualnaliczba2*dzielnik2;
  96. if(dzielnik2>=1){aktualnawartosc2*=pow(10,rozmiarliczby2-j-1);}
  97.  
  98. liczba2suma+=aktualnawartosc2;
  99. if(dzielnik2<1){dzielnik2=dzielnik2/10;}
  100.  
  101. }
  102. else if(liczba2[j]=='.')
  103. {
  104. dzielnik2=dzielnik2/10;
  105. }
  106. else {cout<<"Wprowadzone dane to nie liczba!";break;}
  107.  
  108. }
  109.  
  110.    
  111.     double wynikDodawania=liczba1suma+liczba2suma;  //Obliczanie wyniku dodawania liczby 1 i liczby2 przekonwertowanych z typu string na typ double
  112.    
  113.     string wynikd=to_string(wynikDodawania);    //Konwertowanie wyniku obliczonego na zmiennych typu double na typ string
  114.    
  115.  
  116. cout<<"DODAWANIE       "<<liczba1suma<<" + "<<liczba2suma<<" = ";   //wypisanie skladnikow i wyniku dzialania
  117. for(int k=0; k<wynikd.length();k++)     //wypisanie wyniku dzialania w petli element po elemencie
  118. {
  119. cout<<wynikd[k];   
  120. }
  121. cout<<endl;
  122.  
  123.    
  124.    
  125.    
  126. }
  127.  
  128.  
  129. void odejmij(string liczba1,string liczba2)
  130. {
  131. double rozmiar1=liczba1.length();  
  132. double rozmiar2=liczba2.length();  
  133. double liczba1suma=0;
  134. double liczba2suma=0;
  135. double aktualnaliczba1=0;
  136. double aktualnaliczba2=0;
  137. double dzielnik1=1;
  138. double dzielnik2=1;
  139. double aktualnawartosc=0;
  140. double aktualnawartosc2=0;
  141. double rozmiarliczby1=0;
  142. double rozmiarliczby2=0;
  143.  
  144.  
  145. for(int i=0;i<rozmiar1;i++)
  146. {
  147. if( (liczba1[i]=='0') || (liczba1[i]=='1') || (liczba1[i]=='2') || (liczba1[i]=='3') || (liczba1[i]=='4') || (liczba1[i]=='5') || (liczba1[i]=='6') || (liczba1[i]=='7') || (liczba1[i]=='8') || (liczba1[i]=='9') )
  148. {rozmiarliczby1+=1;}
  149. else {break;}
  150. }
  151. for(int i=0;i<rozmiar1;i++)
  152. {
  153. if( (liczba1[i]=='0') || (liczba1[i]=='1') || (liczba1[i]=='2') || (liczba1[i]=='3') || (liczba1[i]=='4') || (liczba1[i]=='5') || (liczba1[i]=='6') || (liczba1[i]=='7') || (liczba1[i]=='8') || (liczba1[i]=='9') )
  154. {
  155.  
  156. aktualnaliczba1=(liczba1[i]-48);
  157.  
  158. aktualnawartosc=aktualnaliczba1*dzielnik1;
  159. if(dzielnik1>=1){aktualnawartosc*=pow(10,rozmiarliczby1-i-1);}
  160.  
  161. liczba1suma+=aktualnawartosc;
  162. if(dzielnik1<1){dzielnik1=dzielnik1/10;}
  163.  
  164.  
  165. }
  166. else if(liczba1[i]=='.')
  167. {
  168. dzielnik1=dzielnik1/10;
  169. }
  170. else {cout<<"Wprowadzone dane to nie liczba!";break;}
  171.  
  172. }
  173.  
  174.  
  175. //************************************************************************************************ LICZBA 2 *******************************************************************************************************
  176.  
  177. for(int j=0;j<rozmiar2;j++)
  178. {
  179. if( (liczba2[j]=='0') || (liczba2[j]=='1') || (liczba2[j]=='2') || (liczba2[j]=='3') || (liczba2[j]=='4') || (liczba2[j]=='5') || (liczba2[j]=='6') || (liczba2[j]=='7') || (liczba2[j]=='8') || (liczba2[j]=='9') )
  180. {rozmiarliczby2+=1;}
  181. else {break;}
  182. }
  183. for(int j=0;j<rozmiar2;j++)
  184. {
  185. if( (liczba2[j]=='0') || (liczba2[j]=='1') || (liczba2[j]=='2') || (liczba2[j]=='3') || (liczba2[j]=='4') || (liczba2[j]=='5') || (liczba2[j]=='6') || (liczba2[j]=='7') || (liczba2[j]=='8') || (liczba2[j]=='9') )
  186. {
  187.  
  188. aktualnaliczba2=(liczba2[j]-48);
  189.  
  190. aktualnawartosc2=aktualnaliczba2*dzielnik2;
  191. if(dzielnik2>=1){aktualnawartosc2*=pow(10,rozmiarliczby2-j-1);}
  192.  
  193. liczba2suma+=aktualnawartosc2;
  194. if(dzielnik2<1){dzielnik2=dzielnik2/10;}
  195.  
  196. }
  197. else if(liczba2[j]=='.')
  198. {
  199. dzielnik2=dzielnik2/10;
  200. }
  201. else {cout<<"Wprowadzone dane to nie liczba!";break;}
  202.  
  203. }
  204.    
  205.    
  206.    
  207.     double wynikOdejmowania=liczba1suma-liczba2suma;    //Obliczanie wyniku odejmowania liczby 1 i liczby2 przekonwertowanych z typu string na typ double
  208.    
  209.     string wynikd=to_string(wynikOdejmowania);  //Konwertowanie wyniku obliczonego na zmiennych typu double na typ string
  210.    
  211.  
  212. cout<<"ODEJMOWANIE     "<<liczba1suma<<" - "<<liczba2suma<<" = ";       //wypisanie skladnikow i wyniku dzialania
  213. for(int k=0; k<wynikd.length();k++)     //wypisanie wyniku dzialania w petli element po elemencie
  214. {
  215. cout<<wynikd[k];   
  216. }
  217. cout<<endl;
  218.  
  219.    
  220.    
  221.    
  222. }
  223.  
  224.  
  225.  
  226. void porownaj(string liczba1,string liczba2)
  227. {
  228. double rozmiar1=liczba1.length();  
  229. double rozmiar2=liczba2.length();  
  230. double liczba1suma=0;
  231. double liczba2suma=0;
  232. double aktualnaliczba1=0;
  233. double aktualnaliczba2=0;
  234. double dzielnik1=1;
  235. double dzielnik2=1;
  236. double aktualnawartosc=0;
  237. double aktualnawartosc2=0;
  238. double rozmiarliczby1=0;
  239. double rozmiarliczby2=0;
  240.  
  241.  
  242. for(int i=0;i<rozmiar1;i++)
  243. {
  244. if( (liczba1[i]=='0') || (liczba1[i]=='1') || (liczba1[i]=='2') || (liczba1[i]=='3') || (liczba1[i]=='4') || (liczba1[i]=='5') || (liczba1[i]=='6') || (liczba1[i]=='7') || (liczba1[i]=='8') || (liczba1[i]=='9') )
  245. {rozmiarliczby1+=1;}
  246. else {break;}
  247. }
  248. for(int i=0;i<rozmiar1;i++)
  249. {
  250. if( (liczba1[i]=='0') || (liczba1[i]=='1') || (liczba1[i]=='2') || (liczba1[i]=='3') || (liczba1[i]=='4') || (liczba1[i]=='5') || (liczba1[i]=='6') || (liczba1[i]=='7') || (liczba1[i]=='8') || (liczba1[i]=='9') )
  251. {
  252.  
  253. aktualnaliczba1=(liczba1[i]-48);
  254.  
  255. aktualnawartosc=aktualnaliczba1*dzielnik1;
  256. if(dzielnik1>=1){aktualnawartosc*=pow(10,rozmiarliczby1-i-1);}
  257.  
  258. liczba1suma+=aktualnawartosc;
  259. if(dzielnik1<1){dzielnik1=dzielnik1/10;}
  260.  
  261.  
  262. }
  263. else if(liczba1[i]=='.')
  264. {
  265. dzielnik1=dzielnik1/10;
  266. }
  267. else {cout<<"Wprowadzone dane to nie liczba!";break;}
  268.  
  269. }
  270.  
  271.  
  272.  
  273. //************************************************************************************************ LICZBA 2 *******************************************************************************************************
  274.  
  275. for(int j=0;j<rozmiar2;j++)
  276. {
  277. if( (liczba2[j]=='0') || (liczba2[j]=='1') || (liczba2[j]=='2') || (liczba2[j]=='3') || (liczba2[j]=='4') || (liczba2[j]=='5') || (liczba2[j]=='6') || (liczba2[j]=='7') || (liczba2[j]=='8') || (liczba2[j]=='9') )
  278. {rozmiarliczby2+=1;}
  279. else {break;}
  280. }
  281. for(int j=0;j<rozmiar2;j++)
  282. {
  283. if( (liczba2[j]=='0') || (liczba2[j]=='1') || (liczba2[j]=='2') || (liczba2[j]=='3') || (liczba2[j]=='4') || (liczba2[j]=='5') || (liczba2[j]=='6') || (liczba2[j]=='7') || (liczba2[j]=='8') || (liczba2[j]=='9') )
  284. {
  285.  
  286. aktualnaliczba2=(liczba2[j]-48);
  287.  
  288. aktualnawartosc2=aktualnaliczba2*dzielnik2;
  289. if(dzielnik2>=1){aktualnawartosc2*=pow(10,rozmiarliczby2-j-1);}
  290.  
  291. liczba2suma+=aktualnawartosc2;
  292. if(dzielnik2<1){dzielnik2=dzielnik2/10;}
  293.  
  294. }
  295. else if(liczba2[j]=='.')
  296. {
  297. dzielnik2=dzielnik2/10;
  298. }
  299. else {cout<<"Wprowadzone dane to nie liczba!";break;}
  300.  
  301. }
  302.  
  303.     string wynikPorownania;
  304.  
  305.     if(liczba1suma<liczba2suma){wynikPorownania=" < ";}     //Sprawdza wynik porownania i wypisuje odpowiedni znak
  306.     if(liczba1suma>liczba2suma){wynikPorownania=" > ";}     //Sprawdza wynik porownania i wypisuje odpowiedni znak
  307.     if(liczba1suma==liczba2suma){wynikPorownania=" = ";}        //Sprawdza wynik porownania i wypisuje odpowiedni znak
  308.    
  309.  
  310. cout<<"POROWNANIE      "<<liczba1suma<<wynikPorownania<<liczba2suma<<endl;      //Wypisuje skladniki i wstawia pomiedzy nie odpowiedni znak
  311.  
  312.    
  313.    
  314. }
  315.  
  316.  
  317. void mnozenie(string liczba1,string liczba2)
  318. {
  319. double rozmiar1=liczba1.length();
  320. double rozmiar2=liczba2.length();
  321. double liczba1suma=0;
  322. double liczba2suma=0;
  323. double aktualnaliczba1=0;
  324. double aktualnaliczba2=0;
  325. double dzielnik1=1;
  326. double dzielnik2=1;
  327. double aktualnawartosc=0;
  328. double aktualnawartosc2=0;
  329. double rozmiarliczby1=0;
  330. double rozmiarliczby2=0;
  331.  
  332.  
  333. for(int i=0;i<rozmiar1;i++)
  334. {
  335. if( (liczba1[i]=='0') || (liczba1[i]=='1') || (liczba1[i]=='2') || (liczba1[i]=='3') || (liczba1[i]=='4') || (liczba1[i]=='5') || (liczba1[i]=='6') || (liczba1[i]=='7') || (liczba1[i]=='8') || (liczba1[i]=='9') )
  336. {rozmiarliczby1+=1;}
  337. else {break;}
  338. }
  339. for(int i=0;i<rozmiar1;i++)
  340. {
  341. if( (liczba1[i]=='0') || (liczba1[i]=='1') || (liczba1[i]=='2') || (liczba1[i]=='3') || (liczba1[i]=='4') || (liczba1[i]=='5') || (liczba1[i]=='6') || (liczba1[i]=='7') || (liczba1[i]=='8') || (liczba1[i]=='9') )
  342. {
  343.  
  344. aktualnaliczba1=(liczba1[i]-48);
  345.  
  346. aktualnawartosc=aktualnaliczba1*dzielnik1;
  347. if(dzielnik1>=1){aktualnawartosc*=pow(10,rozmiarliczby1-i-1);}
  348.  
  349. liczba1suma+=aktualnawartosc;
  350. if(dzielnik1<1){dzielnik1=dzielnik1/10;}
  351.  
  352.  
  353. }
  354. else if(liczba1[i]=='.')
  355. {
  356. dzielnik1=dzielnik1/10;
  357. }
  358. else {cout<<"Wprowadzone dane to nie liczba!";break;}
  359.  
  360. }
  361.  
  362.  
  363.  
  364. //************************************************************************************************ LICZBA 2 *******************************************************************************************************
  365.  
  366. for(int j=0;j<rozmiar2;j++)
  367. {
  368. if( (liczba2[j]=='0') || (liczba2[j]=='1') || (liczba2[j]=='2') || (liczba2[j]=='3') || (liczba2[j]=='4') || (liczba2[j]=='5') || (liczba2[j]=='6') || (liczba2[j]=='7') || (liczba2[j]=='8') || (liczba2[j]=='9') )
  369. {rozmiarliczby2+=1;}
  370. else {break;}
  371. }
  372. for(int j=0;j<rozmiar2;j++)
  373. {
  374. if( (liczba2[j]=='0') || (liczba2[j]=='1') || (liczba2[j]=='2') || (liczba2[j]=='3') || (liczba2[j]=='4') || (liczba2[j]=='5') || (liczba2[j]=='6') || (liczba2[j]=='7') || (liczba2[j]=='8') || (liczba2[j]=='9') )
  375. {
  376.  
  377. aktualnaliczba2=(liczba2[j]-48);
  378.  
  379. aktualnawartosc2=aktualnaliczba2*dzielnik2;
  380. if(dzielnik2>=1){aktualnawartosc2*=pow(10,rozmiarliczby2-j-1);}
  381.  
  382. liczba2suma+=aktualnawartosc2;
  383. if(dzielnik2<1){dzielnik2=dzielnik2/10;}
  384.  
  385. }
  386. else if(liczba2[j]=='.')
  387. {
  388. dzielnik2=dzielnik2/10;
  389. }
  390. else {cout<<"Wprowadzone dane to nie liczba!";break;}
  391.  
  392. }
  393.    
  394.     long liczba2sumalong=liczba2suma;       //Zamienia 2 liczbe na typ long (bez czesci dziesietnej) aby wykonać mnozenie przez liczbe calkowita
  395.    
  396.  
  397. cout<<"MNOZENIE        "<<liczba1suma<<" * "<<liczba2sumalong<<" = "<<liczba1suma*liczba2sumalong<<endl;    //wypisanie wyniku
  398.    
  399. }
  400.  
  401.  
  402. void dzielenie(string liczba1,string liczba2)
  403. {
  404. double rozmiar1=liczba1.length();  
  405. double rozmiar2=liczba2.length();  
  406. double liczba1suma=0;
  407. double liczba2suma=0;
  408. double aktualnaliczba1=0;
  409. double aktualnaliczba2=0;
  410. double dzielnik1=1;
  411. double dzielnik2=1;
  412. double aktualnawartosc=0;
  413. double aktualnawartosc2=0;
  414. double rozmiarliczby1=0;
  415. double rozmiarliczby2=0;
  416.  
  417.  
  418. for(int i=0;i<rozmiar1;i++)
  419. {
  420. if( (liczba1[i]=='0') || (liczba1[i]=='1') || (liczba1[i]=='2') || (liczba1[i]=='3') || (liczba1[i]=='4') || (liczba1[i]=='5') || (liczba1[i]=='6') || (liczba1[i]=='7') || (liczba1[i]=='8') || (liczba1[i]=='9') )
  421. {rozmiarliczby1+=1;}
  422. else {break;}
  423. }
  424. for(int i=0;i<rozmiar1;i++)
  425. {
  426. if( (liczba1[i]=='0') || (liczba1[i]=='1') || (liczba1[i]=='2') || (liczba1[i]=='3') || (liczba1[i]=='4') || (liczba1[i]=='5') || (liczba1[i]=='6') || (liczba1[i]=='7') || (liczba1[i]=='8') || (liczba1[i]=='9') )
  427. {
  428.  
  429. aktualnaliczba1=(liczba1[i]-48);
  430.  
  431. aktualnawartosc=aktualnaliczba1*dzielnik1;
  432. if(dzielnik1>=1){aktualnawartosc*=pow(10,rozmiarliczby1-i-1);}
  433.  
  434. liczba1suma+=aktualnawartosc;
  435. if(dzielnik1<1){dzielnik1=dzielnik1/10;}
  436.  
  437.  
  438. }
  439. else if(liczba1[i]=='.')
  440. {
  441. dzielnik1=dzielnik1/10;
  442. }
  443. else {cout<<"Wprowadzone dane to nie liczba!";break;}
  444.  
  445. }
  446.  
  447.  
  448.  
  449. //************************************************************************************************ LICZBA 2 *******************************************************************************************************
  450.  
  451. for(int j=0;j<rozmiar2;j++)
  452. {
  453. if( (liczba2[j]=='0') || (liczba2[j]=='1') || (liczba2[j]=='2') || (liczba2[j]=='3') || (liczba2[j]=='4') || (liczba2[j]=='5') || (liczba2[j]=='6') || (liczba2[j]=='7') || (liczba2[j]=='8') || (liczba2[j]=='9') )
  454. {rozmiarliczby2+=1;}
  455. else {break;}
  456. }
  457. for(int j=0;j<rozmiar2;j++)
  458. {
  459. if( (liczba2[j]=='0') || (liczba2[j]=='1') || (liczba2[j]=='2') || (liczba2[j]=='3') || (liczba2[j]=='4') || (liczba2[j]=='5') || (liczba2[j]=='6') || (liczba2[j]=='7') || (liczba2[j]=='8') || (liczba2[j]=='9') )
  460. {
  461.  
  462. aktualnaliczba2=(liczba2[j]-48);
  463.  
  464. aktualnawartosc2=aktualnaliczba2*dzielnik2;
  465. if(dzielnik2>=1){aktualnawartosc2*=pow(10,rozmiarliczby2-j-1);}
  466.  
  467. liczba2suma+=aktualnawartosc2;
  468. if(dzielnik2<1){dzielnik2=dzielnik2/10;}
  469.  
  470. }
  471. else if(liczba2[j]=='.')
  472. {
  473. dzielnik2=dzielnik2/10;
  474. }
  475. else {cout<<"Wprowadzone dane to nie liczba!";break;}
  476.  
  477. }
  478.  
  479.    
  480.    
  481.     long liczba2sumalong=liczba2suma;       //zamiana ddouble na longa zeby wykonac dzielenie calkowitoliczbowe
  482.     long liczba1sumalong=liczba1suma;       //zamiana ddouble na longa zeby wykonac dzielenie calkowitoliczbowe
  483.    
  484.  
  485.     long wynikDzielenia = liczba1sumalong/liczba2sumalong;      //Obliczanie wyniku dzielenia
  486.    
  487.    
  488.     string wynikd=to_string(wynikDzielenia);        //Konwertowanie wyniku dzielenia longow na string
  489.    
  490.  
  491. cout<<"DZIELENIE       "<<liczba1sumalong<<" / "<<liczba2sumalong<<" = ";   //Wyswietlenie skladnikow dzielenia
  492.  
  493. for(int l=0;l<wynikd.length();l++)      //Wyswietlenie wyniku dzielenia znak po znaku w petli
  494. {
  495. cout<<wynikd[l];   
  496. }
  497.    
  498.    
  499.    
  500. }
  501.  
  502.  
  503. int main()
  504. {
  505. string liczba1, liczba2;                //Deklaruje zmienne liczba1 i liczba2
  506.  
  507. cout<<"Podaj pierwsza liczbe: ";        //Prosi o wpisanie liczby 1
  508. cin>>liczba1;                           //Pobiera liczbe1 (jako string czyli ciąg znaków)
  509. cout<<"Podaj druga liczbe: ";           //Prosi o wpisanie liczby 2
  510. cin>>liczba2;                           //Pobiera liczbe2 (jako string czyli ciąg znaków)
  511. cout<<endl<<endl<<endl;                 //Wyswietla kilka linii odstepu aby poprawic czytelnosc
  512.  
  513.  
  514. dodaj(liczba1,liczba2);                 //wywolanie funkcji dodaj
  515. odejmij(liczba1,liczba2);               //wywolanie funkcji odejmij
  516. porownaj(liczba1,liczba2);              //wywolanie funkcji porownaj
  517. mnozenie(liczba1,liczba2);              //wywolanie funkcji mnozenie
  518. dzielenie(liczba1,liczba2);             //wywolanie funkcji dzielenie
  519.  
  520.  
  521.  
  522. return 0;
  523. }
  524.  
  525. // Jestem swiadomy, ze program nie jest wykonany optymalnie ale na chwile obecna potrafie zrobic to samodzielnie tylko w taki sposob :)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement