NeroTFP [ Senator ]
Pascal - częściowa pomoc w programie.
Witam.
Jestem w trakcie pisania programu w Pascalu. Mam za zadanie napisać program, który z trzech liczb pokazuje, tą najmniejszą.
Udało mi się, coś do tej pory stworzyć, ale dalej zastopowałem.
Oto kod:
program najmniejsza_liczba;
uses crt;
var a,b,c:real;
begin
clrscr;
writeln('Program pokazujĄcy najmniejsza liczb©');
writeln('Podaj liczb© a');
readln(a);
writeln('Podaj liczb© b');
readln(b);
writeln('Podaj liczb© c');
readln(c);
readkey;
end.
Dalej, niestety się zaciąłem i nie bardzo wiem, jak to skończyć.
Próbuję użyć komendy if, then. W stylu:
if a<b then write ('a jest najmniejsza')
else
Działa to, ale nie działa mi to na więcej liczb. Czyli działa tylko ten jeden warunek, a reszty nie rozpatruje. Jaki robię błąd? Co dalej zrobić? Proszę o pomoc.
Antemos [ Konsul ]
if (a<b) and (a<c) then write ('a jest najmniejsza')
else
if (b<c) and (b<a) then write ('b jest najmniejsza')
else
if (c<a) and (c<b) then write ('c jest najmniejsza');
Spróbuj tak. Możliwe, że pomyliłem składnię. Programowanie miałem jakiś czas temu ;)
qaq [ Kaka Demona ]
Antemos - należy rozpatrzyc też przypadki gdy a=b lub a=c lub b=c lub a=b=c (chyba że jest warunek, że tylko jedna z liczb jest najmniejsza).
Postaram się za chwilę wkleić rozwiązanie.
NeroTFP [ Senator ]
Dzięki Antemos :) Działa dobrze.
Mój błąd polegał na tym, że po prostu nie wstawiałem "and", tylko pisałem każdy warunek osobno.
qaq -> Nauczyciel mówił, że na razie nie musimy rozpatrywać a=b, itp.
Jeżeli chcesz, to możesz wstawić rozwiązanie. Ja sam popróbuję poeksperymentować z tymi "a=b".
Dzięki jeszcze raz wszystkim.
Antemos [ Konsul ]
Poczekaj, niech qaq wrzuci tutaj swoją wersję. Będzie bardziej dopracowana. Najlepiej zrobić wyłapywanie takich samych liczb już przy ich wprowadzaniu.
wlodzix® [ Trup w windzie ]
Specjalnie dla ciebie napisałem:
USES CRT;
VAR
a,b,c:real;
BEGIN
clrscr;
writeln('Podaj liczbe a');
readln(a);
writeln('Podaj liczbe b');
readln(b);
writeln('Podaj liczbe c');
readln(c);
IF (a<b) and (a<c) then write ('a jest najmniejsza') else
IF (b<c) and (b<a) then write ('b jest najmniejsza;) else
IF (c<b) and (c<a) then write ('c jest najmniejsza') else
IF (c=b) and (c=a) and (b=c) and (b=a) and (a=b) and (a=c) then write ('liczby te sa rowne');
readln;
END.
Tylko jeszcze musisz dopisać ( bo już mi się dalej nie chcialo ) co ma być spelnione jesli np. dwie liczby bede takie same a jedna wyzsza. Mysle, ze wiesz o co chodzi. Liczby a i b są najmniejsze, c i a są najmniejsze np.
qaq [ Kaka Demona ]
if a<=b then
begin
if a<b then
begin
if a<=c then
begin
if a=c then
writeln('Najnizsze liczby to a i c')
else writeln('Najnizsza liczba to a');
end
else writeln('Najnizsza liczba to c');
end
else
begin
if a<=c then
begin
if a=c then
writeln('Wszystkie liczby sa rowne')
else writeln('Najnizsze liczby to a i b');
end
else writeln ('najnizsza liczba to c');
end;
end
else
begin
if b<=c then
begin
if b=c then
writeln ('najnizsze liczby to b i c')
else writeln ('najnizsza liczba to b');
end
else writeln ('najnizsza liczba to c');
end;
beginy i endy dla większej czytelności. Algorytm na 95% spełnia swoja rolę - sprawdzałem;)
[edit] cholera - usunęło wcięcia:/ tak to powinno wyglądać ->
wlodzix® [ Trup w windzie ]
Kolega qaq wszystko ładnie napisał.
Powodzenia w dalszej nauce !
Moby7777 [ Generaďż˝ ]
Do wszystkich tu piszących: CO KURWA? Może jednak jakaś optymalizacja?
qaq [ Kaka Demona ]
Moby -
po pierwsze - zrozumiałem że miało to być w instrukcjach warunkowych - jest w instrukcjach warunkowych
po drugie - napisz mi ten sam algorytm instrukcjami warunkowymi bardziej zoptymalizowany - nie, nie wywyższam się teraz, po prostu jestem ciekawy;)
po trzecie - raczej w takim malutkim programie optymalizacja nie jest szczególnie ważna
po czwarte - to nie jest powód by przeklinać:P
NeroTFP [ Senator ]
Poradziłem sobie. Dziękuję wszystkim, skorzystałem z waszych wskazówek :)