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 2-10.
- int main()
- {
- int base=0, num1[100],num2[100],somma[100],i=0,len,conversione=0;
- bool riporto=0;
- ///ciclo per immettere la base senza errori
- do{
- cout<<"Inserisci la Base in cui vuoi immettere i numeri"<<endl;
- cin>>base;
- if(base<2 || base>10)cout<<"La base e' compresa solo fra 2 e 10"<<endl;
- }while(base<2 || base>10);
- ///immette la lunghezza dei due numeri
- do{
- cout<<"Immetti la lunghezza dei due numeri"<<endl;
- cin>>len;
- if(len<0)cout<<"Deve essere un numero positivo"<<endl;
- }while(len<0);
- ///ciclo per immettere le cifre del primo numero
- cout<<"Immetti Cifre"<<endl;
- while(i<len){
- cin>>num1[i];
- if(num1[i]<base && num1[i]>=0)i++;
- else cout<<"il numero deve essere piu piccolo della base inserita ("<<base<<") e positivo"<<endl;
- }
- for(i=0;i<len;i++) conversione+=num1[i]*pow(base,len-i-1);
- cout<<"conversione in base 10:"<<conversione<<endl;
- conversione=0;
- ///ciclo per immettere le cifre del secondo numero
- i=0;
- cout<<"Immetti Cifre Per il secondo numero"<<endl;
- while(i<len){
- cin>>num2[i];
- if(num2[i]<base && num2[i]>=0)i++;
- else cout<<"il numero deve essere piu piccolo della ("<<base<<") e positivo"<<endl;
- }
- for(i=0;i<len;i++) conversione+=num2[i]*pow(base,len-i-1);
- cout<<"conversione in base 10:"<<conversione<<endl;
- i--;
- conversione=0;
- while(i>=0){
- somma[i] = (num1[i]+num2[i]+riporto<base) ? (num1[i]+num2[i]+riporto) : (num1[i]+num2[i]+riporto)%base;///se la somma della cifra corrente supera la base allora il numero viene riportato e lasciato il resto per poi controllare una seconda volta se la base e' minore della cifra contrassegnando il flag del riporto
- riporto = num1[i]+num2[i]+riporto>=base;
- i--;
- }
- somma[-1]=riporto;
- i = riporto ? -1 : 0;///maneggia il riporto finale mostrando o non mostrando un'altra cifra
- cout<<"la somma dei numeri e'"<<endl;
- while(i<len){
- cout<<somma[i];
- conversione+=somma[i]*pow(base,len-i-1);
- i++;
- }
- cout<<endl<<"conversione in base 10:"<<conversione<<endl;
- system("PAUSE");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement