
-=]o[=- [ ]
kto mi pomoże z pascalem?
problem wygląda następująco: otóż napisałem sobie program do obliczania NWD przy pomocy algorytmu euklidesa... ale tylko dla dwóch liczb. jak to zrobić żeby program działał dla kilku liczb? tak żeby można było obliczyć i dla dwóch i dla sześciu...
nie potrafię tego zapisać w programie...
tips: "gdy mamy policzyć największy wspólny dzielnik dla kilku liczb. liczymy NWD dla dwóch pierwszych liczb. Potem liczymy NWD dla otrzymanego wyniku i liczby trzeciej. Następnie NWD dla otrzymanego wyniku i czwartej liczby... itd"
i program:
Program algorytm_euklidesa;
VAR a,b,r: integer;
Begin
writeln('Program do obliczania NWD ');
writeln;
repeat
write('podaj pierwszą liczbę:');
ReadLn( a );
write('podaj drugą liczbę:');
ReadLn( b );
if (a = 0) or (b = 0) then
writeln('Zle dane!');writeln;
until (a<>0)and(b<>0);
If a<b Then
Begin
r:=a;
a:=b;
b:=r;
End;
r:=a Mod b;
While r<>0 Do
Begin
a:=b;
b:=r;
r:=a Mod b;
End;
WriteLn('Najwiekszy wspolny dzielnik = ', b);
end.
Lukxxx [ Pretorianin ]
1. stworz sobie procedurke do obliczania NWD (najlepiej funkcje)
2. Wczytaj liczby do jakiejs Listy Liniowej (np. w postaci tablicy)
3. po kolei oblicz NWD dla liczby 1 i 2, potem 2 i 3 itd. pamietajac tylko najmniejsze NWD z nich.
po przerobieniu wszystkich takich par powinienes miec wynik

-=]o[=- [ ]
hmmm... nie no. wszystko fajnie tylko... nic nie rozumiem... dałobysię jakoś tak łopatologicznie? nie prosze o napisanie gotowego programu ael przyznaje się jestem noga....
tomek@rick [ WuZuDu ]
Sproboj tak:
Program algorytm_euklidesa;
VAR a,b,r: integer;
Begin
writeln('Program do obliczania NWD ');
writeln;
repeat
write('podaj pierwszą liczbę:');
ReadLn(a);
write('podaj drugą liczbę:');
ReadLn(b);
if (a=0) or (b=0) then
writeln('Zle dane!');writeln;
until (a<>0)and(b<>0);
If a<b Then
Begin
r:=a;
a:=b;
b:=r;
End;
r:=a Mod b;
While r<>0 Do
Begin
a:=b;
b:=r;
r:=a Mod b;
End;
WriteLn('Najwiekszy wspolny dzielnik = ', b);
end.
Maliniarz [ The Watcher ]
o - > a na jakim stopniu zaawansowania jestes? Miales programowanie proceduralne/funkcyjne, petle itp?
-=]o[=- [ ]
na stopniu bardzo niskim :-)
-=]o[=- [ ]
może jednak ktoś uczynny mi pomoże?
-=]o[=- [ ]
wieczorny up

Mortan [ ]
Jak to mawial trener Piechniczek prawo Pascala- kto wykopie, zapierdala :-) *
sorry za stats&spam, ale nie mogłem sie powstrzymac, a przy okazji masz upa;)
*tekst pochodzi z najnowszego Wilq :)
Wypowiedź została zmodyfikowana przez jej autora [2005-10-14 23:23:10]

J_A_C_K [ Konsul ]
Jak to mawial trener Piechniczek prawo Pascala- kto wykopie, zapierdala
Lukxxx [ Pretorianin ]
o padlo pytanie czy miales procedury lub funkcje i tablice?
Scatterhead [ Gladiator ]
Program algorytm_euklidesa;
VAR n,m : integer;
begin
writeln('Program do obliczania NWD ');
writeln;
write('Podaj pierwsza liczbe:');
ReadLn( n );
write('Podaj druga liczbe:');
ReadLn( m );
while (n <> m) do begin
if n > m then n := n-m
else m := m - n;
end;
writeln('NWD to: ',n); // Wypisz n lub m - bez roznicy, sa takie same (i skasuj ten komentarz) i nie stosuj poslkich znakow
end.
Wypowiedź została zmodyfikowana przez jej autora [2005-10-15 00:02:09]
Scatterhead [ Gladiator ]
Druga wersja - troche zmieniony alogrytm euklidesa, szybszy i efektywniejszy. NIe jestem pewien czy zadziala, jezeli n bedzie mniejsze od m (ale sprawdzilem wyglada na to ze tak).
Program algorytm_euklidesa;
VAR n,m,r : integer;
begin
writeln('Program do obliczania NWD ');
writeln;
write('Podaj pierwsza liczbe:');
ReadLn( n );
write('Podaj druga liczbe:');
ReadLn( m );
r := n mod m; // Funkcja modulo - zwraca reszte z dzielenia
while (r <> 0) do begin
n := m;
m := r;
r := n mod m;
end;
writeln('NWD to: ',m);
end.
Wypowiedź została zmodyfikowana przez jej autora [2005-10-15 00:06:57]

-=]o[=- [ ]
ja bardzo dziękuję za dobre chęci... ale! czy umiecie czytać ze zrozumieniem? ja mam algorytm dla dwóch liczb...
jak to zrobić żeby program działał dla kilku liczb? tak żeby można było obliczyć i dla dwóch i dla sześciu...
nie potrafię tego zapisać w programie...
tips: "gdy mamy policzyć największy wspólny dzielnik dla kilku liczb. liczymy NWD dla dwóch pierwszych liczb. Potem liczymy NWD dla otrzymanego wyniku i liczby trzeciej. Następnie NWD dla otrzymanego wyniku i czwartej liczby... itd"
-=]o[=- [ ]
ostatni up rozpaczy...