Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Skraćivanje razlomaka u Pascal-u

[es] :: Pascal / Delphi / Kylix :: Skraćivanje razlomaka u Pascal-u

[ Pregleda: 5920 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Ray001

Član broj: 24625
Poruke: 2
*.cmu.carnet.hr



Profil

icon Skraćivanje razlomaka u Pascal-u14.04.2004. u 18:31 - pre 242 meseci
Pitanjce,
Kako napraviti engine u pascalu koji bi skratio razlomak?

Hvala
 
Odgovor na temu

del-boy
Bojan Delić
Beograd

Član broj: 9330
Poruke: 1089

Sajt: www.delic.in.rs


+21 Profil

icon Re: Skraćivanje razlomaka u Pascal-u14.04.2004. u 22:30 - pre 242 meseci
Pa proveriš da li su i brojilac i imanilac deljivi sa istim brojem koji je manji od manjeg od ova dva! Na primer ako imas 5/15 onda proveravas da li su brojilac i imenilac deljivi sa bilo kojim brojem manjim ili jednakim 5 (x mod y=0) i ako jesu podelis ova i skratio si razlomak! I tako radiš dok ga ne skratiš maksimalno!

Ako ti treba baš kod reci i napisaću ti!
 
Odgovor na temu

Bojan Basic
Novi Sad

SuperModerator
Član broj: 6578
Poruke: 3996
*.smin.sezampro.yu.

Jabber: bojan_basic@elitesecurity.org
ICQ: 305820253


+605 Profil

icon Re: Skraćivanje razlomaka u Pascal-u14.04.2004. u 22:40 - pre 242 meseci
Imaš mnogo jednostavnije rešenje, a to je sledeće:

Pustiš jednu petlju koja će da oduzima manji broj od većeg sve dok se brojevi ne izjednače. Kad se izjednače, neka je njihova vrednost x, e onda i jedan i drugi početni broj podeliš sa tim x, i to je skraćen razlomak. Mislim da brži algoritam od ovog ne postoji, ako ti nešto nije jasno javi se ponovo.
Ljubičice crvena, što si plava kô zelena trava.
 
Odgovor na temu

del-boy
Bojan Delić
Beograd

Član broj: 9330
Poruke: 1089

Sajt: www.delic.in.rs


+21 Profil

icon Re: Skraćivanje razlomaka u Pascal-u15.04.2004. u 00:05 - pre 242 meseci
E sivđa mi se ovaj način. Nisam se toga setio.

Iako nisam ja ovo tražio ipak hvala!
 
Odgovor na temu

Ray001

Član broj: 24625
Poruke: 2
*.globalnet.hr



Profil

icon Re: Skraćivanje razlomaka u Pascal-u15.04.2004. u 08:30 - pre 242 meseci
Citat:
Bojan Basic:
Imaš mnogo jednostavnije rešenje, a to je sledeće:

Pustiš jednu petlju koja će da oduzima manji broj od većeg sve dok se brojevi ne izjednače. Kad se izjednače, neka je njihova vrednost x, e onda i jedan i drugi početni broj podeliš sa tim x, i to je skraćen razlomak. Mislim da brži algoritam od ovog ne postoji, ako ti nešto nije jasno javi se ponovo.

Mislim da ovo nije ispravno.
Recimo da je razlomak 6/22. Dakle kad se skrati dobijemo 3/11. Prema gornjem algoritmu, petlja se neće izjednačiti, prema tome razlomak se ne može skratiti.
 
Odgovor na temu

Bojan Basic
Novi Sad

SuperModerator
Član broj: 6578
Poruke: 3996
*.smin.sezampro.yu.

Jabber: bojan_basic@elitesecurity.org
ICQ: 305820253


+605 Profil

icon Re: Skraćivanje razlomaka u Pascal-u15.04.2004. u 19:32 - pre 242 meseci
Ispravno je sigurno, evo ti na tvom primeru:
6 22
6 16
6 10
6 4
2 4
2 2
Sad su jednaki, pa podeliš i 6 i 16 sa 2 i dobiješ skraćeni razlomak.
Ljubičice crvena, što si plava kô zelena trava.
 
Odgovor na temu

rilax
Sergio Reluck
/root/Serbia/Kurshumliya

Član broj: 22393
Poruke: 32
*.vdial.verat.net



Profil

icon Re: Skraćivanje razlomaka u Pascal-u17.04.2004. u 14:55 - pre 242 meseci
A ima jos bolje resenje i zove se Euklidov algoritam.

Najlakse se pise rekurzijom i nema mnogo poziva, pa nema frke da ce da pukne stack.

Ideja je sledeca: najveci zajednicki sadrzalac za dva broja (u principu i za dva polinoma) je i najmanji zajednici sadrzalac za manji od njih i ostatak pri deljenju veceg manjim.
Znaci ako je a<b, onda je nzs(a,b)=nzs(b mod a, a);

Znaci, evo funkcije:

function Euclid(a, b: integer): integer;
begin
if a=0 then Euclid:=b
else Euclid:=Euclid(b mod a, a);
end;


Moras da pazis da je prvo mani broj kad pozivas f-ju, pa bi bilo korisno i

function nzs(a, b: integer): integer;
begin
if a<b then nzs:=euclid(a, b) else nzs:=euclid(b, a);
end;


gde ne moras da vodis racuna o redosledu.

Recimo za onaj primer od gore za 6 i 22 imas parove
6 i 22
4 i 6
2 i 4
0 i 2
10 BEGIN
20 HOME_SWEET_HOME
30 GOTO 20
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Skraćivanje razlomaka u Pascal-u

[ Pregleda: 5920 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.