prevod cisel a hladanie nsd, nsn

Programovacie jazyky, rady, poradňa...
miska.myska
Amateur
Amateur
Príspevky: 10
Registrovaný: 26 júl 2008, 10:03

prevod cisel a hladanie nsd, nsn

Príspevok od používateľa miska.myska »

prosim vas mohli by ste mi pomoct s tymto?
Vyjadrite cisla 36 a 20 v 2 a 4 sustave. zaklad je desiatkova
Najdite ich všetky delietele a spolocneho delitela
Najdite NSD(36,20) a nsn(36,20)
NSD - najvacsi spolocny delitel
nsn - najmensi spolocny nasobok
. Dakujem velmi pekne , ak budete vediet :)
neutronmind
Expert
Expert
Príspevky: 189
Registrovaný: 05 aug 2008, 14:17

Príspevok od používateľa neutronmind »

V akom jazyku to potrebujes?
miska.myska
Amateur
Amateur
Príspevky: 10
Registrovaný: 26 júl 2008, 10:03

Príspevok od používateľa miska.myska »

v nijakom ,to mame len na informatiku
konyk87
King
King
Používateľov profilový obrázok
Príspevky: 1709
Registrovaný: 24 okt 2007, 15:56

Príspevok od používateľa konyk87 »

tak, co to potom robi v programovani?
btw:
36 v dvojkovej: 100100
36 v stvorkovej: 210
20 v dvojkovej: 10100
20 v stvorkovej: 110
delitele 36 = {1, 2, 3, 4, 6, 9, 12, 36}
delitele 20 = {1, 2, 4, 5, 10, 20}
spolocne delitele = {1, 2, 4}
NSD(36,20) = 4
nsn(36,20) = 180
IkemeR
Light Expert
Light Expert
Príspevky: 66
Registrovaný: 15 mar 2007, 15:17

Príspevok od používateľa IkemeR »

Zdravím, kedže to s tímto súvisi nezakladam novú tému.
Prosím Vás, poradil by mi niekto, kde robím chybu?

Tento program na prevody...

Kód: Vybrať všetko

program prevody;

uses crt;

var vic,dec,sustava1,zbytok,sustava,y,i:longint;
    x:integer;
    vysledok,cislo:string;
    znak:char;

begin
     clrscr;
     writeln('Napiste cislo: ');
     readln(cislo);
     writeln('Zadaj sustavu, v ktorej je toto cislo');
     readln(sustava1);
     writeln('Zadajte sustavu, do ktorej chcete cislo prevadzat'); {od 2 do 200}
     readln(sustava);
     if sustava<2 then sustava:=2;
     y:=1;
     x:=0;
     for i:=1 to length(cislo) do
         begin
              znak:=cislo(.length(cislo)-x.);
              if ord(znak)<58 then vic:=48
              else vic:=55;
              dec:=dec+(ord(znak)-vic)*y;
              y:=sustava1*y;
              x:=x+1;
         end;
     while dec>0 do
         begin
              zbytok:=dec mod sustava;
              dec:=dec div sustava;
              if zbytok<10 then vysledok:=chr(48+zbytok)+vysledok
              else vysledok:=chr(55+zbytok)+vysledok;
         end;
     writeln('Vami zadane cislo vyzera v ',sustava,'-kovej sustave takto: ');
     writeln(vysledok);
end.
...som chcel spraviť ako podprogram - funkciu:

Kód: Vybrať všetko

uses crt;

var vic,dec,sustava1,zbytok,sustava,y,i:longint;
    x:integer;
    vysledok,cislo,u:string;
    znak,klaves:char;

FUNCTION prevod(sustava1,sustava:longint; cislo:string):string;
         var x:integer;
             i,y:longint;
             vic,dec,zbytok:longint;
             vysledok:string;
             znak:char;

         begin
           if sustava<2 then sustava:=2;
           y:=1;
           x:=0;
           for i:=1 to length(cislo) do
               begin
                    znak:=cislo(.length(cislo)-x.);
                    if ord(znak)<58 then vic:=48
                    else vic:=55;
                    dec:=dec+(ord(znak)-vic)*y;
                    y:=sustava1*y;
                    x:=x+1;
               end;
           while dec>0 do
               begin
                    zbytok:=dec mod sustava;
                    dec:=dec div sustava;
                    if zbytok<10 then vysledok:=chr(48+zbytok)+vysledok
                    else vysledok:=chr(55+zbytok)+vysledok;
               end;
               prevod:=vysledok;
           end;
.. ale potom hlavny program:

Kód: Vybrať všetko

BEGIN
     clrscr;
     write('Napiste cislo: ');
     readln(cislo);
     write('Zadaj sustavu, v ktorej je toto cislo: ');
     readln(sustava1);
     write('Zadajte sustavu, do ktorej chcete cislo prevadzat: '); {od 2 do 200}
     readln(sustava);
     u:=prevod(sustava,sustava1,cislo);
     writeln('Vami zadane cislo vyzera v ',sustava,'-kovej sustave takto: ',u);
     readln;
END.
vypisuje uplnu inu hodnotu ako ten prvý program bez podprogramu(kt. ju vypisuje spravne)..

napr:
5(10tkova sustava) by mal byť dvojkovej 10110
ale funkcia piše vysledok 5

asi viem, kde by mohla byť chyba, skusim to ešte poskušať sam, ale pre istotu sa pýtam.. dakujem
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

mne nedáva dobre výsledky ani jeden ani druhý variant
IkemeR
Light Expert
Light Expert
Príspevky: 66
Registrovaný: 15 mar 2007, 15:17

Príspevok od používateľa IkemeR »

ten prvý dava dobre vysledky, ale len pri zadaní celeho čísla.. (žiadne desatine miesta..)
Napísať odpoveď