Kezdőoldal » Számítástechnika » Programozás » Free pascal trapéz kerülete,...

Free pascal trapéz kerülete, területe?

Figyelt kérdés
Sziasztok! Infó háziban az kaptuk, hogy a Free pascalon csináljuk meg a trapéz kerületét és területét. Tudnátok nekem segíteni? (azt sem értem, hogy miről van szó, a tanár nem magyaráz, csak diktál) Leírnátok, hogy mit kellene beírnom? Előre is nagyon szépen köszönöm!! :)

2016. okt. 9. 15:42
 1/9 anonim ***** válasza:

Megnézed mely adatok szükségesek a terület, kerület számításához. Ezeknek és az eredménynek is létrehozol egy változót, majd bekéred az adatokat. Bekérés után a megfelelő matematikai műveletet elvégzed, és az eredményt kiírod.


Érthetőbben: HA (fikció) a terület alap*magasság*hosszúság*pi, akkor csinálsz mind a négynek egy változót, majd bekéred őket. Amikor bekéred a számokat, akkor azzal a változónak értéket adsz. Ezek után elvégzed a tényleges műveleteket, ahol az eredmény értéke a műveletekkel lesz egyenlő, végül kiírod hogy az eredmény az eredmény változó értéke.

2016. okt. 9. 16:26
Hasznos számodra ez a válasz?
 2/9 tabaki ***** válasza:
Írd le nekem részletesen pontról pontra, hogy hogyan számolod ki papíron, én meg átírom neked pascalra. Jó?
2016. okt. 9. 18:55
Hasznos számodra ez a válasz?
 3/9 tabaki ***** válasza:
Elsőként talán tisztázhatnád, milyen adatok alapján kéne kiszámolnod a fentieket.
2016. okt. 9. 19:13
Hasznos számodra ez a válasz?
 4/9 A kérdező kommentje:
Köszönöm a segítséget! Adatokat nem kaptunk, csak ennyit mondott a tanár.
2016. okt. 12. 17:21
 5/9 SimkoL ***** válasza:

Írtam egy kis mintát a Wiki alapján: [link]

de az abban sántít, hogy csak kimondottan trapézokra érvényes, ezért be kell vetni egy kis 'elő ellenőrzést'. Ha a két párhuzamos oldal - a, c - egyenlő akkor már az lehet négyzet, téglalap, paralelogramma és az egyenletben az a-c 0-t ad a nevezőben. Fejleszt tovább ha gondolod.


program trapez;


var a_oldal, b_oldal, c_oldal, d_oldal : Integer;

kerulet, terulet, tmp, tmp1 : Real;


begin

Write('Add meg az "a" oldalt: ');

ReadLn(a_oldal);

Write('Add meg az "b" oldalt: ');

ReadLn(b_oldal);

Write('Add meg az "c" oldalt: ');

ReadLn(c_oldal);

Write('Add meg az "d" oldalt: ');

ReadLn(d_oldal);

tmp1 := (a_oldal + c_oldal) / (4 * (a_oldal - c_oldal));

tmp := (a_oldal + b_oldal - c_oldal + d_oldal) *

(a_oldal - b_oldal - c_oldal + d_oldal) *

(a_oldal + b_oldal - c_oldal - d_oldal) *

(-a_oldal + b_oldal + c_oldal + d_oldal);

terulet := Abs(tmp1 * Sqrt(tmp));

kerulet := a_oldal + b_oldal + c_oldal + d_oldal;

WriteLn('Kerulet: ', kerulet:0:2);

WriteLn('Terulet: ', terulet:0:2);

ReadLn;

end.

2016. okt. 12. 18:04
Hasznos számodra ez a válasz?
 6/9 tabaki ***** válasza:

@SimkoL:

Meg kell mondjam, én egyelőre nem értem az ellenőrzésedet, úgyhogy feltételezem, hogy Kérdezőnek is kínaiul van. Nem ártana, ha egy kissé kifejtenéd emberi nyelven is. Valami probléma amúgy is lehet a programoddal, mert hasraütéssel beírt, de nem túl extrém számokkal többször is kiakasztottam.

Egyébként gyanítom, hogy a tanár csak a Wikipédiában idézett két egyszerű képletre gondolt -- ezeket majd mindjárt lefordítom --, de a feladat annyiban nem tisztességes, hogy a két képlet nehezen kapcsolható össze. Egy változatát megírtam a magasság, a két alap és az egyik szár hosszának megadásával, de erre se mondanám, hogy könnyed bevezetés a nyelv legalapabb alapjainak megértésébe.

2016. okt. 12. 20:53
Hasznos számodra ez a válasz?
 7/9 tabaki ***** válasza:

Itt a két program. Az oldalak változóit a Wikipédia fentebb linkelt cikke alapján neveztem el, a két képlet is onnan való, csak a programban természetesen másképpen kell leírnod őket.


A kerületszámításból hiányzik egy nagyon fontos elem, hogy a bevitt hosszúságú szakaszokból valóban összeállítható-egy trapéz. Ehhez ugyanis ellenőrizned kéne, hogy van-e két párhuzamos oldala, ez szerintem bonyolultabb feladat a tőled elvárhatónál.

A képlet: a + b + c + d


program trapez_kerulete;

uses crt;


var

a, b, c, d, kerulet : real;


begin

      // cím kiírása:

      WriteLn('A TRAPEZ KERULETENEK KISZAMITASA');

      WriteLn('az oldalak hossza alapján');

      WriteLn;

     

      // a kerületszámításhoz szükséges adatok bekérése

      Write('Az elso oldal hossza: ');

      ReadLn(a);

      Write('A masodik oldal hossza: ');

      ReadLn(b);

      Write('A harmadik oldal hossza: ');

      ReadLn(c);

      Write('A negyedik oldal hossza: ');

      ReadLn(d);

     

      // a kerulet kiszámolása:

      kerulet := a + b + c + d;

     

      // az eredmény kiírása

      WriteLn('A trapéz kerülete: ', kerulet:5:3);

      ReadKey;

end.


* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *


A területszámításban nincs meg a fenti probléma, viszont az így megadott trapéznak nem tudod kiszámolni a kerületét. Ha elsőre nem világos, hogy miért: Először képzelj el egy szokásos trapézt, amelyiknek a rövidebb alapja a hosszabbik fölött van, és elfér a füzetedben. A két szár nyilván csak néhány centi hosszú lesz. Ha viszont a rövidebb alapot ugyanabban a magasságban elcsúsztatod mondjuk 100 méterre, akkor a trapéz területe a képlet alapján semmit sem változik, viszont a szárai több, mint 100 méteresre nőnek, tehát már az egyik hossza is sokszorosan meghaladja az előzőnek a kerületét.

A képlet: (a + c) / 2 * m


program trapez_terulet;

uses crt;


var

a, c, m, terulet : real;


begin

      // cím kiírása:

      WriteLn('A TRAPEZ TERULETENEK KISZAMITASA');

      WriteLn('az alapok és a magasság alapján');

      WriteLn;

     

      // a területszámításhoz szükséges adatok bekérése:

      Write('Kérem az egyik alap hosszúságát: ');

      ReadLn(a);

      Write('Kérem a másik alap hosszúságát: ');

      ReadLn(c);

      Write('Kérem a trapéz magasságát: ');

      ReadLn(m);

     

      //A terület kiszámolása:

      terulet := (a + c) / 2 * m;

     

      // terület kiírása:

      WriteLn('A trapéz területe: ', terulet:5:3);

      ReadKey;

end.


* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *


Az oldalhosszokból területet számoló hosszabb képletet (amelyet SimkoL is használ) én nem írtam meg, egyébként ugyanaz a gond vele, mint a kerületszámolással, hogy az adatok alapján előbb ellenőrizni kéne az oldalak párhuzamosságát.

Annak ellenére, hogy az órán nem kaptatok rendes magyarázatot, már ezek a nagyon egyszerű programok is túl sok elemet tartalmaznak ahhoz, hogy mindent elmeséljünk. Próbálj az interneten tájékozódni, és csak azokra a dolgokra rákérdezni, amelyeket annak alapján sem értettél meg.

[link]

[link]

2016. okt. 12. 22:05
Hasznos számodra ez a válasz?
 8/9 tabaki ***** válasza:
+ Bocs, a kiírandó szövegekben sok helyen benne felejtettem az ékezeteket, ez Windowsban hülyén fog kinézni. Gyomláld ki őket.
2016. okt. 12. 22:08
Hasznos számodra ez a válasz?
 9/9 tabaki ***** válasza:

Itt az én kísérletem a puszta oldalhosszok alapján való számolásra:

[link]


Nemigen hiszem, hogy ilyesmit várnának el tőled, inkább csak azért tettem fel, hátha SimkoL még jár erre, és optimalizálja...


@SimkoL:

A tisztességes teszteléshez már fáradt vagyok, de úgy tűnik, működőképes. Mint láthatod, még mindig nem teljesen általános, hanem már az adatbekérésnél megkülönbözteti az alapokat és a szárakat. Ha eddig jó, akkor tulajdonképpen az sem ígérkezik nehéz feladatnak, de egyelőre nem volt lelkierőm nekimenni.

2016. okt. 13. 23:48
Hasznos számodra ez a válasz?

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

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!