Free Pascalban egy háromszög típusának megállapítása?
Sziasztok!
Egy viszonylag egyszerű programról lenne szó,
megállapítani, hogy megszerkeszthető e a háromszög, ha igen akkor milyen, deréksz.,szabályos...
Szóval ott lenne a gond, hogy addig elindul a program és jól is megy, amég megvizsgálom, hogy megszerkeszthető -e , ha igen akkor pitagorasz-t segítségével megállapítom, hogy derékszögű -e ÉS azután szeretném vizsgálni a többi lehetőséget, hogy szabályos -e vagy egyszerű és itt lép fel a hiba. Lehet nem vagyok tisztában az ELSE használatával, mivel eddig csak egy feltételben 1x használtam mindig, szerintem ez a hiba, de valahogy nemtudok rájönni. Kezdő programozó vagyok. A segítségért előre is köszönet!





Mire nem tudsz rájönni?
Nem derül ki, hogy mi a gondod, vagy milyen választ szeretnél kapni milyen kérdésre.
Az else egy eke egyszerű fogalom, nem nagyon van rajta mit nem érteni.
így elindul a program:
program haromszog;
uses crt;
var a,b,c:integer;
begin
clrscr;
writeln('Add meg a haromszog legrovidebb oldalat');
readln(a);
writeln('Add meg a haromszog leghoszabb oldalat');
readln(c);
writeln('Add emg a maradek oldal hosszat');
readln(b);
if a+b<c then writeln('A haromszog nem megszerkesztheto')
else
begin if a*a+b*b=c*c then ('Writeln('A haromszog derekszogu');
end;
repeat until keypressed;
end.
EDDIG ELINDUL ÉS MŰKÖDIK, majd szeretném folytatni a köv. módon:
program haromszog;
uses crt;
var a,b,c:integer;
begin
clrscr;
writeln('Add meg a haromszog legrovidebb oldalat');
readln(a);
writeln('Add meg a haromszog leghoszabb oldalat');
readln(c);
writeln('Add emg a maradek oldal hosszat');
readln(b);
if a+b<c then writeln('A haromszog nem megszerkesztheto')
else
begin if a*a+b*b=c*c then ('Writeln('A haromszog derekszogu')
else
if a=b=c then writeln('A háromszög szabályos')
else writeln('A haromszog egyszeru');
end;
repeat until keypressed;
end.
És itt már nem indul el, hibaüzeneteket dob ki, biztos, hogy nagy hülyeséget írhattam össze, de nem tudok rájönni a helyes megoldásra.





Csitt, egy szót se az egyetlen lényeges dologról! A hibaüzenetek a te géped magánügyei, nem tartoznak másra. Történetesen ma nincs pascal fordító a közelemben, hogy kipróbáljam a programodat, de átfutva, ez biztosan nem jó:
if a=b=c then writeln('A háromszög szabályos')
Ha van értelme az a=b=c kifejezésnek, akkor egy integert (a) akarsz egy igaz vagy hamis boolean értékkel (b=c) összehasonlítani, ezt a fordító biztosan nem engedi meg.
nekem a boolean folagalma is még gondot jelent sajnos :/
egyébb egyszerű megoldást tudnál ajánlani? vagy más ötlet?





A kérdéses sor helyett például:
if (a = b) and (b = c) then writeln('A háromszög szabályos')
A booleanról esetleg később, indulok fürödni.





Minden háromszög szabályos.
Pontosabb, hogy egyenlő oldalú v. egyenlő szárú.





A programodnak a fent említetten kívül az egyetlen baja, hogy az egyik WriteLn előtt van egy fölösleges bal zárójel meg egy aposztróf. Ez egyszerű szövegszerkesztési hiba, a kijavítása után a programod mindjárt működni kezd, mégpedig a gyanúba fogott ELSE ágak bárminemű megváltoztatása nélkül:
Két dolgot jegyeznék meg tanulságként. Az egyik, hogy a hibaüzenetek hajigálása nem merő unaloműzés a fordító részéről, hanem -- igaz, hogy angolul -- de téged próbál meg útba igazítani a probléma oka felől. Tehát kisiklott fordítás esetén nem az az infó, hogy üzenget (az a dolga), hanem, hogy miféléket. A másik tanulság: Érdemes a kódot zsúfolás helyett szellősen írni, átlátható, következetes szerkezetbe tördelni, akkor a hibák könnyebben észrevehetők.
Szegény booleant meg halasztom tovább, inkább alhatnékom van.
fuuu köszi szépen a segítséget, így már működik! Az a zárójel az véletlenül van ott, manuálisan írtam át, mert nem tudtam bemásolni, viszont utánakerestem a hibaüzenetnek: “;” expected but Else found
csak annyit találtam neten, hogy else elé nem kell ;
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!