Kezdőoldal » Számítástechnika » Programozás » Pascal másodfokú függvény...

Pascal másodfokú függvény program?

Figyelt kérdés
A feladat, hogy pascalban írjunk másodfokú függvényre egy programot. Ezzel eddig nincs is gond, viszont egy text fájlból kell beolvasni a 3 számot, majd vizsgálni természetesen, hogy a gyök alatt nem negatív szám van-e, és a nevező nem nulla. Nekem a beolvasás részével lenne a gondom, és nagyon örülnék ha valaki segítene. Előre is köszönöm

2018. ápr. 4. 19:43
1 2
 11/20 tabaki ***** válasza:

Na jó. Lehet, hogy csak megkavarlak a csirke-szintű értelmezésemmel, de megpróbálok legalább annyit megmagyarázni, amennyi a feladathoz kell. Az egésznek a kulcsa a változók közt felsorolt

f : text;

Ezt a némiképpen megtévesztő nevű text típust próbáld meg egy eszközként elképzelni, mint a billentyűzetet, vagy a képernyőt. De ez az eszköz nem a gombnyomásokból, hanem egy megadott fájlból olvassa az adatokat, illetve, ha úgy állítod be, akkor egy fájlba ír, nem pedig a monitorra. A dolog a fenti sorral kezdődik, vagyis közlöd a fordítóval, hogy szükséged van ilyen eszközre, rakjon be egyet (vagy amennyit használni akarsz) a programodba. Az „f” elnevezés helyett állhat akármi, ez mindössze egy egyszerű és hagyományos név, de ha ez a megértést segíti, nyugodtan nevezheted másképp is. Mivel itt úgyis csak beolvasásra használod, írhatod ezt is:

fajlbol : text;

A következő lépés, hogy a kívánt fájlt hozzárendeld a létrehozott eszközhöz, erre szolgál az Assign utasítás:

Assign(fajlbol, 'adatok.txt');

Ezzel beállítod, hogy a „fajlbol” eszköz most éppen az adatok.txt nevű fájllal foglalkozzon (merthogy a program során ugyanezzel más fájlokat is kezelhetsz). Ha a fájlnevet elérési út nélkül használod, akkor a fájlnak a programmal azonos mappában kell lennie. Ezután a Reset utasítással meghatározod, hogy az eszközt most beolvasásra akarod használni:

Reset(fajlbol);

Az egyéb fájlműveletekkel nem foglalkozom, majd utánanézel. Innentől nagyon egyszerű: Mivel a fájl minden számot külön sorba írva tartalmaz, az adatokat ugyanolyan ReadLn utasításokkal olvashatod be, mint amit a billentyűzeten megszoktál, csak éppen a zárójelben jelezned kell, hogy most „fajlbol” eszközt használja a program az alapértelmezett helyett:

ReadLn(fajlbol, a);

ReadLn(fajlbol, b);

ReadLn(fajlbol, c);

Amikor elkészültél, az eszközt mindig le kell zárni, vagyis megszüntetni a kapcsolatot a fájllal. Ez biztosítja, hogy a program ne hagyjon maga után fölöslegesen lekötött memóriát, a nyitott fájl se sérülhessen valami meggondolatlan kikapcsolás miatt, illetve, hogy az eszköz más célra is használható legyen a programban:

Close(fajlbol);

Szerintem ez nem túl bonyolult, más kérdés, hogy tényleg csak a feladatra szorítkozó minimum, a fájlkezelés egésze jóval összetettebb megoldásokat kínál.

A text típus használata csak egyike a sokféle lehetőségnek, és ha belegondolsz, számok esetén nem is éppen magától értetődő, hiszen egy szöveg számként nem értelmezhető karaktereket is tartalmazhat. Amikor a program ilyet talál, ugyanúgy hibára fut, mint amikor billentyűzetről várt szám helyett kap valami mást. Hogyha azonban csak számokat kap, akkor szerencsére megérti az egyszerű, hagyományosan begépelt és szövegszerkesztőből mentett adatokat is. Itt ennyi is elegendő.

A fájlok használata során sokféle hibalehetőség adódik, például nincs is meg a fájl, sérült, vagy nincs jogod megnyitni, helytelen, vagy a kívánttól eltérő formátumú adatok lehetnek benne. Ezért a fentebb bemutatott szimpla forma egyáltalán nem szokásos, ezeket a műveleteket mindig hibakezeléssel alkalmazzák, legalább olyan szinten, hogy a program észlelje és kiírja, hogy a fájllal valami gond van, ahelyett, hogy minden eleganciát nélkülözve elszállna a fenébe. Ennek a módjára szintén keress rá, de itt és most így is működni fog.

Még annyit: A leírt módszer unit bevonása nélkül, az alaprendszerben is használható, de kissé divatjamúlt. A naprakészebb fájl-és hibakezelési utasításokat a sysutils unitban találod.

2018. ápr. 5. 11:05
Hasznos számodra ez a válasz?
 12/20 A kérdező kommentje:
Na végre! Köszönöm szépen :D így most már sokkal érthetőbb. Utolsó előtte válaszolónak üzenném, hogy mindenki magából indul ki, és ne vádolgasson, nagyon nem szeretem. Az utolsó válaszolónak hálás köszönetem, nagyon sokat segített a részletes leírás és magyarázás.
2018. ápr. 6. 12:51
 13/20 anonim ***** válasza:

Pascalban a file-ok kezeléséhez (számodra) mindössze három utasítás ismerete elég.


Ezek az assign (vagy assignfile), amivel a file nevét hozzárendeled egy változóhoz, hogy írhass bele vagy olvashass belőle.

A másik a reset (file megnyitása), a harmadik meg a close (vagy fileclose (file lezárása)).

Ezek mindegyike elérhető a neten, magyar nyelven is legalább három példányban.


[link]


[link]


[link]

2018. ápr. 6. 14:07
Hasznos számodra ez a válasz?
 14/20 anonim ***** válasza:

jav: fileclose = closefile.


--

Amit tabaki ír, annak egy része hülyeség.

2018. ápr. 6. 14:11
Hasznos számodra ez a válasz?
 15/20 anonim ***** válasza:

program Beolvas;

var

  i : integer;

  T : array[0..2] of integer;

  MyFile : text;

begin

    assignfile(MyFile,'bemenet.txt');

    reset(MyFile);


   for i := 0 to 0 do

    begin

      readln(MyFile,T[1],T[2],T[3]);

      writeln(T[1],' ',T[2],' ',T[3]);

    end;


   closefile(MyFile);

   readln();

end.


---


Bemenet.txt tartalma:


23

45

67

2018. ápr. 6. 14:35
Hasznos számodra ez a válasz?
 16/20 SimkoL ***** válasza:
Hová szúrjam a rozsdás bökőt, hogy ne fájjon.
2018. ápr. 6. 15:22
Hasznos számodra ez a válasz?
 17/20 tabaki ***** válasza:

@#15:

Kockázatos dolog a jóslás, de ez legalább három ok miatt nem fog működni.

2018. ápr. 6. 16:44
Hasznos számodra ez a válasz?
 18/20 anonim ***** válasza:

tabaki: Nem kivánlak megbántani, de kettőnk közül azt hiszem én vagyok az, aki tudja is, hogy mit ír, és miért úgy, ahogy.


Én itt soha nem tettem közzé olyan kódot, amit más, egy az egyben, annak megértése és korrekciója nélkül felhasználhatott volna. Okkal.


Ha kritikai énedet kivánod csiszolgatni, akkor javaslom a saját bejegyzéseid módszeresebb kontrollját, még a begépelés előtt. Ez a saját ismeretanyagodat is bővítené.

2018. ápr. 6. 17:33
Hasznos számodra ez a válasz?
 19/20 tabaki ***** válasza:

Hm, igazad lehet, kár volt elhamarkodnom, alighanem érdemes lett volna előre tisztáznunk, hogy ki melyik pascal-változatról beszél. {$mode objfpc} direktívával Free Pascalban is lefordul a te változatod is, sőt, a warningok ellenére helyesen működik.

A nagyobb hozzáértésedet nem vonom kétségbe, hiszen végül is semmi közöm a programozáshoz. Mindazonáltal egyrészt remélem, hogy az én bevallottan gyermeteg gyakorlati megközelítésem többet segített az elindulásban, mint a semmitmondó lesajnálás, másrészt rossz kódot Kérdező is tud írni, ebben a legszebb pedagógiai elvek nevében sem érdemes támogatni. És ezek az olyan, a témához végképp nem kapcsolódó értelmetlenségek becsempészését végképp nem mentik a szememben, mint a rafinált túlindexelés, vagy a fölöslegesen berakott ál-ciklus. Bizonyára a beolvasáson belül is találhattál volna valami tanulságos megoldani valót; annak, hogy kalapból előrántott marhaságokkal belerondíts a bemutatódba, semmi értelmét nem látom.

2018. ápr. 6. 19:29
Hasznos számodra ez a válasz?
 20/20 A kérdező kommentje:
Nagyon szépen köszönöm a válaszokat, minden linket, amit küldtetek, elolvasok a mai napon, de már eddig is néhányat elolvastam, és sokat segítettek. Még egyszer köszönöm a hasznos válaszokat, akik meg fikázni jöttek, azokat meg arra kérek, hogy hogyha csak ennyit tudnak tenni itt ezen az oldalon, akkor szerintem rossz helyen járnak, mivel eddig úgy tudtam, ez az oldal arra lett kitalálva, hogy az emberek nyugodtan kérdéseket tegyenek fel, és segítséget kérjenek.
2018. ápr. 7. 14:10
1 2

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!