[ harry.h @ 03.10.2004. 14:15 ] @
Pozdarav svima ja sam novi clan pa molim pomoc.Treba mi ako ko zna program ili algoritam za pascal.Zadatak glasi:Izraditi program koji za uneseni decimalini broj pretvara u binarni. |
[ harry.h @ 03.10.2004. 14:15 ] @
[ bancika @ 03.10.2004. 16:49 ] @
"evo resenjaaaa" :)
Code: var binarni: string; dec: Integer; begin ReadLn(dec); binarni := ''; repeat binarni := binarni + Chr(Ord('0') + dec mod 2); dec := dec div 2 until dec = 0; WriteLn(binarni); end. ovo je iz glave, al mislim da je ok. mozes u proizvoljnu bazu da prevodis uz male modifikacije. ako je baza manja od 10 onda zameni 2 sa osnovom te baze, a ako je veca od 10 onda bi islo Code: binarni := binarni + hex[dec mod b]; gde je hex konstanta '0123456789ABCDEF', a b osnova baze valjda je pomoglo :) pozdrav [ TvrdiMijo @ 03.10.2004. 19:56 ] @
banicka,mislim da ovo ne šljaka kako treba.
prvo,decimalni broj treba rastaviti na cijeli dio i decimalni dio,a zatim svaki posebno pretvorit u binarni zapis.cijeli dio se lako pretvori djeljenjem s 2 (a ostatak je binarna znamenka),dok se decimalni pretvara ovako:decimalni dio se pomnoži s dva,a znamenka je cijeli dio novog broja(0 ili 1).zatim se od tog broja oduzme 1(ako isti nije jedan,inače je kraj)i ponovno isti postupak.za razliku od cijelih,ovaj postupak može potrajat beskonačno iteracija,stoga je potrebno odraditi neku granicu(recimo 8 ponavljanja).primjer: 3.75= cijeli dio =3(baza 10)=11(baza 2) razlomljeni dio 1. 0.75*2=1.5(prva znamenka je 1)(ostatak je 1.5-1=0.5) 2. 0.50*2=1.0(prva znamenka je 1)(ostatak je 1.0-1=0.0,i tu je kraj) =11. dakle 3.72(baza 10)=11.11(baza 2); na osnovu ovog algoritma nije teško sastavit program.Meni se sada neda,ali ako treba... [ bancika @ 03.10.2004. 21:20 ] @
pa da, ja sam razumeo DEKADNI...u pravu si
ovo moje se odnosilo samo na cele brojeve, zbog toga je dec: Integer [ harry.h @ 04.10.2004. 20:56 ] @
Cool,kuzim ovo gore,al moze li sada sve u potpunosti da mi ispisete.Ajde pa cu i ja vama pomagat za koji mjesec jer sam sada pocetnik pa je svaka pomoc dobra.
[ Almedin @ 04.10.2004. 21:39 ] @
Kako bi islo za 3.20?
[ bancika @ 05.10.2004. 00:01 ] @
trebalo bi ovako nesto da bude
Code: var broj, raz: real; ceo, i: integer; binarni: string; //prvo celi deo begin read(broj); ceo := trunc(broj); raz := frac(broj); binarni := ''; repeat binarni := binarni + Chr(Ord('0') + dec mod 2); dec := dec div 2 until dec = 0; binarni := binarni + '.'; i := 0; repeat Inc(i); raz := raz * 2; binarni := binarni + Chr(Ord('0') + trunc(raz)); raz := frac(raz); until (raz = 1) or (i = 10); //ili postavi i na koliko hoces WriteLn(binarni); end. [ TvrdiMijo @ 05.10.2004. 23:19 ] @
mala ispravka:
Code: var broj, raz: real; ceo, i: integer; binarni: string; //prvo celi deo begin read(broj); ceo := trunc(broj); raz := frac(broj); binarni := ''; repeat binarni := binarni + Chr(Ord('0') + ceo mod 2); ceo := ceo div 2 until ceo = 0; binarni := binarni + '.'; i := 0; repeat Inc(i); raz := raz * 2; binarni := binarni + Chr(Ord('0') + trunc(raz)); raz := frac(raz); until (raz = 0) or (i = 10); //ili postavi i na koliko hoces WriteLn(binarni); end. 3.20(10)= 3(10)= 3 div 2=1,3 mod 2=1;z1=1; 1 div 2=0,1 mod 2=1;z2=1; 0.20(10)= 0.20*2=0.40;z1=0; 0.40*2=0.80;z2=0; 0.80*2=1.50;z3=1; 0.60*2=1.20;z4=1; 0.20*2=0.40;z1=0;itd,beskonačno periodičan broj; 3.20(10)=11.001100110011... Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|