Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- using namespace std;
- class kalkulator
- {
- private:
- int a[100],b[100],g[100],d,f,flag;
- char znak;
- public:
- kalkulator(){};
- kalkulator(char *c, char *e, char mznak)
- {
- flag=1;
- d=strlen(c);
- f=strlen(e);
- for(int i=0; i<d; i++)
- {
- a[i]=c[i]-'0';
- }
- for(int i=0; i<f; i++)
- {
- b[i]=e[i]-'0';
- }
- };
- void izednacuvanje()
- {
- int var;
- 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++;} }
- 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++;} }}
- }
- void rezultat ()
- {
- int q=1;
- if(flag)
- cout<<endl<<"Rezultatot e: ";
- else
- cout<<endl<<"Rezultatot e: -";
- for(int i=0; i<f; i++)
- {
- if((g[i]==0)&&(i<q))
- {q++;}
- else
- cout<<g[i];
- }
- }
- void rezmnozenje()
- {
- int q=1,br1;
- if(d>f) br1=d*2-1; else br1=f*2-1;
- cout<<endl<<"Rezultatot od mnozenjeto: ";
- for(int i=0; i<=br1; i++)
- { // pechatenje na rezultatot
- if((g[i]==0)&&(i<q))
- {q++;}
- else
- cout<<g[i];
- } // pechatenje na rezultatot
- cout<<endl;
- }
- void odzimanje()
- {
- int br=0,j;
- while(a[br]==b[br]) {br++;}
- if(a[br]>b[br])
- {
- for(int i=d-1; i>=0; i--) // odzimanje na dva broja
- {
- cout<<"i= "<<i<<endl;
- if(a[i]<b[i])
- {
- j=i-1;
- if(j>=0)
- {
- while((a[j]==0) && (j>=0))
- { j--; }
- a[j]=a[j]-1; j++;
- if(j<i)
- {
- while(j<i)
- {
- a[j]=a[j]+9; j++;
- }
- }
- a[i]=a[i]+10;
- }
- }
- g[i]=a[i]-b[i];
- } // odzimanje na dva broja
- }
- else
- {
- flag=0;
- for(int i=f-1; i>=0; i--) // odzimanje na dva broja
- {
- if(b[i]<a[i])
- {
- j=i-1;
- if(j>=0)
- {
- while((b[j]==0) && (j>=0))
- { j--; }
- b[j]=b[j]-1; j++;
- if(j<i)
- {
- while(j<i)
- {
- b[j]=b[j]+9; j++;
- }
- }
- b[i]=b[i]+10;
- }
- }
- g[i]=b[i]-a[i];
- }
- }
- };
- void sobiranje()
- {
- int r;
- if(d>f) r=d; else r=f;
- for(int i=r-1; i>=0; i--)
- {
- if(g[i]==1)
- g[i]=g[i]+a[i]+b[i];
- else
- g[i]=a[i]+b[i];
- if(i!=0)
- {
- if(g[i]>9)
- {
- g[i]=g[i]-10;
- g[i-1]=1;
- }
- }
- }
- };
- void mnozenje()
- {
- int dolz;
- if(d>f) dolz=d; else dolz=f;
- int br,br1=dolz*2-1;
- for(int i=0; i<=(br1); i++)
- g[i]=0;
- for (int i=dolz-1; i>=0 ; i--)
- {
- br=br1;
- for(int j=dolz-1; j>=0; j--)
- {
- g[br]=g[br]+(b[i]*a[j]);
- br--;
- }
- br1--;
- }
- br1=dolz*2-1;
- int pom,mod;
- for(int i=br1; i>=0; i-- )
- {
- pom=g[i]/10;
- g[i-1]=g[i-1]+pom;
- g[i]=g[i]%10;
- }
- };
- void izvrshi()
- {
- switch(znak)
- {
- case '+': sobiranje(); rezultat(); break;
- case '-': odzimanje(); rezultat(); break;
- case '*': mnozenje(); rezmnozenje(); break;
- default: cout<<"Pogreshen znak "<<endl; break;
- }
- }
- };
- int main()
- {
- kalkulator k;
- char c[100], e[100], mznak;
- cout<<"Nachin na vnesuvanje: "<<endl;
- cin>>c;
- cin>>e;
- cin>>mznak;
- k(c,e, mznak);
- k.izvrshi();
- return 0;
- }
Add Comment
Please, Sign In to add comment