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



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

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!

Országzászlók (2015. május 27., Sz14)

117. AA Megoldó Alfréd AA 117.

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

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

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

Bevezetés a C++ programozásba

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

Körkörös listák. fej. utolsó. utolsó. fej

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

Programozási alapismeretek 2009/2010

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

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

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

Maximum kiválasztás tömbben

1. Alapok. Programozás II

STL. Algoritmus. Iterátor. Tároló. Elsődleges komponensek: Tárolók Algoritmusok Bejárók

C++ programozási nyelv Struktúrák a C++ nyelvben Gyakorlat

Rekurzió. Horváth Gyula.

Programozás C++ -ban 2007/4

OPERÁCIÓS RENDSZEREK 1. ÁTIRÁNYÍTÁSOK, SZŰRŐK

Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia

Rekurzió. 1. Feladat: Sorbaállítások száma. 2. Feladat: Zsebpénz. Horváth Gyula Megoldás. Megoldás

Bevezetés a programozásba 2

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

INFORMATIKAI ALAPISMERETEK

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

3. Gyakorlat Ismerkedés a Java nyelvvel

Hardver modellezés SystemC-vel és SDL grafikus könyvtárral Visual Stúdió alatt

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

INFORMATIKAI ALAPISMERETEK

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

Egységes és objektumközpontú adatbázis-kezelés (2. rész)

Bevezetés a programozásba I.

INFORMATIKAI ALAPISMERETEK

500. AA Megoldó Alfréd AA 500.

Programozási alapismeretek 1. előadás

Felhasználói dokumentáció

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

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

Információs Technológia

Programozás I gyakorlat. 5. Struktúrák

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

Elemi alkalmazások fejlesztése IV. Adatbázis-kezelő GUI alkalmazás készítése 3. Összetett tábla karbantartása

Bevezetés Kiíratás Beolvasás Formázás Fájlkezelés Gyakorló feladatok C++ I/O. Bevezetés. Izsó Tamás február 20. Izsó Tamás C++ I/O / 1

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

Programozás C++ -ban

infix kifejezés a+b ab+ +ab postfix kifejezés prefix kifejezés a+b ab+ +ab a+b ab+ +ab Készítette: Szabóné Nacsa Rozália

Bevezetés a programozásba. 12. Előadás: 8 királynő

Szövegek C++ -ban, a string osztály

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

500. CC Megoldó Alfréd CC 500.

A lista eleme. mutató rész. adat rész. Listaelem létrehozása. Node Deklarálás. Létrehozás. Az elemet nekünk kell bef zni a listába

INFORMATIKA tétel 2019

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

INFORMATIKA tétel 2018

Bevezetés a C programozási nyelvbe. Az Általános Informatikai Tanszék C nyelvi kódolási szabványa

Pénzügyi algoritmusok

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

INFORMATIKA tétel 2017

Sejtautomaták. Szőke Kálmán Benjamin - SZKRADT.ELTE május 17.

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

Programozás alapjai 1. (BMEVIEEA100)

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

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

Objektumorientált programozás C# nyelven III.

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

1 Rev 4. A C++ programozás alapjai- segédlet

C# feladatok gyűjteménye

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

PROGRAMOZÁS ALAPJAI (ANSI C NYELVEN)

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

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

Megoldott feladatok. Informatika

INFORMATIKAI ALAPISMERETEK

Pénzügyi algoritmusok

Elemi alkalmazások fejlesztése I. Olvassunk be egy fájlból egész számokat egy tömbbe. Keressük meg a tömb valamely

Programozás II gyakorlat. 8. Operátor túlterhelés

128. AA Megoldó Alfréd AA 128.

Programozási alapismeretek 3. előadás

Pénzügyi algoritmusok

Programozási tételek és C++

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

C# feladatgyűjtemény Kovács Emőd, Radványi Tibor, Király Roland, Hernyák Zoltán

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.

Erdélyi Magyar TudományEgyetem (EMTE

PROGRAMOZÁSI NYELVEK - CPP. GYAKORLAT JEGYZET

Programozás C++ -ban 2007/1

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

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

Feladat: Nagy számok típusa: Típusérték-halmaz: Típusműveletek: Értékadás operátor: Bitshift << operátor: Összeadás operátor:

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

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

C# osztályok. Krizsán Zoltán

PROGRAMOZÁSI NYELVEK - CPP. GYAKORLAT JEGYZET

Programozás I. gyakorlat

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

Objektum elvű alkalmazások fejlesztése Kifejezés lengyel formára hozása és kiértékelése

Bevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek

Átírás:

Programozási alapismeretek :: beadandó feladat Készítő adatai Név: Molnár Tamás EHA: MOTIABT.ELTE E-mail cím: motiabt@inf.elte.hu Gyakorlatvezető: Horváth László Feladat sorszáma: 23. Felhasználói dokumentáció Program leírása A meteorológiai intézet az ország N településére adott M napos időjárás előrejelzést, az adott településen az adott napra várt legmagasabb hőmérsékletet. A program megadja azokat a napokat, amikor minden településen melegebb lesz, mint az előző nap volt. Mellékelt állományok Futtatható program: Projekt állomány: C++ forráskód: Object kód: Teszt állományok: Dokumentáció: beadando.exe beadando.cbp main.cpp obj/debug/main.o teszt1.txt teszt2.txt teszt3.txt teszt4.txt teszt5.txt dokumentacio.pdf Használat A program a bemeneti adatokat teszt állományokból veszi. A használni kívánt teszt állomány neve kiválasztható a program futása alatt, illetve parancssorból való indításkor megadható első paraméterként. A program a fentiek miatt a standard inputon nem fogad fájlt. Teszt állományok felépítése m n adat m n m : n : adat : sorok (napok) száma oszlopok (települések) száma hőmérsékleti érték

Fejlesztői dokumentáció Feladat A meteorológiai intézet az ország N településére adott M napos időjárás előrejelzést, az adott településen az adott napra várt legmagasabb hőmérsékletet. Készíts programot, amely megadja azokat a napokat, amikor minden településen melegebb lesz, mint az előző nap volt! Specifikáció Bemenet: Előfeltétel: 0 < n 15, 1 < m 30 Kimenet: jonapok jodb Utófeltétel: n N, m N, adatok m n : adatok[d][s] N (0 d m-1, 0 s n-1) jonapok[i]=d d [1..m-1] ( s [0..n-1] : adatok[d][s] > adatok[d-1][s]) Az adatokra (hőmérsékleti értékek) nem adunk előfeltételt, elérendő a program minél szélesebb körű felhasználhatóságát (pl. Földön kívüli települések). Bemeneti változók jelentése m : n : adatok : napok száma települések száma hőmérsékleti értékeket tartalmazó m n-es mátrix Kimeneti változók jelentése jonapok : az utófeltételnek megfelelő jodb darab napot tartalmazó tömb (megoldás) Megoldás A feladat megoldását az 'Eldöntés' programozási tétel m számú ismétlése adja ('Kiválogatás'). Megoldó algoritmus:

C++ kód #include <iostream> #include <fstream> using namespace std; // Programozasi alapismeretek // Beadando feladat // Molnár Tamás // MOTIABT.ELTE const string ind=" "; const int n_max=15; const int m_max=30; // Az adatok fajlbol torteno beolvasasa bool file_beolvas (string fn, int &n, int &m, int a[m_max][n_max]) { ifstream be_file; bool siker; int i; int j; be_file.open(fn.c_str()); siker=be_file.is_open(); if (siker) { be_file >> m; be_file >> n; siker=((n>0) && (m>1) && (n<=n_max) && (m<=m_max)); if (siker) { for (i=0;i<m;++i) { be_file >> a[i][j]; be_file.close(); return siker; // A bemeneti adatok kiiratasa void adatok_kiir (int n, int m, int a[m_max][n_max]) { int i; int j; cout << endl << "Bemeneti adatok:" << endl << endl; cout << ind << " "; cout << ind << j+1 << ". tlp"; cout << endl; for (i=0; i<m; i++) { cout << ind << i+1 << ". nap: "; cout << ind << a[i][j] << " "; cout << endl; // A teszt file kivalasztasa void file_kivalaszt (string &fn) { const int max_f=5; int tn=0; string tf[max_f]={"teszt1.txt","teszt2.txt","teszt3.txt","teszt4.txt","teszt5.txt"; cout << endl << "Teszt file-ok:" << endl << endl; for (int i=0; i<max_f; i++) { cout << ind << i+1 << " - " << tf[i] << endl; while (tn<1 tn>max_f) { cout << endl << "Kerem adja meg a teszt file szamat: "; cin >> tn; if (tn<1 tn>max_f) { cout << endl << "Hibas szam!" << endl << endl;

fn=tf[tn-1]; return; // Az eredmeny kiiratasa void eredm_kiir (int *jo, int i) { cout << endl << "Eredmeny: " << endl << endl << ind; if (i>0) { for (int j=0; j<i; j++) { if (j!=0) { cout << ", "; cout << jo[j]+1 << ". nap"; cout << " megfelelo." << endl; else { cout << "Nincs megfelelo nap." << endl << endl; return; // A megoldo algoritmus int megold (int adatok[m_max][n_max], int m, int n, int jonapok[m_max]) { int i=0; int s; for (int d=1; d<m; d++) { s=0; while (s<n && adatok[d][s]>adatok[d-1][s]) { s=s+1; if (s==n) { jonapok[i]=d; i=i+1; return i; // FO fv int main (int argc, const char* argv[]) { char futtat='i'; int adatok[m_max][n_max]; int n; int m; string fn=""; if (argc>1) { fn=argv[1]; while (futtat=='i') { if (fn=="") { file_kivalaszt(fn); if (file_beolvas(fn, n, m, adatok)) { adatok_kiir(n, m, adatok); int jonapok[m_max]; int jodb; jodb=megold(adatok, m, n, jonapok); eredm_kiir(jonapok, jodb); else { cout << endl << "File hiba!" << endl; ; cout << endl << endl << "Ujra futtatja a programot (i/n)? "; cin >> futtat; cout << endl << endl; if (futtat=='i') { fn=""; return 0;

Tesztelés A tesztelés a mellékelt teszt állományok felhasználásával történt. Teszt állományok tartalma teszt1.txt 7 5 12 7 15 24 20 14 19 15 9 18 10 9 16 18 25 9 12 11 15 18 12 13 14 16 19 13 15 14 17 22 16 16 17 25 23 teszt2.txt 3 5 12 7 15 24 20 13 15 14 17 22 16 16 17 25 23 teszt3.txt 8 7 12 7 12 14 20 12 23 13 15 14 17 22 23 27 16 16 17 25 23 23 12 24 32 13 31 22 12 8 13 23 23 33 10 12 13 22 25 24 35 17 20 15 20 21 23 19 21 20 30 21 20 18 16 15 13 18 teszt4.txt 12 5 teszt5.txt 1 7 30 27 Érvényes tesztesetek Bemenet Bemeneti fájl Kimenet m=7, n=5, adatok={... teszt1.txt jonapok={5, 7 m=3, n=5, adatok={... teszt2.txt jonapok={3 m=8, n=7, adatok={... teszt3.txt jonapok={2, 6 m=12, n=5, adatok={... teszt4.txt jonapok={2, 3, 7, 8, 11, 12 Érvénytelen tesztesetek Bemenet Bemeneti fájl Kimenet m=1, n=7, adatok={... teszt5.txt Hibaüzenet Hibaüzenet