10 es Feladat: Megolda si terv: Specifika cio · HORVÁTH ZSÓFIA 1. Beadandó feladat...

6
HORVÁTH ZSÓFIA 1. Beadandó feladat [email protected] (HOZSAAI.ELTE) 2011. ápr 7. 8-as csoport 1 10-es Feladat: Keressünk egy egész számokat tartalmazó négyzetes mátrixban olyan oszlopot, ahol a főátló alatti elemek mind nullák! Megoldasi terv: Specifikacio: A = (mat: Z n×m ,ind: N, l: L) Ef =(mat = mat`) n-1 Uf =( Ef ^ (l,ind) = SEARH (mind_nulla(i)) i=1 függvény szignatúra: mind_nulla: Z L függvény definíciója: n mind_nulla (k) : SEARCH (mat [i,j]≠0) j=1+i Lineáris keresésbe ágyazott optimista lineáris keresés. Struktogram:

Transcript of 10 es Feladat: Megolda si terv: Specifika cio · HORVÁTH ZSÓFIA 1. Beadandó feladat...

Page 1: 10 es Feladat: Megolda si terv: Specifika cio · HORVÁTH ZSÓFIA 1. Beadandó feladat zsufie92@gmail.com (HOZSAAI.ELTE) 2011. ápr 7. 8-as csoport 1 10-es Feladat: Keressünk egy

HORVÁTH ZSÓFIA 1. Beadandó feladat [email protected]

(HOZSAAI.ELTE) 2011. ápr 7. 8-as csoport

1

10-es Feladat:

Keressünk egy egész számokat tartalmazó négyzetes mátrixban olyan oszlopot, ahol a

főátló alatti elemek mind nullák!

Megolda si terv: Specifika cio :

A = (mat: Zn×m,ind: N, l: L) Ef =(mat = mat`) n-1 Uf =( Ef ^ (l,ind) = SEARH (mind_nulla(i)) i=1

függvény szignatúra:

mind_nulla: Z L

függvény definíciója:

n mind_nulla (k) : ∀ SEARCH (mat [i,j]≠0) j=1+i

Lineáris keresésbe ágyazott optimista lineáris keresés.

Struktogram:

Page 2: 10 es Feladat: Megolda si terv: Specifika cio · HORVÁTH ZSÓFIA 1. Beadandó feladat zsufie92@gmail.com (HOZSAAI.ELTE) 2011. ápr 7. 8-as csoport 1 10-es Feladat: Keressünk egy

HORVÁTH ZSÓFIA 1. Beadandó feladat [email protected]

(HOZSAAI.ELTE) 2011. ápr 7. 8-as csoport

2

Alternatí v Megolda si terv: Specifika cio :

A = (matrix: Zn×m, l: L) Ef =( matrix = matrix` ^ n ≥2) n-1 Uf =( Ef ^ l= SEARH (matrix [n+1][n] ==0)) i=1

függvény szignatúra:

mind_nulla: Z L

függvény definíciója:

n-1 mind_nulla (k) : ∀ SEARCH (matrix [n+1][n]==0) j=1

Lineáris keresésbe ágyazott optimista lineáris keresés.

Struktogram:

Page 3: 10 es Feladat: Megolda si terv: Specifika cio · HORVÁTH ZSÓFIA 1. Beadandó feladat zsufie92@gmail.com (HOZSAAI.ELTE) 2011. ápr 7. 8-as csoport 1 10-es Feladat: Keressünk egy

HORVÁTH ZSÓFIA 1. Beadandó feladat [email protected]

(HOZSAAI.ELTE) 2011. ápr 7. 8-as csoport

3

Implementa cio : Program va z

Függvények – egyszerű – kapcsolódási szerkezete:

Bemeno adatok forma ja

A program az adatokat be egy külső fájlból olvassa be, közvetlenül nem lehet megadni őket. Ha a programot parancssorból indítjuk úgy, hogy paraméterként megadjuk a bemenő adatokat tartalmazó szöveges állomány nevét, akkor innen olvassa be a program az adatokat. Ha nem adunk meg a parancssorban állomány nevet vagy nem parancssorból indul a program, akkor a program újra megkérdezi az adatbevitelhez az állomány nevét. Ha rosszul adja meg az állománynevet vagy nem létező fájlnevet ad meg a felhasználó, akkor a program újra bekéri a beolvasni kívánt adatot, azaz a fájl nevét a kiterjesztésével.

A bemeneti állomány formája kötött, s arról feltesszük, hogy helyesen van kitöltve,

ezért ezt külön nem ellenőrizzük. Az első sorban a mátrix sor– és oszlopszáma szerepel,

szóközökkel elválasztva. (Mivel négyzetes mátrixokra akarjuk használni a programot, az

oszlop és sorszáma azonos, de ha nem a program úgyis lefut, csak rossz eredményt ad.)

Ezt követően olvashatók a mátrix elemei –csak a konzolablakban– , ezek is szóközökkel

elválasztva, majd egy szöveges válasz. Igaz eredményt kapva a program azt is

megmondja, melyik oszlopban van a főátló alatt csak nulla.

Minden sor végén (az utolsó sor végén is) sorvége jel legyen.

Példák:

2 2

0 0

1 0

3 3

1 2 3

2 0 4

1 0 0

4 4

1 2 3 4

0 6 7 8

0 0 1 2

0 0 0 5

5 5

9 8 7 6 5

4 3 2 1 0

1 2 3 4 5

6 7 8 9 0

0 0 0 1 0

main()

beolvas_param() beolvas() oszlop_nulla() mind_nulla() fileKi()

Page 4: 10 es Feladat: Megolda si terv: Specifika cio · HORVÁTH ZSÓFIA 1. Beadandó feladat zsufie92@gmail.com (HOZSAAI.ELTE) 2011. ápr 7. 8-as csoport 1 10-es Feladat: Keressünk egy

HORVÁTH ZSÓFIA 1. Beadandó feladat [email protected]

(HOZSAAI.ELTE) 2011. ápr 7. 8-as csoport

4

A program fu ggve nyei

main()

Feladat: A főprogram gondoskodik a beolvasás, a kiértékelés és a kiíratás részek aktivizálásáról. Bemenő adatok: int n, m a mátrix méreteit tartalmazó azonos értékű változók vector<vector<int> > matrix a mátrix elemeit tartalmazó mátrix Kimenő adatok: Válasz: Volt ilyen oszlop, Nem volt ilyen oszlop. (szöveges válasz) Válasz: Melyik oszlop volt, ha volt. (visszatérési-érték) Tevékenység: Elvégzi a fájlból való beolvasást. Ezután meghívja a feladatot megoldó mind_nulla() függvényt. Ennek eredményétől függően pozitív vagy negatív választ ír a standard kimenetre és a fájlba. Definíció: Helye: 1bead10.cpp

beolvas()

Feladat: A mátrix sor- és oszlop nagyságát, illetve a mátrix elemeit olvassa be a megadott beviteli állományból.

Bemenő adatok: string fajlnev az inputfájl neve Kimenő adatok: int n, m a mátrix méreteit tartalmazó azonos értékű változók vector<vector<int> > matrix a mátrix elemeit tartalmazó mátrix

Tevékenység: Elvégzi a fájlból való beolvasást és megfelelő méretűre (n és „m”) állítja be a mátrix sor és oszlop „tömbjét”, majd feltölti az értékeit intekkel. A beolvasott adatok a konzolablakban is megjelennek.

Definíció: Helye: 1bead10.cpp void beolvas(vector<vector<int> > &mat)

beolvas_param()

Csupán annyiban különbözik a beolvas() függvénytől, hogy a cmd-ből való indításánál hat.

Definíció: Helye: 1bead10.cpp void beolvas_param(vector<vector<int> > &mat, string fname)

Page 5: 10 es Feladat: Megolda si terv: Specifika cio · HORVÁTH ZSÓFIA 1. Beadandó feladat zsufie92@gmail.com (HOZSAAI.ELTE) 2011. ápr 7. 8-as csoport 1 10-es Feladat: Keressünk egy

HORVÁTH ZSÓFIA 1. Beadandó feladat [email protected]

(HOZSAAI.ELTE) 2011. ápr 7. 8-as csoport

5

bool oszlop_nulla()

Feladat: Megnézi, hogy van-e olyan oszlop, amiben a főátló alatti elemek mind nullák.

Bemenő adatok: vector<vector<int> > matrix a mátrix neve Kimenő adatok: bool értékt ami vagy true vagy false

Tevékenység: Optimista Lineáris Keresés: Végigmegy a mátrix oszlopainak (a főátló alatti) elemein és amint olyan elemet talál köztük, ami nem nulla, továbblép a következő oszlopra. Ezt a műveletet az utolsó előtti oszlopig ismételi. Ha nem talált olyan oszlopot, ami mind 0 visszaadja a „p” változónak a hamis értéket, ha talált csak 0-ból álló főátló alatti elemeket, akkor kilép a ciklusból és a „p” értékét beállítja igaznak. Definíció: Helye: 1bead10.cpp bool oszlop_nulla(vector< vector<int> > &mat,bool &p, int i, int &ind)

mind_nulla()

Feladat: Megnézi, hogy van-e olyan oszlop, amire igazat ad az „oszlop_nulla()” függvény.

Bemenő adatok: vector<vector<int> > matrix a négyzetes mátrix neve. Kimenő adatok: bool változó ami vagy true vagy false Tevékenység: Lineáris Keresés: Végigmegy a mátrix oszlopaira kapott logikai eredményeken, melyet a „bool oszlop_nulla()” függvény adott az adott oszlopoknak és megkeresi az első olyat, mely igaz. Ha nem talált, akkor a mátrixnak egyik oszlopában sincs a főátló alatt csak 0.

Definíció: Helye: 1bead10.cpp bool mind_nulla(vector<vector<int> > &mat, int &ind,bool &l)

fileKi()

Feladat: Az „eredmeny.txt” fájlba kiírja a választ.

Kimenő adatok: válasz Volt ilyen oszlop és melyik; Nem volt ilyen oszlop. Definíció: Helye: 1bead10.cpp void fileKi(string valasz, bool l,int ind)

Page 6: 10 es Feladat: Megolda si terv: Specifika cio · HORVÁTH ZSÓFIA 1. Beadandó feladat zsufie92@gmail.com (HOZSAAI.ELTE) 2011. ápr 7. 8-as csoport 1 10-es Feladat: Keressünk egy

HORVÁTH ZSÓFIA 1. Beadandó feladat [email protected]

(HOZSAAI.ELTE) 2011. ápr 7. 8-as csoport

6

Tesztele si terv

Tesztesetek a feladat specifikációja alapján (fekete doboz tesztelés)

1. Ha a mátrix elemeinek száma kisebb, mint 2, a program lefut, eredmény: nem volt ilyen nap. (6.txt)

2. Ha egyáltalán nincs benne olyan sor akkor válaszként hamisat ad. (1.txt) 3. Ha rosszul van kitöltve a fájl, akkor is lefut, de hamis értéket ad vissza. (3.txt) 4. Ha minden eleme 0, akkor már az első oszlop után igaz eredményt ad vissza. (4.txt) 5. Ha a legutolsó elem 0, akkor is hamisat dob, hiszen az még maga a főátló. (2.txt) 6. Ha az elemek helyett karaktereket tartalmazó fájlt nyit meg. (7.txt)

Tesztesetek a megoldó kód alapján (fehér doboz tesztelés)

1. A beolvasást végző függvények tesztelése:

Parancssorból indítás fájlnévvel és anélkül. Nem létező vagy rossz fájlnév megadása. Üres állomány esetén a program áll, majd hibát észlel és leáll. (5.txt) 2. Az oszlop _nulla () függvény tesztelése:

1. ha sehol sincs benne nulla (1.txt) 2. ha az első oszlop mind nulla (8.txt) 3. ha a második oszlop nulla (matrix.txt) 4. ha mind nulla (4.txt) 5. ha a főátló nulla (9.txt)

3. A mind_nulla () függvény tesztelése:

1. igaz eredmények:

a. matrix.txt, 4.txt, 8.txt

2. hamis eredmények:

a. 1.txt, 2.txt