Program zamieniający ułamek zwykły na dziesiętny

Kod źródłowy:

uses crt;{lub wincrt;}

var dz:double;
    licznik,mianownik:longint;

function NWD(a,b:longint):longint;
begin
 while a<>b do
  if a>b then a:=a-b else b:=b-a;
 NWD:=a;
end;

procedure zwykly(dzie:double;var licz,mian:longint);
var pom,l,m:double;
    i:byte;
    nw:longint;
begin
 l:=dzie;
 m:=1;
 while(int(l)<>l)do
  begin l:=l*10;m:=m*10;end;
licz:=trunc(l);
mian:=trunc(m);
nw:=NWD(licz,mian);
licz:=round(licz/nw);
mian:=round(mian/nw);
end;

begin
Writeln('Program zamienia ulamek dziesietny na zwykly.');
writeln('Podana wartosc zawierac sie musi miedzy 0..1');
writeln('Liczba ma miec max 5 cyfr po przecinku');
write('Podaj wartosc ulamka w formie dziesietnej  : ');readln(dz);

if (dz>=1)or(dz>0.99999)then
 begin
  writeln('Bledne dane !!!');
  readkey;
  halt;
 end;


zwykly(dz,licznik,mianownik);
writeln;
writeln('Ulamek zwykly to :');
writeln('Licznik   : ',licznik);
writeln('Mianownik : ',mianownik);
readkey;
end.

Komentarze

Popularne posty z tego bloga

phpBoard

Turbo pascal - Program sortujący liczby rosnąco

Jak poznać numer ID ostatnio dodanego rekordu do bazy danych MySQL