Ragazzi, ho un problema (come al solito, ma sapete, per imparare... ) ho scritto un programma che stampa una tabella con la rappresentazione Binaria, Ottale ed Esadecimale dei numeri Decimali da 1 a 256, il problema è che nel mio calcolo stampo le cifre dalla meno significativa, alla più significativa, cosi mi ritrovo con Binari, Ottali ed Esadecimali invertiti come posso stamparli nella maniera appropriata ?
Premetto che non devo usare gli array.
Ecco il codice:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
cout << "Table of Decimal Conversion from 0 to 256 in: Binary - Octal - Hexadecimal" << endl;
cout << endl;
cout << "Decimal" << setw(18) << "Binary" << setw(16) << "Octal" << setw(22) << "Hexadecimal" << endl;
for (int decimal = 1; decimal <= 256; decimal++)
{
cout << decimal << setw(18);
int copyDecimalBin = decimal;
int copyDecimalOct = decimal;
int copyDecimalHex = decimal;
int binary;
int octal;
int hexadecimal;
while (copyDecimalBin != 0)
{
binary = copyDecimalBin % 2; // La conversione funziona, ma stampa
copyDecimalBin /= 2; // il numero binario al contrario (110 - 011)
cout << binary;
}
cout << setw(18);
while (copyDecimalOct != 0)
{
octal = copyDecimalOct % 8;
copyDecimalOct /= 8;
cout << octal;
}
cout << setw(20);
while (copyDecimalHex != 0)
{
hexadecimal = copyDecimalHex % 16;
copyDecimalHex /= 16;
switch (hexadecimal)
{
case 1:
cout << '1';
break;
case 2:
cout << '2';
break;
case 3:
cout << '3';
break;
case 4:
cout << '4';
break;
case 5:
cout << '5';
break;
case 6:
cout << '6';
break;
case 7:
cout << '7';
break;
case 8:
cout << '8';
break;
case 9:
cout << '9';
break;
case 10:
cout << 'A';
break;
case 11:
cout << 'B';
break;
case 12:
cout << 'C';
break;
case 13:
cout << 'D';
break;
case 14:
cout << 'E';
break;
case 15:
cout << 'F';
break;
default:
cout << '0';
break;
cout << hexadecimal;
}
}
cout << endl;
}
return 0;
}
Grazie per la pazienza, come al solito ragazzi