Informatika2-2012/Gyakorlat07

A MathWikiből
A lap korábbi változatát látod, amilyen Ador (vitalap | szerkesztései) 2012. március 28., 16:04-kor történt szerkesztése után volt.
(eltér) ←Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)

Tartalomjegyzék

7. gyakorlat

Makrófüggvény

Írj makrófüggvényt (preprocesszor-utasítással definiált függvényt) ami két érték közül kiválasztja a nagyobbat! Használd a " ? : " feltételes operátort!


Fájlkezelés

A weather.txt fájllal fogunk dolgozni, letölthető innen. Nézd meg a fájlt (nyitsd meg bármilyen szövegszerkesztővel) és a szerkezete alapján (egy soron belül pontosvesszővel vannak elválasztva a mezők, mindig ugynanannyi mező van soronként; az első sor pedig az oszlopok neveit tartalmazza) hozz létre egy struktúrát, amibe majd beolvashatjuk az adatsorokat!

Olvassuk be az adatfájl első 5 sorát fscanf()-fel egy ciklusban, mindig dinamikusan foglalj helyet az újabb struktúrának, és a pointereket gyűjtsd egy tömbben!

Írd ki a beolvasott adatokat fprintf()-fel egy új fájlba! A kimenetben a hőmérséklet (vagyia a "temperature" oszlop) ne Fahrenheit hanem Celsius fokban legyen! Az átalakító képlet: [°C] = ([°F] ‒ 32) · 5/9

Külön függvény végezze:

  • a beolvasást
  • a számolást (°C -> °F konvertálást)
  • a kiírást


A program argumentumai

Módosítsd az előző feladat megoldását úgy, hogy ne az első 5 sort olvassuk be, hanem a program futtatásakor első argumentumként megadott szám-nyit! A string-int átalalkításhoz használd az atoi() függvényt (amit az stdlib.h tartalmaz). Ha nincs annyi sor az input fájlban amennyit a felhasználó szeretett volna, akkor írjon ki hibaüzenetet a program!


Több forrásfájl

Az előző programkódot szedjük szét két fájlba! Az egyik tartalmazza a main()-t és a konvertálást, a másik pedig a kiíró- és beolvasó függvényeket!

Próbálj ki kétféle módszert is:

  • a fájlkezelő függvényeket egy "my_io.h" fájlba mented, és a main()-t tartalmazó c-fájlba include-old:
  #include "my_io.h"
  
  • mindkét fájl ".c" kiterjesztésű, a gcc-nek mindkettőt add meg! Ha CodeLite-tal fordítasz, akkor csak annnyi hogy ugyanabba a projektbe vegyél fel még egy .c fájlt és azt hiszem menni fog.
Személyes eszközök