Feladatok
1. Készítsünk
programot, amely elkészíti két vektor diadikus szorzatát! (megoldás)
Olvassunk be két (a,b) vektort standard bemenetről és készítsük el az abT
szorzatmátrixot, majd az eredményt jelenítsük meg standard kimeneten!
Szükséges
utasítások:
int** M; deklarál
egy ’M’ nevű, egész elemű, dinamikus mátrixot
M=new int*[n] a
fenti ’M’ –hez deklarál egy ’n’ dimenziós, vektorokat
tartalmazó vektort
M[i]=new int[m]; a
fenti ’M’ i. sor/oszlopeleméhez deklarál egy ’m’ dimenziós vektort
M[i][j] hivatkozás a fenti ’M’ mátrix (i,j) elemére
Feladat egyszerűsítése: írjuk meg a programot úgy, hogy ne hozzuk létre a reprezentáló mátrixot! (megoldás)
Feladat nehezítése: a program a kimenetet oszlophelyesen jelenítse meg! (megoldás)
abs(x) az
’x’ numerikus változónak az abszolútértékével visszatérő
függvény
2. Készítsünk programot, amely egy karakterlánc (tömb) elemeinek sorrendjét megfordítja! (megoldás)
Olvassunk be egy karaktereket tartalmazó tömböt standard bemenetről, majd az elemeit írjuk ki standard kimenetre, fordított sorrendben!
Szükséges utasítások:
cin.clear() a standard input bemeneti folyamnak az állapotjelző flag –jeit alapállapotra állítja
cin.ignore(max,'\n') a standard input bemeneti folyamnak a bufferében maradt utolsó ’max’ db karakterét törli, vagy amíg nem talál ’\n’ (sorvége) jelet
Feladat nehezítése: írjunk olyan beolvasó kódrészt, amely bemenete ténylegesen karakter típusú! (megoldás)
#include <conio.h> a ’conio.h’ (console i/o) könyvtár inklúdolása, ez már nem tartozik a standard c++ -hoz, csak windows/dos alatt áll rendelkezésre
getch() standard, nem bufferelt bemenetről beolvas egyetlen karaktert, majd visszatér annak az ascii kódjával (a conio.h könyvtár által definiált utasítás, UNIX –os megfelelője a ’curses.h’ könyvtárban található)
Feladat nehezítése: módosítsuk a fenti programot úgy, hogy a megismert ’conio.h’ alkalmazásával dinamikusan, egy adott billentyűlenyomással bezárólag várja a tömb bementi adatait! (megoldás)
#define NÉV ÉRTÉK az
előfordítónak adott utasítás, megy egy ’NÉV’ nevű,
’ÉRTÉK’ értékű konstans változót definiál
3. Oldjuk meg az előző feladatot úgy, hogy a bemenet és kimenet szövegfájl legyen! (megoldás, tesztadat)
A program két, parancssorból várt paraméterből várja a bemeneti és kimeneti fájl nevét! A bemeneti fájl első sora egy természetes szám legyen, amely a fájl további tartalmának karakterszámát határozza meg!
Szükséges utasítások:
#include <fstream> az ’fstream’ nevű, standard c++ -hoz tartozó folyamkezelő függvényeket és osztályokat definiáló könyvtár
ifstream ins; az ’fstream’ könyvtár által definiált osztályt ’ins’ néven példányosítja, amely bementi fájlok kezelésére szolgál (input file stream)
ofstream ous; mint a fenti, csupán kimeneti fájlokra vonatkozik (output file stream)
argc egész szám, a parancssorból kapott paraméterek számát határozza meg
char* argv[] a parancssorból kapott paramétereket tartalmazó tömb
ins.open(fájlnév) a ’fájlnév’ nevű fájlt megnyitja (a fenti példányosítás alapján olvasásra)
ins.fail() egy bites logikai állapotjelző, amely akkor igaz, ha hiba történt a fájl megnyitása során
ins >> x; az ’x’ változóba elhelyezi a fenti ’ins’ folyam következő, whitespace karakterekkel határolt blokkjait
ins.unsetf(ios_base::skipws); a fenti ’ins’ folyam formátumjelző flag –jei közül kikapcsolja a whitespace karakterek átugrását az ’>>’ operátor használata esetén
ins.setf(ios_base::skipws); a fenti művelet fordítottja
ins.get() beolvassa a soron következő karaktert a fenti ’ins’ folyamról, majd a következőre lép
ous.put(ch) a ’ch’ nevű karaktertípusú változót elhelyezi az aktuális pozícióra, a fenti ’ous’ kimeneti folyamon
ins.close(); a fenti ’ins’ nevű folyamot bezárja
Feladat nehezítése: írjuk meg úgy a programot, hogy ne várja a bemeneti fájlból a beolvasandó karakterek számát és hogy akár egy fájlban, helyben is végre lehessen hajtani a műveletet, gyakorlatilag az adott szöveg „tükrözésével”! (megoldás, tesztadat)
fstream f; példányosítja ’f’ néven az ’fstream’ könyvtár által definiált hasonló nevű osztályt, mely ötvözi az ifstream és ofstream tulajdonságait
f.open(fájlnév,fstream::in | fstream::out); megnyitja a ’fájlnév’ nevű fájlt olvasásra és írásra, a fenti ’f’ nevű folyamkezelőre
f.seekg(0,ios::end); az olvasó pointer helyzetét a fenti ’f’ folyamhoz tartozó buffer végére állítja
f.seekg(0,ios::beg); mint a fenti, csupán a pointert az elejére állítja
f.tellg() egész értékű függvény, a fenti ’f’ folyam olvasó pointerének pozíciójával tér vissza
f.clear(); a standard bemenetnél megismert ’clear()’ függvény a fenti ’f’ folyam állapotjelző flag –jeit alapállapotra állítja (a fájlvége bittel együtt)
Projectek (zip):
1. feladat (a), 1. feladat (b), 1. feladat (c), 2. feladat (a), 2. feladat (b), 2. feladat (c), 3. feladat (a), 3. feladat (b)