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.
zadatak u pascalu HELP!!!
Zaključano
Zakačeno
"evo resenjaaaa" :)
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
gde je hex konstanta '0123456789ABCDEF', a b osnova baze
valjda je pomoglo :)
pozdrav
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.
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];
binarni := binarni + hex[dec mod b];
gde je hex konstanta '0123456789ABCDEF', a b osnova baze
valjda je pomoglo :)
pozdrav
Potpis
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...
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...
Potpis
Blago onom tko rano poludi,
pa mu život u veselju prođe
pa mu život u veselju prođe
pa da, ja sam razumeo DEKADNI...u pravu si
ovo moje se odnosilo samo na cele brojeve, zbog toga je dec: Integer
ovo moje se odnosilo samo na cele brojeve, zbog toga je dec: Integer
Potpis
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.
Kako bi islo za 3.20?
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.
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.
Potpis
mala ispravka:
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...
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.
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...
Potpis
Blago onom tko rano poludi,
pa mu život u veselju prođe
pa mu život u veselju prođe