Szerző Lővei Péter LOPSAAI.ELTE IP-08PAEG/25 Daiki Tennó

Hasonló dokumentumok
Szerző. Természetesen aktualizálandó adatok.

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

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!

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

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

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

Dokumentáció az 1. feladatsorhoz (egyszerű, rövidített kivitelben)

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

Programozási alapismeretek 1. előadás

1. Alapok. Programozás II

Maximum kiválasztás tömbben

Programozási alapismeretek. 1. előadás. A problémamegoldás lépései. A programkészítés folyamata. Az algoritmus fogalma. Nyelvi szintek.

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

Programozás alapjai 2.Gy: A C nyelv alapjai P R O

Programozás I. gyakorlat

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

A feladat címe, rövid emlékeztetje

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

Felhasználói dokumentáció

INFORMATIKA tétel 2017

PROGRAMOZÁS tantárgy. Gregorics Tibor egyetemi docens ELTE Informatikai Kar

INFORMATIKA tétel 2018

Programozási alapismeretek 2009/2010

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

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

Bevezetés a programozásba I.

Bevezetés a programozásba I.

Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május)

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

10. gyakorlat Tömb, mint függvény argumentum

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

Dinamikus csatolású függvénykönyvtár készítése és használata Plugin-szerű betöltés Egyszeű C++ osztályok készítése

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

Géptermi zh-írás forgatókönyve

Programozás C nyelven (13. ELŐADÁS) Sapientia EMTE

Programozás alapjai 5. gyakorlat Vezérlési szerkezetek egymásba ágyazása

Bevezetés a programozásba. 6. Előadás: C++ bevezető

hiányzott szeptemberben vagy A tanuló nem hiányzott szeptemberben szöveget

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.

3. Határozza meg és írja ki a minta szerint, hogy a forrásállományban hány kémiai elem felfedezési adatai

INFORMATIKAI ALAPISMERETEK

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok

Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN

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

Algoritmizálás + kódolás C++ nyelven és Pascalban

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Pénzügyi algoritmusok

117. AA Megoldó Alfréd AA 117.

AZ ADATSZERKEZETES BEADANDÓ FELADAT ÉRTÉKELÉSI SZEMPONTJAI

Programozási alapismeretek 3. előadás

INFORMATIKA tétel 2019

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

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

tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is

0.1. Mi az a standard be- és kimenet? A két mintafeladat leírása

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

A C++ Standard Template Library rövid összefoglalás

Programozási tételek és C++

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

Programozás alapjai C nyelv 10. gyakorlat. Standard függvények. Union

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

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

main int main(int argc, char* argv[]) { return 0; } main return 0; (int argc, char* argv[]) main int int int main main main

Tamás Ferenc: C++ (az emelt szintű érettségin) Előszó

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Unit Teszt. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Unit Teszt / 22

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

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

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r

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

Bevezetés a programozásba. 8. Előadás: Függvények 2.

/* Az iter függvény meghívása és a visszatérő érték átadása a gyok változóba */ gyok = iter( n, a, e ) ;

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

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

Mintavételes szabályozás mikrovezérlő segítségével

Bevezetés a programozásba. 11. Előadás: Esettanulmány

Torna. A torna.csv UTF-8 kódolású állományban soronként egy versenyző eredményeit tároljuk. Az adatokat pontosvessző választja el egymástól.

ETR Kliens installálás

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

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

Programozási nyelvek I. 5. előadás (Gregorics Tibor anyagának felhasználásával)

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Operációs rendszerek. 9. gyakorlat. BASH recap, reguláris kifejezések UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE

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

Programtervezés. Dr. Iványi Péter

INFORMATIKA javítókulcs 2016

Programozás II gyakorlat. 4. Öröklődés

Bevezetés a Programozásba II 4. előadás. Adattípusok hordozhatósága

ELTE, Informatikai Kar december 12.

A képernyőre írást igénylő részfeladatok eredményének megjelenítése előtt írja a képernyőre a feladat sorszámát (például: 3. feladat:)!

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

Cekla. Készítette Doxygen Tue Sep :13:44

7. gyakorlat. Fájlkezelés IO haladó Függvények haladó

INFORMATIKAI ALAPISMERETEK

The modular mitmót system. DPY kijelző kártya C API

Átírás:

Szerző Név: Lővei Péter ETR-azonosító: LOPSAAI.ELTE Drótposta-cím: petyalovei@gmail.com Kurzuskód: IP-08PAEG/25 Gyakorlatvezető neve: Daiki Tennó Feladatsorszám: 11 1

Tartalom Szerző... 1 Tartalom... 2 Felhasználói dokumentáció... 1 Feladat... 1 Környezet... 1 Használat... 1 A program indítása...1 A program bemenete...2 Egy lehetséges párbeszéd...2 A program eredménye...2 Egy lehetséges kimenet...3 Hibalehetőségek...3 Egy lehetséges párbeszéd...3 Fejlesztői dokumentáció... 1 Feladat... 1 Specifikáció...1 Környezet... 1 Forráskód... 1 Megoldás... 1 Fontos típusok, változók...1 Programfelépítés...1 Algoritmus...2 C++ kód... 3 Tesztelés... 3 Érvényes tesztesetek...5 Érvénytelen tesztesetek...6 Fejlesztési lehetőségek... 6 2

Felhasználói dokumentáció Feladat Az ország N helységében végeztünk madármegfigyeléseket. Mindegyikben megadtuk, hogy milyen fajú madárból hányat láttunk. A madárfajok száma összesen M. Készíts programot, amely eldönti, hogy volt-e olyan madár, amely csak 1 helyen fordul elő! Környezet IBM PC, exe futtatására alkalmas operációs rendszer (pl. Windows 7). Nem igényel egeret. Használat A program indítása A program LOPSAAI_11\bin\Release\BEADANDO.EXE néven található a telepítő anyagban. A beadando.exe program indítása. 1

Felhasználói dokumentáció Fájlos input/output esetén az előbbi könyvtárból a fentihez hasonló módon a fájlparaméterek megadásával így indítható: BEADANDO.EXE >eredmeny.ki <bemenet.be vagy BEADANDO.EXE >>eredmeny.ki <bemenet.be Megjegyzések: 1. Ha az output fájlparamétert elhagyjuk, akkor az eredmény a képernyőn fog megjelenni. 2. A bemeneti tesztadat-fájlok az EXE mellett találhatók. 3. Az utóbbi híváskor minden indítás eredménye az eredmeny.ki fájlba, folytatólag kerül beírásra, míg az első esetben a beleírás előtt a fájl tartalma törlődik. A program bemenete A program először megkérdezi a helységek számát (N), majd megkérdezi a madárfajok számát (M). Ezután N][M-szer megkérdezi az adott helységben az adott madárfajból látott madarak számát. Sorindex Adat Magyarázat 1. N, M A helységek száma (N), a madárfajok száma (M) 2. MAD 1,1 Az első helység első madárfajából látott madarak száma i+1. MAD i,j Az i. helység j. madárfajából látott madarak száma N][M+1 MAD N,M Az N. helység M. madárfajából látott madarak száma Egy lehetséges párbeszéd A program eredménye Példa a beadando.exe klaviatúra-inputjára. A program kiírja, hogy melyek voltak azok a madárfajok, melyek csak egy helységben fordultak elő. 2

Felhasználói dokumentáció Egy lehetséges kimenet Hibalehetőségek Példa a beadando.exe képernyő-outputjára. A helységek száma és a madárfajok száma nem lehet kisebb 0-nál. Ha a felhasználó 0- nál kevesebbet ad meg, akkor a program az adatot újra kérdezi. (Figyelem, ezért is a fájlos input különleges gondosságot igényel, hiszen ekkor teljességgel hiába való a program újrakérdezése: az adatok elcsúszása a program rendellenes viselkedéséhez vezet.) Egy lehetséges párbeszéd Példa a beadando.exe hibás klaviatúra-inputjára. 3

Fejlesztői dokumentáció Feladat Az ország N helységében végeztünk madármegfigyeléseket. Mindegyikben megadtuk, hogy milyen fajú madárból hányat láttunk. A madárfajok száma összesen M. Készíts programot, amely eldönti, hogy volt-e olyan madár, amely csak 1 helyen fordul elő! Specifikáció Bemenet: N:Egész [helységek száma] M:Egész [madárfajok száma] Mad:Tömb[1..N][1..M] [a madarak számát tartalmazó tömb] Kimenet: EGY(i):Egész [a madárfaj(ok) sorszáma, amelyik csak egy helyen fordul elő] Előfeltétel: 0 N,M Utófeltétel: 0 EGY(i) M Környezet IBM PC, exe futtatására alkalmas operációs rendszer (pl. Windows 7). C++ fordítóprogram (pl. gcc), Code::Blocks fejlesztői környezet. Forráskód A teljes fejlesztői anyag a LOPSAAI_11 nevű könyvtárban található meg. A fejlesztés során használt könyvtár-struktúra (LOPSAAI_11-relatív): \bin\debug\beadando.exe nyomkövethető állapotú futtatható kód \bin\release\beadando.exe végleges futtatható kód \mad1.be 1. tesztadat fájl \mad2.be 2. tesztadat fájl \mad3.be 3. tesztadat fájl \mad4.be 4. tesztadat fájl \obj\debug\beadando.o nyomkövethető állapotú, féliglefordított (object-) kód \obj\release\beadando.o végleges, féliglefordított (object-) kód \beadando.cbp projektfájl, \beadando.cpp C++ forrás. Megoldás Fontos típusok, változók Változó N,M:Egész MAD:Tömb[N:Egész][M:Egész] SZ:Tömb[M:Egész] Programfelépítés A program által használt modulok (és helye): beadando beadando.cpp iostream a C++ rendszer része 1

Fejlesztői dokumentáció stdio.h - a C++ rendszer része stdlib.h - a C++ rendszer része A skalar.cpp függvénystruktúrája az alábbi: main beolvasas vizsgalat kiiras billentyurevar A beadando.cpp felépülése függvényekből. Algoritmus Az algoritmizálás szempontjából két függvény mondható érdekesnek: a vizsgalat. Ennek algoritmusa az alábbi: A másik függvény a kiiras: 2

Fejlesztői dokumentáció C++ kód //Szerzõ: Lõvei Péter //ETR-azonosító: LOPSAAI.ELTE //Drótposta-cím: petyalovei@gmail.com // //Feladat: // Madármegfigyelés 11.feladat //Specifikáció //Bemenet: N:Egész [helységek száma] // M:Egész [madárfajok száma] // Mad:Tömb[1..N][1..M] [a madarak számát tartalmazó tömb] //Kimenet:EGY:Egész [a madárfaj(ok) sorszáma, amelyik csak egy helyen f //Elõfeltétel: //Utófeltétel: 0<N,M 0<EGY<=M #include <iostream> using namespace std; int z,n,m; int **tomb; void beolvasas(int &n, int &m, int** &mad); void vizsgalat(int n, int m, int** mad, float sz[]); void kiiras(int m, const float sz[]); void billentyurevar(); int main(){ int **mad; float sz[m+1]; beolvasas(n,m,mad); vizsgalat(n,m,mad,sz); 3

Fejlesztői dokumentáció kiiras(m,sz); billentyurevar(); return 0; } void beolvasas(int &n, int &m,int** &mad){ //ez a rész felelős a beolvasá- do { sért cout<<"n: "; cin>>n;} while (n<0); do { cout<<"m: "; cin>>m;} while (m<0); mad=new int*[n+1]; for (int i=1;i<=n;++i){mad[i]=new int[m+1];} for (int i=1; i<=n; i++) { cout<<i<<". helyseg: "<<endl; for (int j=1; j<=m; j++){ cout<<j<<". madarfaj: "; cin>>mad[i][j];} }} void vizsgalat(int n, int m, int** mad, float sz[]){ for (int k=1; k<=m; k++) {sz[k]=0;} for (int j=1; j<=m; j++) { //ebben a részben megszamlaljuk hany telepulesben fordultak elo a madarfajok }} for (int i=1; i<=n; i++) { if (mad[i][j]>0){ } } sz[j]=sz[j]++; void kiiras(int m, const float sz[]){ 4

Fejlesztői dokumentáció cout<<"a kovetkezo madarfajok fordultak elo csak egy helyen:"<<endl; //ebben a reszben iratjuk ki azokat a madarfajokat, amik z=0; //csak egy helyen fordulnak elő, itt is döntjük ezt el for (int i=1; i<=m; i++) { if (sz[i]==1) { cout<<i<<" ";} else { z=z+1;}} if (z==m) {cout<<"nem volt olyan madarfaj, ami csak egy helyen fordult volna elo.";} cout<<endl;} Tesztelés void billentyurevar(){system("pause");} Érvényes tesztesetek Bemenet Kimenet Bemeneti fájl N=1 M=1 MAD[1][1]>0 1 N=2, M=3 MAD[1][1]=0, MAD[1][2]=3, MAD[1][3]=5 MAD[2][1]=1, MAD[2][2]=8, MAD[2][3]=3 N=2, M=3 MAD[1][1]=0, MAD[1][2]=5, MAD[1][3]=5 MAD[2][1]=1, MAD[2][2]=0, MAD[2][3]=3 N=3, M=1 MAD[1][1]=0 MAD[1][2]=3 MAD[1][3]=1 N=5, M=2 MAD[1][1]=0, MAD[1][2]=1 MAD[2][1]=1, MAD[2][2]=0 MAD[3][1]=0, MAD[3][2]=1 MAD[4][1]=0, MAD[4][2]=1 MAD[5][1]=0, MAD[5][2]=1 1 mad1.be 1, 2 mad2.be Nem volt olyan mad3.be 1 mad4.be 5

Fejlesztői dokumentáció Érvénytelen tesztesetek Bemenet N 0; M 0; MAD[i][j] 0 Kimenet hibaüzenet Fejlesztési lehetőségek A beolvasás szigorúbb kontroljának megoldása. A teszteseteket generálhatná a program, így sokkal véletlenebb eredményt elérve. 6