Se lo switch lo faccio con degli if ( esadecZero == 10 && esadecUno == 10 ) then: printf AA... viene bene. Ora devo ampliare i sottocasi nel codice
http://prntscr.com/hck91
Come nel codice:
// ESERCIZIO 4.25: Tabella di equivalenza tra decimali, binari, ottali ed esadecimali.
// Scrivete un programma che stampi una tabella dei valori equivalenti binari, ottali ed esadecimali dei numeri decimali nell'intervallo da 1 a 256. [Potete stampare un intero come un valore ottale o esadecimale rispettivamente con gli specificatori di conversione %o e %X.]
// Codice sorgente:
#include <stdio.h>
#include <math.h>
int main (void) {
puts( "Questo è un programma che stampa una tabella dei valori equivalenti tra il sistema numerico DECIMALE, BINARIO, OTTALE ed ESADECIMALE, da 1 a 256.\n\n" );
printf( "%s", " Sistema Numerico:" );
printf( "\n\n%-10s%10s%8s%14s\n", "DECIMALE", "BINARIO", "OTTALE", "ESADECIMALE" );
int decimale = 1;
int esadecDue;
int esadecUno;
int esadecZero;
int ottTre;
int ottDue;
int ottUno;
int ottZero;
int binOtto;
int binSette;
int binSei;
int binCinque;
int binQuattro;
int binTre;
int binDue;
int binUno;
int binZero;
int valBinOtto = 256;
int valBinSette = 128;
int valBinSei = 64;
int valBinCinque = 32;
int valBinQuattro = 16;
int valBinTre = 8;
int valBinDue = 4;
int valBinUno = 2;
int valBinZero = 1;
int valOttTre = 512;
int valOttDue = 64;
int valOttUno = 8;
int valOttZero = 1;
int valEsadecDue = 256;
int valEsadecUno = 16;
int valEsadecZero = 1;
while ( decimale <= 256 ) {
binOtto = decimale / valBinOtto;
binSette = (decimale % valBinOtto) / valBinSette;
binSei = ((decimale % valBinOtto) % valBinSette) / valBinSei;
binCinque = (((decimale % valBinOtto) % valBinSette) % valBinSei) / valBinCinque;
binQuattro = ((((decimale % valBinOtto) % valBinSette) % valBinSei) % valBinCinque) / valBinQuattro;
binTre = (((((decimale % valBinOtto) % valBinSette) % valBinSei) % valBinCinque) % valBinQuattro) / valBinTre;
binDue = ((((((decimale % valBinOtto) % valBinSette) % valBinSei) % valBinCinque) % valBinQuattro) % valBinTre) / valBinDue;
binUno = (((((((decimale % valBinOtto) % valBinSette) % valBinSei) % valBinCinque) % valBinQuattro) % valBinTre) % valBinDue) / valBinUno;
binZero = ((((((((decimale % valBinOtto) % valBinSette) % valBinSei) % valBinCinque) % valBinQuattro) % valBinTre) % valBinDue) % valBinUno) / valBinZero;
ottTre = decimale / valOttTre;
ottDue = (decimale % valOttTre) / valOttDue;
ottUno = ((decimale % valOttTre) % valOttDue) / valOttUno;
ottZero = (((decimale % valOttTre) % valOttDue) % valOttUno) / valOttZero;
esadecDue = decimale / valEsadecDue;
esadecUno = (decimale % valEsadecDue) / valEsadecUno;
esadecZero = ((decimale % valEsadecDue) % valEsadecUno) / valEsadecZero;
switch ( esadecZero ) {
case 10:
if ( esadecZero == 10 && esadecUno == 10 ) {
printf( "%-10d%2d%d%d%d%d%d%d%d%d%5d%d%d%d%10d%s%s\n", decimale, binOtto, binSette, binSei, binCinque, binQuattro, binTre, binDue, binUno, binZero, ottTre, ottDue, ottUno, ottZero, esadecDue, "A", "A" );
} else {
printf( "%-10d%2d%d%d%d%d%d%d%d%d%5d%d%d%d%10d%d%s\n", decimale, binOtto, binSette, binSei, binCinque, binQuattro, binTre, binDue, binUno, binZero, ottTre, ottDue, ottUno, ottZero, esadecDue, esadecUno, "A" );
}
break;
case 11:
if ( esadecZero == 11 && esadecUno == 10 ) {
printf( "%-10d%2d%d%d%d%d%d%d%d%d%5d%d%d%d%10d%s%s\n", decimale, binOtto, binSette, binSei, binCinque, binQuattro, binTre, binDue, binUno, binZero, ottTre, ottDue, ottUno, ottZero, esadecDue, "A", "B" );
} else {
printf( "%-10d%2d%d%d%d%d%d%d%d%d%5d%d%d%d%10d%d%s\n", decimale, binOtto, binSette, binSei, binCinque, binQuattro, binTre, binDue, binUno, binZero, ottTre, ottDue, ottUno, ottZero, esadecDue, esadecUno, "B" );
}
break;
case 12:
printf( "%-10d%2d%d%d%d%d%d%d%d%d%5d%d%d%d%10d%d%s\n", decimale, binOtto, binSette, binSei, binCinque, binQuattro, binTre, binDue, binUno, binZero, ottTre, ottDue, ottUno, ottZero, esadecDue, esadecUno, "C" );
break;
case 13:
printf( "%-10d%2d%d%d%d%d%d%d%d%d%5d%d%d%d%10d%d%s\n", decimale, binOtto, binSette, binSei, binCinque, binQuattro, binTre, binDue, binUno, binZero, ottTre, ottDue, ottUno, ottZero, esadecDue, esadecUno, "D" );
break;
case 14:
printf( "%-10d%2d%d%d%d%d%d%d%d%d%5d%d%d%d%10d%d%s\n", decimale, binOtto, binSette, binSei, binCinque, binQuattro, binTre, binDue, binUno, binZero, ottTre, ottDue, ottUno, ottZero, esadecDue, esadecUno, "E" );
break;
case 15:
printf( "%-10d%2d%d%d%d%d%d%d%d%d%5d%d%d%d%10d%d%s\n", decimale, binOtto, binSette, binSei, binCinque, binQuattro, binTre, binDue, binUno, binZero, ottTre, ottDue, ottUno, ottZero, esadecDue, esadecUno, "F" );
break;
default:
switch ( esadecUno ) {
case 10:
if ( esadecZero == 10 && esadecUno == 10 ) {
printf( "%-10d%2d%d%d%d%d%d%d%d%d%5d%d%d%d%10d%s%s\n", decimale, binOtto, binSette, binSei, binCinque, binQuattro, binTre, binDue, binUno, binZero, ottTre, ottDue, ottUno, ottZero, esadecDue, "A", "A" );
} else {
printf( "%-10d%2d%d%d%d%d%d%d%d%d%5d%d%d%d%10d%s%d\n", decimale, binOtto, binSette, binSei, binCinque, binQuattro, binTre, binDue, binUno, binZero, ottTre, ottDue, ottUno, ottZero, esadecDue, "A", esadecZero );
}
break;
case 11:
printf( "%-10d%2d%d%d%d%d%d%d%d%d%5d%d%d%d%10d%s%d\n", decimale, binOtto, binSette, binSei, binCinque, binQuattro, binTre, binDue, binUno, binZero, ottTre, ottDue, ottUno, ottZero, esadecDue, "B", esadecZero );
break;
case 12:
printf( "%-10d%2d%d%d%d%d%d%d%d%d%5d%d%d%d%10d%s%d\n", decimale, binOtto, binSette, binSei, binCinque, binQuattro, binTre, binDue, binUno, binZero, ottTre, ottDue, ottUno, ottZero, esadecDue, "C", esadecZero );
break;
case 13:
printf( "%-10d%2d%d%d%d%d%d%d%d%d%5d%d%d%d%10d%s%d\n", decimale, binOtto, binSette, binSei, binCinque, binQuattro, binTre, binDue, binUno, binZero, ottTre, ottDue, ottUno, ottZero, esadecDue, "D", esadecZero );
break;
case 14:
printf( "%-10d%2d%d%d%d%d%d%d%d%d%5d%d%d%d%10d%s%d\n", decimale, binOtto, binSette, binSei, binCinque, binQuattro, binTre, binDue, binUno, binZero, ottTre, ottDue, ottUno, ottZero, esadecDue, "E", esadecZero );
break;
case 15:
printf( "%-10d%2d%d%d%d%d%d%d%d%d%5d%d%d%d%10d%s%d\n", decimale, binOtto, binSette, binSei, binCinque, binQuattro, binTre, binDue, binUno, binZero, ottTre, ottDue, ottUno, ottZero, esadecDue, "F", esadecZero );
break;
default:
printf( "%-10d%2d%d%d%d%d%d%d%d%d%5d%d%d%d%10d%d%d\n", decimale, binOtto, binSette, binSei, binCinque, binQuattro, binTre, binDue, binUno, binZero, ottTre, ottDue, ottUno, ottZero, esadecDue, esadecUno, esadecZero );
break;
}
break;
}
++decimale;
}
}
/*
if ( esadecZero == 10 && esadecUno == 10 ) {
printf( "%-10d%2d%d%d%d%d%d%d%d%d%5d%d%d%d%10d%s%s\n", decimale, binOtto, binSette, binSei, binCinque, binQuattro, binTre, binDue, binUno, binZero, ottTre, ottDue, ottUno, ottZero, esadecDue, "A", "A" );
}
if ( esadecZero == 10 && esadecUno == 10 && esadecDue == 10 ) {
printf( "%-10d%2d%d%d%d%d%d%d%d%d%5d%d%d%d%10s%s%s\n", decimale, binOtto, binSette, binSei, binCinque, binQuattro, binTre, binDue, binUno, binZero, ottTre, ottDue, ottUno, ottZero, "A", "A", "A" );
}
if ( esadecZero == 11 && esadecUno == 11 ) {
printf( "%-10d%2d%d%d%d%d%d%d%d%d%5d%d%d%d%10d%s%s\n", decimale, binOtto, binSette, binSei, binCinque, binQuattro, binTre, binDue, binUno, binZero, ottTre, ottDue, ottUno, ottZero, esadecDue, "B", "B" );
}
if ( esadecZero == 11 && esadecUno == 11 && esadecDue == 11 ) {
printf( "%-10d%2d%d%d%d%d%d%d%d%d%5d%d%d%d%10s%s%s\n", decimale, binOtto, binSette, binSei, binCinque, binQuattro, binTre, binDue, binUno, binZero, ottTre, ottDue, ottUno, ottZero, "B", "B", "B" );
}
if ( esadecZero == 12 && esadecUno == 12 ) {
printf( "%-10d%2d%d%d%d%d%d%d%d%d%5d%d%d%d%10d%s%s\n", decimale, binOtto, binSette, binSei, binCinque, binQuattro, binTre, binDue, binUno, binZero, ottTre, ottDue, ottUno, ottZero, esadecDue, "C", "C" );
}
if ( esadecZero == 12 && esadecUno == 12 && esadecDue == 12 ) {
printf( "%-10d%2d%d%d%d%d%d%d%d%d%5d%d%d%d%10s%s%s\n", decimale, binOtto, binSette, binSei, binCinque, binQuattro, binTre, binDue, binUno, binZero, ottTre, ottDue, ottUno, ottZero, "C", "C", "C" );
}
if ( esadecZero == 13 && esadecUno == 13 ) {
printf( "%-10d%2d%d%d%d%d%d%d%d%d%5d%d%d%d%10d%s%s\n", decimale, binOtto, binSette, binSei, binCinque, binQuattro, binTre, binDue, binUno, binZero, ottTre, ottDue, ottUno, ottZero, esadecDue, "D", "D" );
}
if ( esadecZero == 13 && esadecUno == 13 && esadecDue == 13 ) {
printf( "%-10d%2d%d%d%d%d%d%d%d%d%5d%d%d%d%10s%s%s\n", decimale, binOtto, binSette, binSei, binCinque, binQuattro, binTre, binDue, binUno, binZero, ottTre, ottDue, ottUno, ottZero, "D", "D", "D" );
}
if ( esadecZero == 14 && esadecUno == 14 ) {
printf( "%-10d%2d%d%d%d%d%d%d%d%d%5d%d%d%d%10d%s%s\n", decimale, binOtto, binSette, binSei, binCinque, binQuattro, binTre, binDue, binUno, binZero, ottTre, ottDue, ottUno, ottZero, esadecDue, "E", "E" );
}
if ( esadecZero == 14 && esadecUno == 14 && esadecDue == 14 ) {
printf( "%-10d%2d%d%d%d%d%d%d%d%d%5d%d%d%d%10s%s%s\n", decimale, binOtto, binSette, binSei, binCinque, binQuattro, binTre, binDue, binUno, binZero, ottTre, ottDue, ottUno, ottZero, "E", "E", "E" );
}
if ( esadecZero == 15 && esadecUno == 15 ) {
printf( "%-10d%2d%d%d%d%d%d%d%d%d%5d%d%d%d%10d%s%s\n", decimale, binOtto, binSette, binSei, binCinque, binQuattro, binTre, binDue, binUno, binZero, ottTre, ottDue, ottUno, ottZero, esadecDue, "F", "F" );
}
if ( esadecZero == 15 && esadecUno == 15 && esadecDue == 15 ) {
printf( "%-10d%2d%d%d%d%d%d%d%d%d%5d%d%d%d%10s%s%s\n", decimale, binOtto, binSette, binSei, binCinque, binQuattro, binTre, binDue, binUno, binZero, ottTre, ottDue, ottUno, ottZero, "F", "F", "F" );
}
else {
printf( "%-10d%2d%d%d%d%d%d%d%d%d%5d%d%d%d%10d%d%d\n", decimale, binOtto, binSette, binSei, binCinque, binQuattro, binTre, binDue, binUno, binZero, ottTre, ottDue, ottUno, ottZero, esadecDue, esadecUno, esadecZero );
}
*/