Guest User

Untitled

a guest
Nov 25th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.27 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. class kalkulator
  7. {
  8. private:
  9. int a[100],b[100],g[100],d,f,flag;
  10. char znak;
  11. public:
  12. kalkulator(){};
  13. kalkulator(char *c, char *e, char mznak)
  14. {
  15. flag=1;
  16. d=strlen(c);
  17. f=strlen(e);
  18. for(int i=0; i<d; i++)
  19. {
  20. a[i]=c[i]-&#039;0&#039;;
  21. }
  22. for(int i=0; i<f; i++)
  23. {
  24. b[i]=e[i]-&#039;0&#039;;
  25. }
  26. };
  27.  
  28.  
  29. void izednacuvanje()
  30. {
  31. int var;
  32. if(d>f) { var=f; for(int i=0; i<d-f;i++) { for(int j=var; j>0; j--){b[j]=b[j-1];} b[0]=0; var++;} }
  33. else { if(d<f) {var=d; for(int i=0; i<f-d;i++) { for(int j=var; j>0; j--){a[j]=a[j-1];} a[0]=0; var++;} }}
  34. }
  35.  
  36.  
  37. void rezultat ()
  38. {
  39.  
  40. int q=1;
  41. if(flag)
  42. cout<<endl<<"Rezultatot e: ";
  43. else
  44. cout<<endl<<"Rezultatot e: -";
  45. for(int i=0; i<f; i++)
  46. {
  47. if((g[i]==0)&&(i<q))
  48. {q++;}
  49. else
  50. cout<<g[i];
  51. }
  52. }
  53.  
  54. void rezmnozenje()
  55.  
  56. {
  57. int q=1,br1;
  58. if(d>f) br1=d*2-1; else br1=f*2-1;
  59. cout<<endl<<"Rezultatot od mnozenjeto: ";
  60. for(int i=0; i<=br1; i++)
  61. { // pechatenje na rezultatot
  62. if((g[i]==0)&&(i<q))
  63. {q++;}
  64. else
  65. cout<<g[i];
  66. } // pechatenje na rezultatot
  67. cout<<endl;
  68. }
  69. void odzimanje()
  70. {
  71. int br=0,j;
  72. while(a[br]==b[br]) {br++;}
  73. if(a[br]>b[br])
  74. {
  75. for(int i=d-1; i>=0; i--) // odzimanje na dva broja
  76. {
  77. cout<<"i= "<<i<<endl;
  78. if(a[i]<b[i])
  79. {
  80. j=i-1;
  81. if(j>=0)
  82. {
  83. while((a[j]==0) && (j>=0))
  84. { j--; }
  85. a[j]=a[j]-1; j++;
  86. if(j<i)
  87. {
  88. while(j<i)
  89. {
  90. a[j]=a[j]+9; j++;
  91. }
  92. }
  93. a[i]=a[i]+10;
  94. }
  95. }
  96. g[i]=a[i]-b[i];
  97. } // odzimanje na dva broja
  98. }
  99. else
  100. {
  101. flag=0;
  102. for(int i=f-1; i>=0; i--) // odzimanje na dva broja
  103. {
  104. if(b[i]<a[i])
  105. {
  106. j=i-1;
  107. if(j>=0)
  108. {
  109. while((b[j]==0) && (j>=0))
  110. { j--; }
  111. b[j]=b[j]-1; j++;
  112. if(j<i)
  113. {
  114. while(j<i)
  115. {
  116. b[j]=b[j]+9; j++;
  117. }
  118. }
  119. b[i]=b[i]+10;
  120. }
  121. }
  122. g[i]=b[i]-a[i];
  123. }
  124. }
  125. };
  126.  
  127.  
  128.  
  129. void sobiranje()
  130. {
  131. int r;
  132. if(d>f) r=d; else r=f;
  133. for(int i=r-1; i>=0; i--)
  134. {
  135. if(g[i]==1)
  136. g[i]=g[i]+a[i]+b[i];
  137. else
  138. g[i]=a[i]+b[i];
  139. if(i!=0)
  140. {
  141. if(g[i]>9)
  142. {
  143. g[i]=g[i]-10;
  144. g[i-1]=1;
  145. }
  146. }
  147. }
  148.  
  149. };
  150.  
  151.  
  152. void mnozenje()
  153. {
  154. int dolz;
  155.  
  156. if(d>f) dolz=d; else dolz=f;
  157.  
  158. int br,br1=dolz*2-1;
  159.  
  160. for(int i=0; i<=(br1); i++)
  161. g[i]=0;
  162.  
  163. for (int i=dolz-1; i>=0 ; i--)
  164. {
  165. br=br1;
  166. for(int j=dolz-1; j>=0; j--)
  167. {
  168. g[br]=g[br]+(b[i]*a[j]);
  169. br--;
  170. }
  171. br1--;
  172. }
  173.  
  174. br1=dolz*2-1;
  175.  
  176. int pom,mod;
  177.  
  178. for(int i=br1; i>=0; i-- )
  179. {
  180. pom=g[i]/10;
  181. g[i-1]=g[i-1]+pom;
  182. g[i]=g[i]%10;
  183. }
  184. };
  185.  
  186.  
  187. void izvrshi()
  188. {
  189. switch(znak)
  190. {
  191. case &#039;+&#039;: sobiranje(); rezultat(); break;
  192. case &#039;-&#039;: odzimanje(); rezultat(); break;
  193. case &#039;*&#039;: mnozenje(); rezmnozenje(); break;
  194. default: cout<<"Pogreshen znak "<<endl; break;
  195. }
  196. }
  197. };
  198. int main()
  199. {
  200. kalkulator k;
  201. char c[100], e[100], mznak;
  202. cout<<"Nachin na vnesuvanje: "<<endl;
  203. cin>>c;
  204. cin>>e;
  205. cin>>mznak;
  206. k(c,e, mznak);
  207. k.izvrshi();
  208. return 0;
  209. }
Add Comment
Please, Sign In to add comment