Brojni sistemi

1

Brojni sistemi

offline
  • Pridružio: 13 Feb 2012
  • Poruke: 25
  • Gde živiš: Nis

Da li neko moze da mi napise program za pretvaranje dekadnog brojnog sistema u:
a)binarni sistem
b)sistem sa osnovom b
Pokusavao sam da ga resim ali ne mogu pa to ti je GUZ - Glavom U Zid
PS:Ako moze jednostavniji program(ucio sam samo do nizova).



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Software developer
  • Pridružio: 06 Sep 2005
  • Poruke: 3800
  • Gde živiš: Beograd

Sta si pokusavao da napises i gde je zapelo?
Znas li kako se na papiru prevode iz jednog u drugi sistem?



offline
  • Pridružio: 13 Feb 2012
  • Poruke: 25
  • Gde živiš: Nis

Na papiru znam ali kada treba da se ubaci u program ne ide!!!

offline
  • Software developer
  • Pridružio: 06 Sep 2005
  • Poruke: 3800
  • Gde živiš: Beograd

A sta si ubacio u program?
Jedna ideja:

Uzmes ostatak pri deljenju sa dva, sacuvas u neki niz, pa onda podelis sa 2, pa rezultat opet nadjes ostatak pri deljenju sa dva i sacuvas, pa opet delis sa dva i sve tako dok ne dobijes broj koji je manji od dva i onda ga samo dodas u niz. Niz ispises u inverznom smeru i dobices broj binarno:
primer
14 % 2 = 0 , 14:2 = 7
7 % 2 = 1 , 7:2 = 3
3 %2 = 1 , 3:2 = 1
DOPISES 1
i imas
0 1 1 1
Kad ispises u suprotnom smeru imas
1 1 1 0 sto je upravo 14 binarno

offline
  • Na odmoru xD
  • Na odmoru xD
  • Pridružio: 15 Feb 2012
  • Poruke: 430

PROGRAM BinarniS; VAR   broj,broj1,i,n:INTEGER;   binarniBroj:ARRAY OF INTEGER;  { deklarisanje dinamickog niza za smestaj binarog broja. } BEGIN   i := 0;    { Incijalizujemo promenljivu na 0. }   WRITELN('Unesite broj (dekadni -> binarni): ');   READLN(broj);    { Unosimo broj u promenljivu. }   broj1 := broj;   { U privremenu promenljivu stavljamo vrednost promenljive broj. }   REPEAT   i := i + 1;         // U ovoj petlji hocemo da izvuceo koliko ce puta   broj := broj DIV 2; // taj broj morati da se deli sa 2 dok nebude 0 da bi   UNTIL (broj=0);     // utvrdili duzinu dinamickog niza.   SETLENGTH(binarniBroj,i); // Namestamo duzinu nzia ovom funkcijom                             // Na prvom mestu ime niza a na drugom duzina u ovom slucaju promenljiva i. }   broj := broj1;      // Vracamo nazad vrednost iz privremene promenljive   n := i;             // Vrednost i prebacujemo u n za kasnije   REPEAT                         // Ova petlja se vrti sve dok promenljive broj   IF ((broj MOD 2) =  1) THEN    // nije nula.   BEGIN                          // I ona ubacuje u niz "otpozadi" 1 ili 0'     binarniBroj[i] := 1;         // u zavisnosti broj MOD 2.   END   ELSE   IF ((broj MOD 2) = 0) THEN   BEGIN     binarniBroj[i] := 0;   END;   broj := broj DIV 2;  // Ovde vrsimo umanjivanje broja   i := i - 1;          // Ovo je genijalno ;) Promenljiva i je zadrzala svoju vrednost   UNTIL (broj=0);      // Tokom prve petlje (duzina niza) i sad je vrtimo samo unazad.   WRITELN;                // Doterivanje izgleda.   WRITE('Broj u binarnom obliku je: ');   FOR i:=1 TO n DO   BEGIN   WRITE(binarniBroj[i]); // Sada petlja vrti od napred i tako dobijemo binaran broj.   END;   READLN;      // Zaustavljanje programa. END.   

offline
  • Pridružio: 10 Mar 2009
  • Poruke: 101
  • Gde živiš: Podgorica

Zasto alociras niz duzine 'i' ? Koliko ja vidim tebe ce svaki put da bude duzine 1, dok ce broj N u binarnom zapisu da ima logN (osnove 2) + 1 cifara ...

Edit: Greska nisam vidio da ti je i u petlji, ali opet, zasto petlja kad imas formulu Smile

offline
  • Na odmoru xD
  • Na odmoru xD
  • Pridružio: 15 Feb 2012
  • Poruke: 430

Pa pazi ovo je najlakse za razumevanje a i u cemu je fora da sabijem nesta na 2-3 reda. Ali postoji jos jedna stvar ja ne znam formulu Laughing

offline
  • Pridružio: 10 Mar 2009
  • Poruke: 101
  • Gde živiš: Podgorica

Nije fora u sabijanju koda, nego u vremenu izvrsavanja Smile
Al' eto sad znas formulu.

Pokusao sam da ovo prevedem na mom racunaru, i kod je preveden bez greske, ali kad sam ga pokrenuo i ukucao broj 14, program je pukao. Ne znam znas li da koristis debuger za pascal (posto ja ne znam, nisam bas najbolji sa pascalom Very Happy) ali probaj da preko njega pratis vrijednosti promenljivih, posto izgleda da ti dzuina niza nije dovoljna, ili ovdje
REPEAT                         // Ova petlja se vrti sve dok promenljive broj   IF ((broj MOD 2) =  1) THEN    // nije nula.   BEGIN                          // I ona ubacuje u niz "otpozadi" 1 ili 0'     binarniBroj[i] := 1;         // u zavisnosti broj MOD 2.   END   ELSE   IF ((broj MOD 2) = 0) THEN   BEGIN     binarniBroj[i] := 0;   END;   broj := broj DIV 2;  // Ovde vrsimo umanjivanje broja   i := i - 1;          // Ovo je genijalno ;) Promenljiva i je zadrzala svoju vrednost   UNTIL (broj=0);

ti 'i' dobija vrijednost nula, a koliko ja znam (mozda grijesim) u pascalu indeksi idu od 1 do N ukljucujuci i N Smile

offline
  • Na odmoru xD
  • Na odmoru xD
  • Pridružio: 15 Feb 2012
  • Poruke: 430

Napisano: 12 Sep 2012 12:43



Ja sam koristio lazarus 1.0 da ga kompajliram i sve radi savrseno Wink.
Nizovi u pascal mislim da ideu od 1 do N(ukljucujuci).

Dopuna: 12 Sep 2012 12:45

I vreme izvrsavanja nije bitno nekome ko tek uci programersku logiku i programski jezik.

Dopuna: 12 Sep 2012 12:50

Duzinu niza izvlacim u prvoj petlji i kad ubacim 14 ona je 4 (1110) e sad kad umanjujem on ubaci 0 ma smani I za 1 i onda na trecem mestu ubacuje keca i tako sve do 4 mesta. i na kraju dobije vrednost nula ali tada je vrednost promenljive broj 0 pa izlazi iz petlje.

offline
  • Pridružio: 10 Mar 2009
  • Poruke: 101
  • Gde živiš: Podgorica

Znam da ne ucis, ali trebalo bi da odmah od pocetka na neki nacin razmisljas na takav nacin, da minimuzujes trosenje resursa i da malo koristis matematiku tamo gdje mozes Smile
Al' dobro, program radi sto je najvaznije

Ko je trenutno na forumu
 

Ukupno su 1190 korisnika na forumu :: 36 registrovanih, 6 sakrivenih i 1148 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Acivi, Apok, bbogdan, Bickoooo, black sabah, Bubimir, ccoogg123, Denaya, doloress, Drenic7, Faki-Valjevo, GhostOfSparta480, havoc995, HogarStrashni, Kubovac, lcc, Lidija, Mendonca, mercedesamg, MiGac, Miki01, moldway, nemkea71, NMNJ, oldtimer, Parker, robertino, Romibrat, ser.hill, sevenino, Snorks, Vlad000, voja64, zastavnik, zixmix, Žrnov