Advertisement
Jordimario

Convertitore base da 2 a 10 1.2

Feb 1st, 2019
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.23 KB | None | 0 0
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <cmath>
  4. using namespace std;
  5.  
  6. ///codice che fa la somma di due numeri espressi in base 2-10.
  7.  
  8. int main()
  9. {
  10.     int base=0, num1[100],num2[100],somma[100],i=0,len,conversione=0;
  11.     bool riporto=0;
  12.  
  13.         ///ciclo per immettere la base senza errori
  14. do{
  15.     cout<<"Inserisci la Base in cui vuoi immettere i numeri"<<endl;
  16.     cin>>base;
  17.     if(base<2 || base>10)cout<<"La base e' compresa solo fra 2 e 10"<<endl;
  18.     }while(base<2 || base>10);
  19.  
  20.         ///immette la lunghezza dei due numeri
  21.         do{
  22.     cout<<"Immetti la lunghezza dei due numeri"<<endl;
  23.     cin>>len;
  24.     if(len<0)cout<<"Deve essere un numero positivo"<<endl;
  25.         }while(len<0);
  26.  
  27.         ///ciclo per immettere le cifre del primo numero
  28.     cout<<"Immetti Cifre"<<endl;
  29.     while(i<len){
  30.         cin>>num1[i];
  31.         if(num1[i]<base && num1[i]>=0)i++;
  32.         else cout<<"il numero deve essere piu piccolo della base inserita ("<<base<<") e positivo"<<endl;
  33.     }
  34.  
  35.     for(i=0;i<len;i++) conversione+=num1[i]*pow(base,len-i-1);
  36.     cout<<"conversione in base 10:"<<conversione<<endl;
  37.     conversione=0;
  38.  
  39.         ///ciclo per immettere le cifre del secondo numero
  40.     i=0;
  41.         cout<<"Immetti Cifre Per il secondo numero"<<endl;
  42.     while(i<len){
  43.         cin>>num2[i];
  44.         if(num2[i]<base && num2[i]>=0)i++;
  45.         else cout<<"il numero deve essere piu piccolo della ("<<base<<") e positivo"<<endl;
  46.     }
  47.  
  48.     for(i=0;i<len;i++) conversione+=num2[i]*pow(base,len-i-1);
  49.     cout<<"conversione in base 10:"<<conversione<<endl;
  50.     i--;
  51.     conversione=0;
  52.  
  53.     while(i>=0){
  54.             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
  55.             riporto =  num1[i]+num2[i]+riporto>=base;
  56.             i--;
  57.     }
  58.         somma[-1]=riporto;
  59.     i = riporto ? -1 : 0;///maneggia il riporto finale mostrando o non mostrando un'altra cifra
  60.     cout<<"la somma dei numeri e'"<<endl;
  61.     while(i<len){
  62.         cout<<somma[i];
  63.         conversione+=somma[i]*pow(base,len-i-1);
  64.         i++;
  65.     }
  66.         cout<<endl<<"conversione in base 10:"<<conversione<<endl;
  67.  
  68.   system("PAUSE");
  69.   return 0;
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement