Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdlib>
- #include <iostream>
- #include <cmath>
- using namespace std;
- ///codice che fa la somma di due numeri espressi in base 3.
- int main()
- {
- int a[4], b[4], c[4], i=0, r, num, s=0;
- cout<<"carico l'array a, partendo dalla cifra piu' significativa"<<endl; ///max valore: 1 2 2 2 (53 in base 10) per evitare un overflow.
- while(i<4)
- {
- cout<<"inserisci una cifra"<<endl;
- cin>>num;
- if(num>=0 && num<3)
- {
- a[i]=num;
- i++;
- }
- else
- {
- cout<<"valore non valido"<<endl;
- }
- }
- cout<<endl;
- s=0;
- for(i=0; i<4; i++) ///conversione da base 3 a base 10
- {
- cout<<a[i]<<" ";
- s=s+a[i]*pow((float) 3,3-i);
- }
- cout<<endl;
- cout<<s<<" in base 10"<<endl;
- cout<<endl;
- cout<<"carico l'array b, partendo dalla cifra piu' significativa"<<endl; ///max valore: 0 2 2 2 (26 in base 10) per evitare un overflow.
- i=0;
- while(i<4)
- {
- cout<<"inserisci una cifra"<<endl;
- cin>>num;
- if(num>=0 && num<=2)
- {
- b[i]=num;
- i++;
- }
- else
- {
- cout<<"valore non valido"<<endl;
- }
- }
- cout<<endl;
- s=0;
- for(i=0; i<4; i++)
- {
- cout<<b[i]<<" ";
- s=s+b[i]*pow((float) 3,3-i);
- }
- cout<<endl;
- cout<<s<<" in base 10"<<endl;
- ///calcolo la somma delle due cifre meno significative col relativo riporto.
- if(a[3]==0 && b[3]==0)
- {
- c[3]=0;
- r=0;
- }
- if((a[3]==1 && b[3]==0) || (a[3]==0 && b[3]==1))
- {
- c[3]=1;
- r=0;
- }
- if(a[3]==1 && b[3]==1)
- {
- c[3]=2;
- r=0;
- }
- if((a[3]==2 && b[3]==0) || (a[3]==0 && b[3]==2))
- {
- c[3]=2;
- r=0;
- }
- if((a[3]==2 && b[3]==1) || (a[3]==1 && b[3]==2))
- {
- c[3]=0;
- r=1;
- }
- if((a[3]==2 && b[3]==2))
- {
- c[3]=1;
- r=1;
- }
- cout<<endl;
- for(i=2; i>=0; i--)
- {
- if((a[i]==0 && b[i]==0) && r==0)
- {
- c[i]=0;
- r=0;
- }
- if((a[i]==0 && b[i]==0) && r==1)
- {
- c[i]=1;
- r=0;
- }
- if(((a[i]==1 && b[i]==0) || (a[i]==0 && b[i]==1) && r==0))
- {
- c[i]=1;
- r=0;
- }
- if(((a[i]==1 && b[i]==0) || (a[i]==0 && b[i]==1) && r==1))
- {
- c[i]=2;
- r=0;
- }
- if((a[i]==1 && b[i]==1) && r==0)
- {
- c[i]=2;
- r=0;
- }
- if((a[i]==1 && b[i]==1) && r==1)
- {
- c[i]=0;
- r=1;
- }
- if(((a[i]==2 && b[i]==0) || (a[i]==0 && b[i]==2) && r==0))
- {
- c[i]=2;
- r=0;
- }
- if(((a[i]==2 && b[i]==0) || (a[i]==0 && b[i]==2) && r==1))
- {
- c[i]=0;
- r=1;
- }
- if(((a[i]==2 && b[i]==1) || (a[i]==1 && b[i]==2) && r==0))
- {
- c[i]=0;
- r=1;
- }
- if(((a[i]==2 && b[i]==1) || (a[i]==1 && b[i]==2) && r==1))
- {
- c[i]=1;
- r=1;
- }
- if((a[i]==2 && b[i]==2) && r==0)
- {
- c[i]=1;
- r=1;
- }
- if(a[i]==2 && b[i]==2 && r==1)
- {
- c[i]=2;
- r=1;
- }
- }
- cout<<endl;
- s=0;
- for(i=0; i<4; i++)
- {
- cout<<a[i]<<" ";
- }
- cout<<endl;
- s=0;
- for(i=0; i<4; i++)
- {
- cout<<b[i]<<" ";
- }
- cout<<endl;
- for(i=0; i<4; i++)
- {
- cout<<c[i]<<" ";
- }
- cout<<endl;
- s=0;
- for(i=0; i<4; i++)
- {
- s=s+c[i]*pow((float) 3,3-i);
- }
- cout<<endl;
- cout<<s<<" in base 10"<<endl;
- system("PAUSE");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement