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)