GRY-Online.pl --> Archiwum Forum

zaczynam pascala ..

02.02.2008
12:23
[1]

grzegwa007 [ Centurion ]

zaczynam pascala ..

Mam pytanko . Zaczynam pascala , mam napisać program który wczyta 3 liczby i wypisze największą z nich . Zrobiłem go ale coś mi nie wychodzi . Porównałem je za pomocą if
i miałęm liczby a,b,c . Podstawiłem np. 1,2,3 i porównałem a z b a z c b z c wtedy program nie pokazuje mi największej z nich tylko wypisuje 3 liczby kolejno czyli a porównałem z b a było mniejsze to wypisało 2 a z c wypisało 3 i b z c czyli też 3 i zamiast pokazać mi tylko jedną liczbę 3 bo ona jest największa to program mi wypisuje 2,3,3 . Co źle zrobiłem ?

02.02.2008
12:25
[2]

Regis [ ]

Jak pokazesz kod, to bedzie latwiej nam to ocenic, bo szczerze mowiac z Twoich wyjasnien malo rozumiem. Chociaz podejrzewam, ze jesli zalatwiasz sprawe ifami, to od razu wypisujesz tez wynik porownania (kazdego) - w ifach powinienes tylko ZAPAMIETAC wyniki porownan, a wypisac je na koniec. Poza tym nie ma potrzeby porownywac liczb az trzy razy - porownujesz 'a' z 'b' i wybierasz wieksza. Potem porownujesz ja z 'c'. I tyle - liczba z drugoiego porownania jest najwieksza.

02.02.2008
12:28
[3]

grzegwa007 [ Centurion ]

writeln('podaj trzy liczby')
readln(a,b,c)
if a>b then writeln(a)
else writeln(b)
if a>c then writeln(a)
else writeln(c)
if b>c then writeln(b)
else writeln(c)

Nie dawałem średników itd ale program działa .

02.02.2008
12:29
[4]

grzegwa007 [ Centurion ]

tzn nie dawałem tutaj bo w pascalu są

02.02.2008
12:33
[5]

grzegwa007 [ Centurion ]

no tak ale co tzreba zrobić żeby program zapamiętał która z liczb jest większa po tym pierwszym porównaniu . Moglibyście mi podpowiedzieć ?

02.02.2008
12:34
[6]

Sir Skull [ Charr Shaman ]

Zły algorytm :) Niepotrzebnie też używasz writeln przy każdym ifie.

Weź pierwszą liczbę i porównaj z drugą. Większą z nich zapisz sobie gdzieś, np pod zmienną a albo zupełnie nową zmienną - jak chcesz. Następnie porównaj trzecią liczbę z wynikiem porównania pierwszej i drugiej. Teraz dopiero wypisz największą liczbę.

02.02.2008
12:35
[7]

grzegwa007 [ Centurion ]

teoretycznie już zrozumiałem tylko nie wiem jak to zrobić w praktyce

02.02.2008
12:40
[8]

Sir Skull [ Charr Shaman ]

wynik : integer;

a dalej robisz te porównania...

if a > b then wynik := a
else wynik := b

02.02.2008
12:54
[9]

lo0ol [ Jónior ]

Nic nie robilem w pascalu od dawna ale to bedzie cos a'la:

writeln('Podaj trzy liczby:');
readln(a,b,c);
if (a>b) and (a>c) then writeln(a);
if (b>a) and (b>c) then writeln(b);
if (c>a) and (c>b) then writeln(c);
readln;

W przypadku występowania takich samych wartości dwóch zmiennych trzeba to będzie troche rozbudować.

02.02.2008
13:03
[10]

lo0ol [ Jónior ]

Aha ... dodatkowo aby zmniejszyc liczbe wykonywanych operacji w przypadku gdy np. A jest najwieksze; mozesz wrzucic kazdego kolejnego ifa w czesc else poprzedniego.

© 2000-2024 GRY-OnLine S.A.