Kezdőoldal » Számítástechnika » Programozás » Megoldanátok nekem ezt a...

Megoldanátok nekem ezt a feladatot?

Figyelt kérdés

Mi a megoldás?

Kérjünk be két számot(szam1, szam2) azaz a derékszögű négyszög két oldalát és állapítsuk meg hogy Négyzet vagy Téglalap, aztán ha Téglalap akkor annak számítjuk ki a Terültét, Kerületét ha pedig Négyzet akkor annak. :) Remélem tudtok segíteni. Pascalban. A Dev-Pascal-t használjuk a suliban. :D


2009. szept. 17. 19:07
 1/8 anonim ***** válasza:
100%

program negyszog;


uses crt;

var

szam1,szam2,ter,ker:byte;



BEGIN

clrscr;

writeln('Kerem a negyszog ket oldalat');

readln(szam1,szam2);

ker:=2*(szam1+szam2);

ter:=szam1*szam2;

if szam1=szam2 then begin

writeln('A negyzet kerulete:',ker, ' cm');

writeln('A negyzet terulete: ',ter,' cm2');

end

else writeln('A teglalap kerulete: ',ker,' cm');

writeln('A teglalap terulete: ',ter,' cm2');

readkey;

END.

2009. szept. 17. 20:32
Hasznos számodra ez a válasz?
 2/8 anonim ***** válasza:
100%

program negyszog;


uses crt;

var

szam1,szam2,ter,ker:byte;



BEGIN

clrscr;

writeln('Kerem a negyszog ket oldalat');

readln(szam1,szam2);

ker:=2*(szam1+szam2);

ter:=szam1*szam2;

if szam1=szam2 then begin

ker:=4*szam1;

ter:=sqrt(szam1) // úgyemlékszem hogy az sqrt emel négyzetre, ha nem akkor szam1*szam1, esetleg szam1^2//

writeln('A negyzet kerulete:',ker, ' cm');

writeln('A negyzet terulete: ',ter,' cm2');

end

else

BEGIN //ez kimaradt az előzőből//

ker:=2*(szam1+szam2);

ter:=szam1*szam2;

writeln('A teglalap kerulete: ',ker,' cm');

writeln('A teglalap terulete: ',ter,' cm2');

END; //ezis//

readkey;

END.

2009. szept. 20. 09:18
Hasznos számodra ez a válasz?
 3/8 anonim ***** válasza:
100%
Az első a "jó" megoldás, a második tök feleslegesen számoja ki 2x a kerületet/területet. Mivel a négyzet is téglalap, lehet számolni a 2*(a+b) ill. a*b képletekkel. Megjegyzés szintén a másodikhoz: sqrt az a square root, azaz négyzetgyök rövidítése, nem pedig a négyzeté (ami sqr)
2009. szept. 26. 21:04
Hasznos számodra ez a válasz?
 4/8 anonim ***** válasza:
100%
az else ágban lévő begin - end viszont tényleg kimaradt az első megoldásból
2009. szept. 26. 21:08
Hasznos számodra ez a válasz?
 5/8 anonim ***** válasza:
igen de a második megoldás takarékosabb, mivel egy számot néggyel megszorozni egyszerűbb, mint kettőt összeadni és azt megszorozni 2-vel (kettes számrendszerben a néggyel szorzás annyit jelent hogy a szám mögé rakunk két nullát) (meg szerintem egy szám négyzetét is gyorsabban kiszámolja mint két számot összeszoroz). Amúgy meg nem számol ki mindent kétszer, ha jobban megnézed elágazáson belül van.
2009. szept. 27. 08:12
Hasznos számodra ez a válasz?
 6/8 anonim ***** válasza:

De bizony kétszer kiszámolj. nézd csak meg a readln sor utáni 2 sort:

ker:=2*(szam1+szam2);

ter:=szam1*szam2;

Ez kiszámolja, mint téglalap területét. Ezt a 2 sort ki kellene venni. Igazad van, gyorsabb lesz, viszont nagyobb lesz a lefordított program. Hogy mi a jobb, attól függ, mire optimalizálunk:) Ilyen kódnál igazából mindegy. Egyébként nem vagyok benne bitos, hogy a 4-gyel való szorzást a(/mindegyik) pascal fordító shifteléssé alakítja, az a biztos, ha shl 2-t használ az ember.

2009. szept. 27. 11:01
Hasznos számodra ez a válasz?
 7/8 A kérdező kommentje:

Köszi a válaszokat! :D

[link]

2009. szept. 28. 16:16
 8/8 anonim ***** válasza:
jajj tényleg, elnéztem, az bennemaradt. sorry, igazad volt, tényleg kétszer számolja :/ de azalényeg hogy azt ki akartam törölni :D
2009. szept. 28. 22:05
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!