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

Hasonló dokumentumok
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

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

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

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!

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

Programozási alapismeretek 1. előadás

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

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

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.

Bevezetés a programozásba I.

1. Alapok. Programozás II

Programozási alapismeretek 2009/2010

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

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

Felhasználói dokumentáció

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

Bevezetés a C++ programozásba

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

Programozás I. gyakorlat

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

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

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

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

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

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

Operációs rendszerek gyak.

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

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

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

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

Programozási alapismeretek 3. előadás

Mentsd el code file-t kektura.cs néven, illetve kiterjesztéssel! Másold be a kektura.csv állományt a Projects munkamappa megfelelő almappájába!

5. Gyakorlat. struct diak {

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)

INFORMATIKAI ALAPISMERETEK

INFORMATIKA tétel 2019

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

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

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

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

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

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

Pénzügyi algoritmusok

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

Bevezetés a programozásba I.

Bevezetés a programozásba I.

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

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

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

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

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

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:)!

117. AA Megoldó Alfréd AA 117.

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

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

500. AA Megoldó Alfréd AA 500.

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

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.

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

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

Pénzügyi algoritmusok

INFORMATIKAI ALAPISMERETEK

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

INFORMATIKA tétel 2017

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

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

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

Kalapácsvetés 2016 szöveges

Specifikáció alapú teszttervezési módszerek

Specifikáció alapú teszttervezési módszerek

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

Programozás I. Gyakorlás egydimenziós tömbökkel Többdimenziós tömbök Gyakorló feladatok V 1.0 ÓE-NIK-AII,

Programozási tételek és C++

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

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

Bevezetés a programozásba. 9. Előadás: Rekordok

Informatika terméktervezőknek

INFORMATIKAI ALAPISMERETEK

Image Processor BarCode Service. Felhasználói és üzemeltetői kézikönyv

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok

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

Alkalmazott modul: Programozás. C++ alapismeretek. C++ alapismeretek Történet

3. Osztályok II. Programozás II

Dr. Schuster György október 14.

INFORMATIKA tétel 2018

Gregorics Tibor Tanácsok modularizált programok készítéséhez 1

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

A 2014/2015 tanévi Országos Középiskolai Tanulmányi Verseny döntő forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

INFORMATIKAI ALAPISMERETEK

Felvételi tematika INFORMATIKA

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

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

BME MOGI Gépészeti informatika 1.

Regionális forduló november 18.

Bevezetés a programozásba II 1. gyakorlat. A grafikus könyvtár használata, alakzatok rajzolása

ELTE, Informatikai Kar december 12.

Flex tutorial. Dévai Gergely

Átírás:

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1 Készítette: Gipsz Jakab Neptun-azonosító: A1B2C3 E-mail: gipszjakab@vilaghalo.hu Kurzuskód: IP-08PAED Gyakorlatvezető neve:??? 2015. október 3. 1 A fenti feladatsor itt érhető el: http://biro.inf.elte.hu/. Értelemszerűen töltendők itt ki a szerzőre vonatkozó adatok. A lábjegyzetek a végső dokumentációból törlendők! Csak az Ön segítését szolgálja. 1/10

Tartalom Felhasználói dokumentáció... 3 Feladat... 3 Futási környezet... 3 Használat... 3 A program indítása... 3 A program bemenete... 3 A program kimenete... 3 Minta bemenet és kimenet... 4 Hibalehetőségek... 4 Fejlesztői dokumentáció... 5 Feladat... 5 Specifikáció... 5 Fejlesztői környezet... 5 Forráskód... 6 Megoldás... 6 Programparaméterek... 6 Programfelépítés... 6 Függvénystruktúra... 6 Algoritmus... 7 A kód... 7 Tesztelés... 9 Érvényes tesztesetek... 9 Érvénytelen tesztesetek... 10 Fejlesztési lehetőségek... 10 2/10

Felhasználói dokumentáció Feladat Egy repülőút során egyenlő távolságonként mértük a felszín tengerszint feletti magasságát. Zéró magasságot ott mértünk, ahol állóvíz volt, pozitív magasságot pedig ott, ahol szárazföld. Három egymást követő mérési eredményt jelöljön A, B és C. Ekkor B bal oldali partot jelez, ha B>0 és A=0; jobb oldali partot jelez, ha B>0 és C=0. Készítsen programot, amely meghatároz két szigetet, melyeknél nincs egymáshoz közelebbi szigetpár, ha nincs ilyen, akkor ezt egyetlen 0-val jelezze! Futási környezet IBM PC, exe futtatására alkalmas, 32-bites operációs rendszer (pl. Windows 7). Nem igényel egeret. Használat A program indítása A program az A1B2C3\bin\Release\A1B2C3.exe néven található a tömörített állományban. A A1B2C3.exe fájl kiválasztásával indítható. A program bemenete A program az adatokat a billentyűzetről olvassa be a következő sorrendben: # Adat Magyarázat 1. N A magasságmérés hossza (2 N 10000). 2. Magasság 1 Az első magasság (0 Magasság 1 9000). 3. Magasság 2 A második magasság (0 Magasság 2 9000).... N+1. Magasság N Az N-edik magasság (0 Magasság N 9000). A program kimenete A program kiírja az egymáshoz legközelebbi két sziget bal és jobb partját jelző mérés sorszámát. A kimenet első sorába az első szigetet, a második sorba a második szigetet azonosító két adat kerül. Ha nem lenne legalább két sziget, akkor egyetlen 0 a kimenet. 3/10

Minta bemenet és kimenet Hibalehetőségek Az egyes bemeneti adatokat a fenti mintának megfelelően kell megadni. Hiba, ha a mérések száma nem egész szám, vagy nem esik a 2..10 000 intervallumba; vagy valamely magassági érték nem szám, vagy nem esik a 0..9 000 intervallumba. Hiba esetén a program azzal jelzi a hibát, hogy újra kérdezi azt. Mintafutás hibás bemeneti adatok esetén: 4/10

Fejlesztői dokumentáció Feladat Egy repülőút során egyenlő távolságonként mértük a felszín tengerszint feletti magasságát. Zéró magasságot ott mértünk, ahol állóvíz volt, pozitív magasságot pedig ott, ahol szárazföld. Három egymást követő mérési eredményt jelöljön A, B és C. Ekkor B bal oldali partot jelez, ha B>0 és A=0; jobb oldali partot jelez, ha B>0 és C=0. Készítsen programot, amely meghatároz két szigetet, melyeknél nincs egymáshoz közelebbi szigetpár, ha nincs ilyen, akkor ezt egyetlen 0-val jelezze! Specifikáció Bemenet: N N, Magasságok N * : VanE L, Szig1,Szig2 Sziget, Sziget=Bal Jobb, Bal,Jobb=N Előfeltétel: N=Hossz(Magasságok) N [2..10000] i [1..N]: Magasságok i [0..9000] N 1 Utófeltétel: db= i=2 SzigetKezdet(i) szigek Sziget db i [1..db]: (szigek i.bal [2..N-1] szigek i.jobb [2..N-1] szigek i.bal szigek i.jobb SzigetKezdet(szigek i.bal) SzigetVég(szigek i.jobb) j [szigek i.bal..szigek i.jobb]: Magasságok j >0) db<2 VanE=Hamis db 2 VanE=Igaz i [1..db-1]: Szig1=szigek i Szig2=szigek i+1 i [1..db-1]: szigek i+1.bal-szigek i.jobb Szig2.Bal-Szig1.Jobb Definíció: SzigetKezdet: N L SzigetKezdet(i):=Magasságok i >0 Magasságok i-1 =0 SzigetVég: N L SzigetVég(i):=Magasságok i >0 Magasságok i+1 =0 Megjegyzés: a ha nincs ilyen kitételt (a VanE=Hamis esetben) a program egyetlen 0 kiírásával fogja jelezni, nem pedig a logikai érték megjelenítésével (hűen a feladat eredeti kiírásához). Fejlesztői környezet IBM PC, exe futtatására alkalmas operációs rendszer (pl. Windows 7). mingw32-g++.exe c++ fordítóprogram (v4.7), Code::Blocks (v13.12) fejlesztői környezet. 5/10

Forráskód A teljes fejlesztői anyag kicsomagolás után az A1B2C3 nevű könyvtárban található meg. A fejlesztés során használt könyvtár-struktúra: Állomány A1B2C3\bin\Release\A1B2C3.exe A1B2C3\obj\Release\main.o A1B2C3\main.cpp futtatható kód félig lefordított kód C++ forráskód Magyarázat A1B2C3\teszt1.txt teszt-bemeneti fájl 1 A1B2C3\teszt2.txt teszt-bemeneti fájl 2 A1B2C3\teszt3.txt teszt-bemeneti fájl 3 A1B2C3\teszt4.txt teszt-bemeneti fájl 4 A1B2C3\teszt5.txt teszt-bemeneti fájl 5 A1B2C3\doksi\A1B2C3.docx dokumentációk (ez a fájl) Megoldás Programparaméterek Konstans MaxN MaxMagasság : Egész(10000) [a mérések maximális száma] : Egész(9000) [a maximális magasság] Típus TMaggasságok = Tömb(1..MaxN:Egész) TSziget = Rekord(bal,jobb:Egész) Változó N Magasságok Szig1,Szig2 : Egész : TMagasságok : TSziget Programfelépítés A program által használt modulok (és helyük): main.cpp iostream stdlib.h program, a forráskönyvtárban képernyő-, és billentyűkezelés, a C++ rendszer része általános rutinok, a C++ rendszer része Függvénystruktúra Főprogram AdatBeolvasas LegkozelebbiSzigetek EredmenyKiir UjLap BillreVar 6/10

A teljes program algoritmusa Főprogram: Alprogramok: Változó db:egész A kód A main.cpp fájl tartalma: /* Készítette: Gipsz Jakab Neptun: A1B2C3 E-mail: gipszjakab@vilaghalo.hu Feladat: ProgAlap beadandó feladatok téma 99. feladat */ #include <iostream> #include <stdlib.h> using namespace std; const string Cim="Legközelebbi szigetek"; const int MaxN=10000; const int MaxMagassag=9000; typedef int TMagassagok[MaxN]; typedef struct{int bal,jobb;} TSziget; //Bemenet: int N; TMagassagok Magassagok; 7/10

//: bool VanE; TSziget Szig1,Szig2; void AdatBeolvasas(int& n, TMagassagok magok); void LegkozelebbiSzigetek(int n, const TMagassagok magok, bool& vane, TSziget& sz1, TSziget& sz2); void EredmenyKiir(bool VanE, TSziget sz1, TSziget sz2); void BillreVar(); int main() { cout << Cim << endl << endl; AdatBeolvasas(N,Magassagok); LegkozelebbiSzigetek(N,Magassagok,VanE,Szig1,Szig2); EredmenyKiir(VanE,Szig1,Szig2); BillreVar(); return 0; } void AdatBeolvasas(int& n, TMagassagok magok) { do{ cerr << ""; cin >> ; }While (); } void LegkozelebbiSzigetek(int n, const TMagassagok magok, bool& vane, TSziget& sz1, TSziget& sz2) { } void EredmenyKiir(bool VanE, TSziget sz1, TSziget sz2) { cerr << ""; cout << ; } void BillreVar() { } 8/10

Tesztelés Érvényes tesztesetek 1. teszteset: be1.txt N = 2 Magasság 1 = 0 Magasság 2 = 0 0 Bemenet nincs sziget; minimális hossz 2. teszteset: be2.txt N = 12 Magasság 1 = 3 Magasság 2 = 0 Magasság 3 = 2 Magasság 4 = 0 Magasság 5 = 4 Magasság 6 = 3 Magasság 7 = 0 Magasság 8 = 0 Magasság 9 = 3 Magasság 10 = 0 Magasság 11 = 2 Magasság 12 = 0 Szig1 = 3 3 Szig1 = 5 6 Bemenet kontinenssel kezdődik, van legalább 2 sziget 3. teszteset: be3.txt N = Magasság 1 = Bemenet kontinenssel végződik, van legalább 2 sziget 9/10

4. teszteset: be4.txt N = Magasság 1 = Bemenet nincs kontinens, egy sziget van 5. teszteset: be5.txt N = Magasság 1 = Bemenet csak kontinens van Érvénytelen tesztesetek 6. teszteset N = 11tizenegy Újrakérdezés: N = Bemenet Rossz hossz 7. teszteset N = 11 Magasság 1 = -1 Újrakérdezés: Magasság 1 = Bemenet Rossz magasság 8. teszteset Fejlesztési lehetőségek 1. Adatok a felhasználó igénye szerint akár fájlból is fogadása. 2. Hibás fájl-bemenetek felismerése, és a hiba helyének (sor sorszámának) kiírása. 3. Többszöri futtatás megszervezése 4. A bemeneti sorozat grafikus megjelenítése, s az eredmény-szigetek elütő színű kijelzése. 10/10