% conversione di un numero naturale nelle basi 2, 3, 8, 16 cifre = ['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f']; N=input('Dammi un valore intero: '); if N < 0 fprintf('%1.0f e` un numero negativo', N); else for base = [ 2 , 3 , 8 , 16 ] Ncopia = N ; % Per non rovinare l'originale NinBase = '' ; % Diventera` la rappresentazione di N in altra base while Ncopia ~= 0 % qui inizia la conversione in base 'base', % con iterazioni che si susseguono fintantoche` % Ncopia non diventa zero % NinBase, % Comando da riaccendere se si vuol seguire % il decorso dei valori della variabile in cui viene assemblato % il risultato della conversione NinBase = [ cifre( rem( Ncopia, base ) + 1 ) , NinBase ]; % N.B.: rem designa l'operazione `Remainder after division`, % cioe` il calcolo del resto della divisione fra numeri interi; % questo assegnamento inserisce la cifra corrispondente al % resto della divisione di Ncopia per la base all'inizio della % stringa NinBase nella quale sta venendo composta la % rappresentazione del numero N nella base corrente. Ncopia = floor( Ncopia / base ); end if size( NinBase ) == 0 NinBase = '0'; end fprintf('Ecco il numero %1.0f espresso in base %1.0f: ', N, base), disp(NinBase) end end