Informatika2-2012/Gyakorlat07
(Új oldal, tartalma: „= 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 nagyob…”)
Újabb szerkesztés →
A lap 2012. március 28., 17:04-kori változata
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.