SP w Piotrowicach
Forum Szkoły Podstawowej nr 3 w Piotrowicach

Pascal - Zadanie z Pascala dla wtajemniczonych :)

ciapek_8 - 2007-11-15, 23:06
Temat postu: Zadanie z Pascala dla wtajemniczonych :)
Napisz program pobierający trzy dowolne liczny a,b,c i sprawdzający warunki:

a)czy podane liczby tworzą trójkąt

b) Jeżeli tak to czy tworzą trójkąty:
-równoboczny
-równoramienny
-prostokątny

c)Jeżeli nie to program ma wyświetlić komunikat,że podane liczby tworzą trójkąt różnoboczny...
Enjoy :mrgreen: :mrgreen:

Greif - 2007-11-15, 23:51

No fajny programik, może ktoś do niego najpierw algorytm ułoży? W końcu wypada każdy program najpierw na papierze ułożyć, a dopiero potem wklepywać.

Nie wiem, jak reszta z matmy, ale trzeba też wiedzieć, przy jakich bokach trójkąt jest np. prostokątny. ;-)

A może też w Logo go ktoś ułoży, jak się ktoś trochę bawi? :-)

ciapek_8 - 2007-11-16, 07:14

no powiem szczerze,że było by fajnie ... a może Pan się pokusi...?? :D
Greif - 2007-11-16, 14:36

Może się pokuszę, czemu nie, tylko mam trochę do poprawiania innych rzeczy dla tych od konkursu. :-)
Greif - 2007-11-17, 01:40
Temat postu: Jaki to trójkąt?
Witam,

poniżej listing programu, i plik exe, można pobrać i sprawdzić, czy działa poprawnie.

Program --> jaki_trojkat.exe

Listing programu opatrzyłem też komentarzami.



Na życzenie prześlę plik .pas. ;-)

ciapek_8 - 2007-11-17, 11:10

oooooooooooo takie cos mi chodzilo THX !!!

[ Dodano: 2007-11-17, 14:40 ]
ale Proszę Pana tu jest jakiś błąd,bo gdy podałem miary boków 3,4,5 to mi wyskoczyło że jest to trójkąt równoboczny ......
ja to zrobiłem w następujący sposób tylko niewiem jak zrobić żeby sprawdzało mi ostatni warunek
Kod:

program trojkaty;
uses crt;
var
a,b,c:integer;
begin
clrscr;
writeln('podaj miary trzech boków trójkąta');
readln(a);
readln(b);
readln(c);
if a+b>c then
writeln('podane liczby tworza trojkat');
else
writeln('podane liczby nie tworza trojkata');
if sqr(a)+sqr(b)=sqr(c) then
writeln('podane liczby tworza trojkat prostokatny');
if (a=b) and (a=c) and (b=c) then
writeln('podane liczby tworza trojkat rownoboczny');
if (a=b) and (a<>c) and (b<>c) then
writeln('podane liczby tworza trojkat rownoramienny');
readln;
end.

Greif - 2007-11-17, 19:08

A czemu tam dałeś 'and' a nie 'or'?
ciapek_8 - 2007-11-17, 22:56

no bo w trojkacie prostokatnym wszystkie boki sa rowne a w rownoramiennym sa 2 rowne sobie i sa rozne od trzeciego
Greif - 2007-11-17, 23:53

ciapek_8 napisał/a:
no bo w trojkacie prostokatnym wszystkie boki sa rowne...

Chyba w równobocznym...
ciapek_8 napisał/a:
...a w rownoramiennym sa 2 rowne sobie i sa rozne od trzeciego

To że są różne od trzeciego już nie jest ważne, jak wcześniej sprawdzisz czy czasem NIE jest równoboczny.

ciapek_8 napisał/a:
if a+b>c then
writeln('podane liczby tworza trojkat');

Przede wszystkim ten jeden warunek, to za mało. Jak podam liczby 3, 2 i 1, to warunek będzie spełniony, a trójkąta i tak nie będzie się dało ułożyć.

Poza tym, jak podałeś warunek na trójkąt prostokątny, to będzie on spełniony np. przy wartościach 3, 4 i 5, ale jak ktoś poda 4, 5 i 3 albo 5, 3 i 4, to program wyrzuci błąd, a przecież dalej to będzie trójkąt prostokątny. ;-)

Tak więc, jak widzisz, trzeba dobrze przemyśleć założenia, żeby dostać poprawny wynik.
Użytkownik jest najsłabszym ogniwem, nie można przewidzieć, co wymyśli... np. mój program trzeba by poprawić, że uniemożliwiał użytkownikowi wpisanie litery, bo wtedy program się wywraca. :-)

Jak widać, trochę jest do myślenia.

Aha, taka wskazówka - jak programujesz warunki (if .. then .. else), to zaczynaj od najrzadszego, czyli np. najmniej jest trójkątów równobocznych, potem równoramiennych a dalej prostokątnych, cała reszta to różnoboczne.
Chodzi o to, że jak sprawdzisz, że trójkąt jest równoboczny, to już nie musisz sprawdzać, czy jest równoramienny itd...

ciapek_8 - 2007-11-18, 12:05

Pozmieniałem pare bugów i teraz wydaje się być dobrze:

Greif - 2007-11-18, 14:08

Informacja techniczna do zamieszczania obrazków:
Używaj tagów img .. /img a nie URL.
Kod:
[img]http://img204.imageshack.us/img204/1390/98106822pt3.jpg[/img]

Musisz dać link, który jest na samym dole na witrynie imageshack.us, po tym jak uploadujesz obrazek, czyli bezpośredni link do obrazka.

===
Odnośnie programu, to dalej nie będzie działał dla trójkąta prostokątnego, po prostu nie przewidziałeś sytuacji, że użytkownik może podać boki w innej kolejności niż z największą wartością na końcu.


Powered by phpBB modified by Przemo © 2003 phpBB Group