Odpovedať 
 
Hodnotenie témy:
  • 0 Hlasov - 0 Priemer
  • 1
  • 2
  • 3
  • 4
  • 5
Převod sousat
03-14-2013, 15:30
Príspevok: #1
Převod sousat
Dobrý den, potřeboval bych poradit jak pozměnit kod, tak aby vypisoval i čísla od 11tkové soustavy do 16tkové v nasledujícím kodu:

M soubor:

a = input('Zadej číslo v desítkové soustavě: ');
b = input('Zadej zaklad soustavy: ');
bin = decbin(a, b);
str = sprintf('%1d je v binarním kodu %1s.', a, bin);
disp(str);

a funkce :

function [bin] = decbin(dec, zaklad)
% Funkce vrací řetězec znaků odpovídající číslu v dec. v soustvě základ
dec = int32(dec);
zaklad = int32(zaklad);
bin = '';
while (dec ~= 0)
zbytek = rem(dec, zaklad);
dec = idivide(dec, zaklad, 'fix');
bin = strcat(char(48 + zbytek), bin);
end


Předem děkuju.
Vyhľadať všetky príspevky tohoto používateľa
Citovať príspevok v odpovedi
03-15-2013, 19:29
Príspevok: #2
RE: Převod sousat
vymyslel som nieco taketo:

program:
Kód:
zo_sustavy = input('Zo sustavy: '); % 2-16
do_sustavy = input('Do sustavy: '); % 2-16
cislo = input('Cislo: ');
fromBaseToBase( zo_sustavy, do_sustavy, cislo )

funkcia (fromBaseToBase.m) :

Kód:
function [new_number] = fromBaseToBase(from, to, number)    
    allchars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'];
    allchars_int32 = int32( allchars );

    if ( from ~= 10 ) %najskor dam do 10kovej ak v nej nieje
        number_ten = 0;
        tmp = int32( number );
        i = length( tmp );
        while ( i > 0 )
            pow = length( tmp ) - i;
            number_ten = number_ten + ( find( allchars_int32==tmp(i) ) - 1 ) * from^pow;
            i = i - 1;
        end

    else
        number_ten = number;
    end
    %prevod z 10 do zadanej v prementj 'to'
    number_ten = int32(number_ten);
    to = int32(to);
    new_number = '';
    while( number_ten ~= 0 )
        rest = rem( number_ten, to );
        number_ten = idivide( number_ten, to, 'fix' );
        new_number = strcat( allchars(rest+1), new_number );
    end

end

ak je cislo (number) v inej ako 10kovej sustave treba ho dat do uvodzovniek '<cislo>'
mozno sa to da aj nejako lahsie, s pomocou funkcii matlabu ale to som nezistoval
Vyhľadať všetky príspevky tohoto používateľa
Citovať príspevok v odpovedi
03-18-2013, 09:54
Príspevok: #3
RE: Převod sousat
Děkuju moc za odpověď Smile.
Vyhľadať všetky príspevky tohoto používateľa
Citovať príspevok v odpovedi
Odpovedať 


Skok na fórum:




Kontakty | matlab.sk | Nahor | Na obsah | Odľahčený (archivačný) mód | RSS