Hogyan kell ezt megoldani lazarusban?
Számítsuk ki két pozitív szám számtani és mértani közepét!
Nemrég kezdtem el tanulni a programozást (pascal) és van ez a feladat. Kész van, de amikor bekéri a 2 számot, oda bármit be lehet írni, negatívot v nem egész számot is.
És arra vagyok kíváncsi, hogy ezt, hogy kéne megoldani.
Ha valamelyik szám vagy mind2 negatív vagy nem egész akkor írja ki, hogy: hiba, adja meg újra a 2 számot, vagy ilyesmi.
itt az általam megírt program:
program feladat5;
uses crt;
var
psz1,psz2,szk,mk:real;
begin
clrscr;
write('Kerek ket pozitiv egesz szamot: '); readln(psz1,psz2);
szk:=(psz1+psz2)/2;
mk:=sqrt(psz1*psz2);
writeln('Szamtani kozepuk: ',szk:0:2);
writeln('Mertani kozepuk: ',mk:0:2);
repeat until keypressed;
end.
Hm, ez nem éppen Lazarus, tiszta Free Pascalnak nézem inkább, attól függetlenül, hogy mivel szerkeszted.
Nem teljesen értem a problémádat, már azt, hogy mi a nehézség abban, hogy megvizsgáld, kisebb-e egy szám nullánál.
A felső sorban megfogalmazott feladatban ugyan nincs szó arról, hogy egész számokról volna szó, de ha ez a szíved vágya, azzal ellenőrizheted, hogy a bevitt szám azonos-e az egészre csonkolt értékével.
Mondjuk, mindkettőt beolvastad, utána, ha a helyes értékre vizsgálsz:
if (psz1>=0) and (psz2>=0) and (psz1=int(psz1)) and (psz2=int(psz2)) then
szamolas
else
hibauzenet;
Vagy, ha a hibára vizsgálsz:
if (psz1<0) or (psz2<0) or (psz1<>int(psz1)) or (psz2<>int(psz2)) then
hibauzenet
else
szamolas;
Valahogy így. Elnézést, de nem ellenőriztem, a mondanivalóm sejthető. A 'nem egyenlő' emlékeim szerint felírható psz1!=int(psz1) vagy not(psz1=int(psz1)) formában is, ez a lényegen nem változtat.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, 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!