HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Hasonló dokumentumok
Programozás Minta programterv a 1. házi feladathoz 1.

Feladat. Bemenő adatok. Bemenő adatfájlok elvárt formája. Berezvai Dániel 1. beadandó/4. feladat április 13. Például (bemenet/pelda.

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés

Programozás(A szakirány) II. beadandó feladat Farkas András HP6S15 1. csoport Veszprémi Anna / Hudoba Péter

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata

Objektum elvu alkalmaza sok fejleszte se

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása

Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE cím: Név: Kurzuskód:

INFORMATIKA javítókulcs 2016

Szkriptnyelvek. 1. UNIX shell

1. Alapok. #!/bin/bash

1. Alapok. Programozás II

Alkalmazott modul: Programozás 4. előadás. Procedurális programozás: iteratív és rekurzív alprogramok. Alprogramok. Alprogramok.

1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb

BASH script programozás II. Vezérlési szerkezetek

Felvételi tematika INFORMATIKA

Programozás Minta programterv a 2. házi feladathoz 1.

Informatika terméktervezőknek

Programozási nyelvek Java

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

Programozási nyelvek Java

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

Bevezetés a programozásba I 8. gyakorlat. C++: szövegfolyamok, intelligens tömbök. Adatfolyamok Hibalehetőségek

Gyakorló feladatok Gyakorló feladatok

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

Bevezetés a Python programozási nyelvbe

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Dinamikus változók. Dinamikus változók. Dinamikus változók. Dinamikus változók. 7.

S z á m í t ó g é p e s a l a p i s m e r e t e k

Programozás II. 2. Dr. Iványi Péter

Megjegyzés: A programnak tartalmaznia kell legalább egy felhasználói alprogramot. Példa:

Bevezetés a programozásba I 8. gyakorlat. C++: szövegfolyamok, intelligens tömbök

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

Programozás I. gyakorlat

1. feladat Készítse el szövegszerkesztővel, majd mentse osztály.txt néven a következő tartalmú szöveges fájlt:

Programozás C nyelven 5. ELŐADÁS. Sapientia EMTE

Programozási nyelvek II. JAVA

Tartalomjegyzék. Általános Információ! 2. Felhasználói dokumentáció! 3. Feladat! 3. Környezet! 3. Használat! 3. Bemenet! 3. Példa!

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok

Algoritmizálás, adatmodellezés tanítása 6. előadás

Bevezetés a programozásba I.

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

Archivált tanulmányi adatok importálása. Felhasználói dokumentáció verzió 2.0.

Bevezetés a programozásba I.

Smalltalk 2. Készítette: Szabó Éva

A feladat lényege egy felhasználói típusnak a zsák típusnak a megvalósítása.

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

BME MOGI Gépészeti informatika 4.

A félév során előkerülő témakörök

OEP Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. Feladat. Elemzés 1

7. Laboratóriumi gyakorlat, 1. rész : Vezérlési szerkezetek II.

Java gyakorlat feladatai e s megolda sai ( )

Bevezetés a programozásba I.

3. ZH-ban a minimum pontszám 15

INFORMATIKA tétel 2018

A héj vezérlő szerkezetei I.

Programozási alapismeretek 2009/2010

Programozás alapjai. 6. gyakorlat Futásidő, rekurzió, feladatmegoldás

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.

7. gyakorlat Sorozatok, Fájlkezelés

INFORMATIKA tétel 2019

Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs

AWK programozás, minták, vezérlési szerkezetek

// keressük meg a legnagyobb faktoriális értéket, ami kisebb, // mint százmillió

Webprogramozás szakkör

Bevezetés a programozásba. 5. Előadás: Tömbök

AWK programozás, minták, vezérlési szerkezetek

BME MOGI Gépészeti informatika 5.

Dinamikus modellek szerkezete, SDG modellek

Programozás alapjai 9.Gy: Struktúra 2.

Készítette: Nagy Tibor István

BASH SCRIPT SHELL JEGYZETEK

Bevezetés a programozásba I.

Algoritmizálás és adatmodellezés tanítása 2. előadás

10. gyakorlat Struktúrák, uniók, típusdefiníciók

Programozás 6. Dr. Iványi Péter

Python tanfolyam Python bevezető I. rész

Matlab alapok. Baran Ágnes. Baran Ágnes Matlab alapok Elágazások, függvények 1 / 15

Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek

A legfontosabb DOS parancsok

3. Előadás. Megyesi László: Lineáris algebra, oldal. 3. előadás Lineáris egyenletrendszerek

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

PROGRAMOZÁS ALAPFELADATOK

Bevezetés a C++ programozásba

Programozási nyelvek II.: JAVA, 4. gyakorlat

1. Jelölje meg az összes igaz állítást a következők közül!

Operációs rendszerek gyak.

AWK programozás Bevezetés

2. Készítsen awk szkriptet, amely kiírja az aktuális könyvtár összes alkönyvtárának nevét, amely februári keltezésű (bármely év).

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

Mérnöki programozás 7. Szerkesztette: dr. Vass Péter Tamás

Szkriptelési feladat megoldása

DOKUMENTÁCIÓ KÉSZÍTETTE: Naszári László I. évf. levelező Informatika tanári szak 2003.

INFORMATIKA tétel 2017

Programozás alapjai. 5. előadás

Átírás:

10-es 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: 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: 1

Alternatív Megolda si terv: Specifika cio : A = (matrix: Z n 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: 2

Implementa cio : Program va z Függvények egyszerű kapcsolódási szerkezete: main() beolvas_param() beolvas() oszlop_nulla() mind_nulla() fileki() 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 3

A program fu ggve nyei main() A főprogram gondoskodik a beolvasás, a kiértékelés és a kiíratás részek aktivizálásáról. 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 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) 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. beolvas() A mátrix sor- és oszlop nagyságát, illetve a mátrix elemeit olvassa be a megadott beviteli állományból. string fajlnev az inputfájl neve 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 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. 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. void beolvas_param(vector<vector<int> > &mat, string fname) 4

bool oszlop_nulla() Megnézi, hogy van-e olyan oszlop, amiben a főátló alatti elemek mind nullák. vector<vector<int> > matrix a mátrix neve bool értékt ami vagy true vagy false 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. bool oszlop_nulla(vector< vector<int> > &mat,bool &p, int i, int &ind) mind_nulla() Megnézi, hogy van-e olyan oszlop, amire igazat ad az oszlop_nulla() függvény. vector<vector<int> > matrix a négyzetes mátrix neve. bool változó ami vagy true vagy false 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. bool mind_nulla(vector<vector<int> > &mat, int &ind,bool &l) fileki() Az eredmeny.txt fájlba kiírja a választ. válasz Volt ilyen oszlop és melyik; Nem volt ilyen oszlop. void fileki(string valasz, bool l,int ind) 5

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 6