Felhasználói dokumentáció

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

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ó

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

VI. turnus (Kontaktnapok: szerda) Képzés időtartama: augusztus október 15.

Irányítószám Település 1011 Budapest 1012 Budapest 1013 Budapest 1014 Budapest 1015 Budapest 1016 Budapest 1021 Budapest 1022 Budapest 1023 Budapest

IrányítószámTelepülés 1011 Budapest 1012 Budapest 1013 Budapest 1014 Budapest 1015 Budapest 1016 Budapest 1021 Budapest 1022 Budapest 1023 Budapest

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

Programozás I. gyakorlat

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

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

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

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

Bevezetés a programozásba I.

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

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

Delphi programozás I.

1. Alapok. Programozás II

Átlag napi elérés a 15 évesek és idősebbek körében országos

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

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

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.

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

Programozási alapismeretek 1. előadás

Maximum kiválasztás tömbben

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

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

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

Megyei jogú városok évben alkalmazott épületek. adóztatással kapcsolatos adatai. Forrás: MJV önkormányzati adóhatóságai

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

A C programozási nyelv VI. Parancssori argumentumok File kezelés

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

Operációs Rendszerek. Windows Parancssor

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

Programozási alapismeretek 2009/2010

Bevezetés a programozásba I.

14 - informatika szakmacsoport. Ideiglenes felvételi rangsor. Összes jelentkező (fő): 371

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

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

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

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

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

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

Programozás II. Fájlkezelés

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

Konzolalkalmazások gyors tesztelése

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

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

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

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

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

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

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

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 alapjai 9.Gy: Struktúra 2.

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

Operációs Rendszerek II. labor. 2. alkalom

12. gyakorlat Enum; Tárolási osztályok Preprocesszor utasítások; Moduláris programozás

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

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

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

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

ORSZÁGOS KÖZTERÜLETI PARKOLÁSI ZÓNAADATBÁZIS

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

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

MODERN VÁROSOK PROGRAM

Hardver és szoftver követelmények

BASH SCRIPT SHELL JEGYZETEK

Programozás I. 1. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

C programozási nyelv

Programozás alapjai Bevezetés

ORSZÁGOS KÖRNYEZETEGÉSZSÉGÜGYI INTÉZET AEROBIOLÓGIAI MONITOROZÁSI OSZTÁLY

Felügyeleti szervek, fogyasztóvédelmi szervek

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

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

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

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.

BUDAPEST FŐVÁROS KORMÁNYHIVATALA IGAZSÁGÜGYI SZOLGÁLATA

XCZ állományok ellenőrzése, átadása elektronikus beküldésre és közvetlen beküldése parancssori funkcióval az ÁNYK programban

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

INFORMATIKAI ALAPISMERETEK

Megoldás. Feladat 1. Statikus teszt Specifikáció felülvizsgálat

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

INFORMATIKA tétel 2019

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

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


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

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

Programzás I gyakorlat

A GeoEasy telepítése. Tartalomjegyzék. Hardver, szoftver igények. GeoEasy telepítése. GeoEasy V2.05+ Geodéziai Feldolgozó Program

Occam 1. Készítette: Szabó Éva

Invitel Távközlési Zrt. Általános Szerződési Feltételek Telefonszolgáltatásra

A GeoEasy telepítése. Tartalomjegyzék. Hardver, szoftver igények. GeoEasy telepítése. GeoEasy V2.05 Geodéziai Feldolgozó Program

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

PolyVision illesztőprogram Kibocsátási megjegyzések 2.2. változat

2018, Funkcionális programozás

Informatika terméktervezőknek

Max. parkolási idő Személygépkoc Motor Kistehergépjármű Tehergépjármű Busz

Átírás:

Programozás Beadandó Tanuló adatai Név: Berezvai Dániel ETR-azonosító: BEDTACI.ELTE E-mail: 3ice@3ice.hu Kurzuskód: IP-08PAEG/18 Gyakorlatvezető neve: Menyhárt László Feladatsorszám: 35 Feladat szövege: 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 megad egy települést, amely hőmérsékletátlaga hidegebb egy tetszőleges másik település leghidegebb napjánál! Megjegyzés: Ennek a feladatnak ritkán van megoldása, mert az átlagok nem lehetnek hidegebbek, mint a legalacsonyabb hőmérsékletek. Sivatagi települések és északi sarkon levő települések összehasonításának pedig nincs értelme. Felhasználói dokumentáció A program célja A beolvasott időjárás előrejelzések alapján keresni egy olyan települést, amelynek előre jelzett hőmérsékleteinek átlaga a megadott település várható leghidegebb napjánál alacsonyabb. (Akár több száz fájl kezelése, vektorok és asszociatív tömbök használata, kis fájlméret, telepítő.) Rendszerkövetelmények 53 kb HDD 1 MB RAM Egy- vagy többmagos x86 vagy x64 processzor Billentyűzet

(Képernyő, egér nem feltétlen szükséges. Billentyűzet nélkül is futtatható, automatizált környezetben.) Támogatott operációs rendszerek Windows UNIX (Linux, Unix-Like, *NIX) Mac Minden más operációs rendszer, ahol c++ kódot fordítani lehet. (Portabilitási problémák felléphetnek.) Telepítés (Windows) Futtassa a BEDTACI_Bead.exe fájlt és kövesse a képernyőn megjelenő utasításokat. (A telepítő szkriptemet az INNO Setup Compiler program segítségével fordítottam. Van hozzá uninstaller is.) A folyamat során ön dönti el, hova kerül telepítésre a program. Telepítés (Egyéb) Más operációs rendszerhez nincs telepítő, a programot a mellékelt C++ forráskódból kell fordítani, majd elhelyezni a kívánt elérési úton. Használat (Windows) Telepítés után a program a start menüből vagy parancssorból indítható.

Start > Programok > idojaras A PATH környezeti változóba felveheti a program elérési útját, így bárhonnan meghívható lesz. A program automatizálásra lett tervezve (nincs konzolos interfésze), ezért érdemesebb batch scriptből futtatni. (Részletek a következő oldalon.) Használat (Egyéb operációs rendszereken) Sok sikert! Bemenet / Kimenet A program több bemeneti fájlt képes beolvasni egy futás során, ezért érdemes minden nap előrejelzését külön fájlban tárolni. (Természetesen egy nagy fájlból is be tudja olvasni az összes napot.) Hasonló módon több kimenetet is kérhetünk, egy vagy több fájlba. Bemeneti fájl formátuma (települések és hőmérséklet előrejelzések) Minden sor egy nap, a települések és hőmérsékletek egymás mögött, szóközzel vannak elválasztva. A bemeneti fájlok kiterjesztése általában: "*.be". A település neve maximum 255 karakter hosszú és nem lehet benne szóköz.

Példa Budapest 5 Kecskemét 5 Pécs 6 Békéscsaba 4 Miskolc 6 Szeged 5 Székesfehérvár 5 Győr 8 Debrecen 5 Eger 4 Szolnok 5 Tatabánya 6 Salgótarján 5 Kaposvár 6 Nyíregyháza 6 Szekszárd 6 Szombathely 8 Veszprém 5 Zalaegerszeg 6 Kimenetkérő fájl formátuma (településnevek) A program a megadott kimenetkérő fájl(oka)t beolvassa, majd felülírja a kért kimenettel. A települések neveit új sorba (soronként egy település) vagy szóközzel elválasztva kell írni. (A program kevert fájlformátumot is elfogad.) A kimeneti fájlok általában "*.ki" kiterjesztéssel rendelkeznek. Itt is érvényes a 255 karakter limit és a szóköztilalom településnevekre. Példák Kimenetkérés.ki tartalma: Pécs Tatabánya Veszprém Budapest Szombathely Kapott kimenet: Budapest Budapest Békéscsaba Békéscsaba Szombathely Parancssoros meghívás A programot az idojaras.exe paranccsal lehet meghívni. Kötelező parancssori kapcsolók a -be és a -ki, ezek után lehet felsorolni a bemeneti illetve kimeneti fájlok neveit. A kapcsolók sorrendje tetszőleges. Példák (atl.bat) idojaras.exe -be 1.be 2.be 3.be 4.be 5.be 6.be 7.be -ki atl.ki (vilag.bat) idojaras.exe -be vilag.be -ki vilag.ki (min.bat) idojaras.exe -be min.be -ki min.ki (A fent használt összes bemeneti és kimenetkérő fájlt mellékeltem tesztelésre. További tesztesetek lentebb.) Hibakódok A program futása során a következő hibákkal találkozhat: 0 (0x0) ERROR_SUCCESS Nincs hiba, a program sikeresen lefutott.

1 (0x1) ERROR_INVALID_REQUEST Helytelen kimenetkérési fájlformátum. Győződjön meg arról, hogy a kért település(ek) nevét helyesen írta! 2 (0x2) ERROR_MISSING_PARAM Egy kötelező paraméter vagy kapcsoló nincs megadva. Kötelező parancssori kapcsolók a -be és a -ki. 3 (0x3) ERROR_MISSING_FILE A bemenetként vagy kimenetként megadott fájl nem létezik. 13 (0xD) ERROR_INVALID_DATA Helytelen bemeneti fájlformátum. Ellenőrizze, hogy a bemenet(ek) formátuma megfelelő-e! (településnév hőmérséklet településnév hőmérséklet ) 18 (0x12) ERROR_NO_MORE_FILES Túl kevés bemeneti vagy kimeneti fájl. Legalább egy be- és egy kimeneti fájlnak jelen kell lennie. Egyéb Ha ezeken kívül más hibával találkozik, az a program helytelen működéséből adódik és pontlevonást érdemlek érte. Fejlesztői dokumentáció Specifikáció Be (Nem kell megadni, a program kitalálja.) Ef

Ki Uf Algoritmusok Fordítóprogram, IDE MinGW GCC-vel fordítunk, Code::Blocks-szal fejlesztünk. Ideológiám Lehető legkevesebb függőség (dependency). Csak az #include <stdio.h>-val akartam dolgozni, de később jött a string, vector, map is. Lehető legkisebb fájlméret (Produce debugging symbols -g kapcsoló eltávolítása, Strip all symbols from binary -s kapcsoló hozzáadása) Lehető leggyorsabb futásidő (Optimize fully for speed -O3 kapcsoló) Változók //Struct belsejeben vector tarolja a napi elorejelzeseket, minimum, atlag ebbol lesz kiszamolva. struct telepules{ vector<float> homersekletek; float minimum; float atlag; ; //Asszociativ tomb, majd igy kell elerni a belsejet: //adatiterator->second.homersekletek[j] map<string, telepules> adat; map<string, telepules>::iterator adatiterator; //Nehany hibakod es -nev hivatalos (0, 13, 18), a tobbi sajat gyartmany. const int ERROR_SUCCESS = 0; const int ERROR_INVALID_REQUEST = 1; const int ERROR_MISSING_PARAM = 2; const int ERROR_MISSING_FILE = 3; const int ERROR_INVALID_DATA = 13; const int ERROR_NO_MORE_FILES = 18;

//argc: parameterek szama, argv: atalakitom string tombbe (args) egyszeru kezelhetosegert. int argc char *argv[] string args[argc-1] //Szamlalok int i, j, x, index //Ideiglenes valtozok char tmpchr[255] string tmpstr float tmpflt telepules tmptelepules int/string devnull float tmpflt, sum, min, avg //Tovabbi szamlalok int bemenetekszama, kimenetekszama int bemenetindex, kimenetindex int bemenetfelsoindex, kimenetfelsoindex //Parameterek kettevalogatas utan string bemenetek[bemenetekszama], kimenetek[kimenetekszama] Includes #include <stdio.h> //C fájl I/O Ez volt az egyetlen tervezett include, hogy csak pár kilobyte legyen a program a megszokott 500 kb helyett. (C++ isotream például fél MB, míg C stdio mindössze 5 kb lefordítva.) string, vector, map Függvénystruktúra main readargs checkargc Beolvasas convertar gvtoargs Feldolgozas scanargs Kiiras

Algoritmusok, alkalmazott programozási tételek Minimumkeresés, Sorozatösszeg (átlagot számoltam) Forráskód Nyisd meg a main.cpp fájlt! (Vagy az idojaras.cbp Code::Blocks projektet. Not good enough? Well, if you insist Forráskód (100 soros részlet az 500 soros programból. A maradék 400 sor preprocesszorkomment és debug output. A program úgy fut, mintha narrátor mesélné végig.) //Berezvai Dániel //BEDTACI.ELTE #include <stdio.h>, <string>, <vector>, <map> using namespace std; //Struct belsejében vektor tarolja a napi előrejelzéseket, minimum, átlag ebbol lesz kiszámolva. struct telepules{ vector<float> homersekletek; float minimum; float atlag; ; //Asszociatív tömb, majd így kell elérni a belsejét: //adatiterator->second.homersekletek[j] map<string, telepules> adat; map<string, telepules>::iterator adatiterator; //Néhány hibakód és -név hivatalos (0, 13, 18), a többi saját gyártmány. const int ERROR_SUCCESS = 0; const int ERROR_INVALID_REQUEST = 1; const int ERROR_MISSING_PARAM = 2; const int ERROR_MISSING_FILE = 3; const int ERROR_INVALID_DATA = 13; const int ERROR_NO_MORE_FILES = 18; //Így az exit funkció használható fölösleges 100 kb-nyi include nélkül extern "C" void exit(int); void checkargc(int argc){ if(argc<5){exit(error_missing_param); void convertargvtoargs(int argc, char *argv[], string args[]){ for(int i=1;i<argc;i++){args[i-1]=argv[i];

void scanargs(int argc, string args[], int &bemenetekszama, int &kimenetekszama, int &bemenetindex, int &kimenetindex, int &bemenetfelsoindex, int &kimenetfelsoindex){ int index=0; while(index<argc && args[index]!="-be"){index++; bemenetindex=++index;//ez az indexet es a bemenetindexet is növeli. while(index<argc && args[index]!="-ki"){index++; bemenetekszama=index-bemenetindex; if(bemenetekszama<1){exit(error_no_more_files); if(bemenetekszama!=index-1){index=0; while(index<argc && args[index]!="-ki"){index++; kimenetindex=++index;//ez az indexet es a kimenetindexet is növeli. while(index<argc && args[index]!="-be"){index++; kimenetekszama=index-kimenetindex; if(kimenetekszama<1){exit(error_no_more_files); bemenetfelsoindex=bemenetindex+bemenetekszama; kimenetfelsoindex=kimenetindex+kimenetekszama; void readargs(string bemenetek[], string kimenetek[], string args[], int bemenetindex, int bemenetfelsoindex, int kimenetindex, int kimenetfelsoindex){ int j=0; for(int i=bemenetindex;i<bemenetfelsoindex;i++){bemenetek[j]=args[i];j++; j=0; for(int i=kimenetindex;i<kimenetfelsoindex;i++){kimenetek[j]=args[i];j++; void Beolvasas(string bemenetek[], int bemenetekszama){ char tmpchr[255]; string tmpstr; float tmpflt; telepules tmptelepules; for(int i=0;i<bemenetekszama;i++){ FILE *inputfile=fopen(bemenetek[i].c_str(), "r"); if(inputfile==null){exit(error_missing_file); while(fscanf(inputfile, "%s", tmpchr)!=eof){//régi C típusú file I/O gyorsabb, mint a C++ tmpstr=tmpchr; if(fscanf(inputfile, "%f", &tmpflt)==eof tmpflt>500 tmpflt<-500 (tmpflt<0.01 && tmpflt>-0.01 && tmpflt!=0)){exit(error_invalid_data); adat[tmpstr].homersekletek.push_back(tmpflt); fclose(inputfile); void Feldolgozas(){ float tmpflt, sum, min; for(adatiterator=adat.begin();adatiterator!=adat.end();adatiterator++){ sum=0; min=2147483647;//ennel biztos csak kisebb lesz. for(unsigned int j=0;j<adatiterator ->second.homersekletek.size();j++){ tmpflt=adatiterator->second.homersekletek[j]; sum+=tmpflt; if(tmpflt<min){min=tmpflt; adatiterator->second.minimum=min; adatiterator->second.atlag=sum/adatiterator ->second.homersekletek.size();

void Kiiras(string kimenetek[], int kimenetekszama){ char tmpchr[255]; string tmpstr; float avg; for(int i=0;i<kimenetekszama;i++){ FILE *outputfile=fopen(kimenetek[i].c_str(), "rw"); if(outputfile==null){exit(error_missing_file); while(fscanf(outputfile, "%s", tmpchr)!=eof){//régi C típusú file I/O gyorsabb, mint a C++ tmpstr=tmpchr; adatiterator=adat.find(tmpstr); if(adatiterator==adat.end()){exit(error_invalid_request); avg=adatiterator->second.atlag; adatiterator=adat.begin(); while(adatiterator!=adat.end() && avg>adatiterator ->second.minimum){ adatiterator++; if(adatiterator!=adat.end() && avg<adatiterator ->second.minimum){... fclose(outputfile); //argc: parameterek szama, argv: atalakitom string tombbe (args) egyszeru kezelhetosegert. int main(int argc, char *argv[]){ checkargc(argc); string args[argc-1]; convertargvtoargs(argc, argv, args); int bemenetekszama=0; int kimenetekszama=0; int bemenetindex=0; int kimenetindex=0; int bemenetfelsoindex=0; int kimenetfelsoindex=0; scanargs(argc-1, args, bemenetekszama, kimenetekszama, bemenetindex, kimenetindex, bemenetfelsoindex, kimenetfelsoindex); string bemenetek[bemenetekszama]; string kimenetek[kimenetekszama]; readargs(bemenetek, kimenetek, args, bemenetindex, bemenetfelsoindex, kimenetindex, kimenetfelsoindex); Beolvasas(bemenetek, bemenetekszama); Feldolgozas(); Kiiras(kimenetek, kimenetekszama); return ERROR_SUCCESS; Tesztelés Valós adatokkal kezdtem (Magyarország eheti időjárás előrejelzése). Majd generáltam 1000000 véletlen számot -40.. 0.. +50 körül. A városok listáját egy "top 1000 cities by population" listáról loptam.

Érvényes tesztesetek Egy város: Mindig az adott bemenet az eredmény, mert inkább az egyenlőséget engedjük meg, mint hogy NULL-t vagy N/A-t dobnánk a felhasználó arcába. egy.bat (egy.be egy.ki) Minimalista: Egy nap, két város. min.bat (min.be min.ki) Átlagos: 7 nap, 7 fájl, 19 város, 19 kimenet. atl.bat (1.be.. 7.be atl.ki) Maximalista: 7 nap, bemenet egy fájlban, 1000 város, 12 kimenet. vilag.bat (vilag.be vilag.ki) Maximalista2: 1000 nap, 69 város, 10 kimenet. max.bat (max.be max.ki) Kegyetlen: 10000 nap 10000 város 10000 kimenet. Ne essünk túlzásba (Ennyi napra ma még nem is tudunk elég gyorsan időjárást előre jelezni) Felcserélt paraméterek: Kimenettel kezdjük a paraméterek megadását. Ez érvényes. csere.bat Érvénytelen tesztesetek Üres bemeneti fájl, vagy a kimenetben olyan várost kérünk, ami nincs benne egyetlen bemenetben sem: ERROR_INVALID_REQUEST nemstimmel.bat (nemstimmel.be nemstimmel.ki) Érvénytelen paraméter megadás, például -be -ki hello.ki world.ki: ERROR_NO_MORE_FILES badparam.bat (hello.ki world.ki) Érvénytelen paraméter megadás, például -be world.be: ERROR_MISSING_PARAM missingparam.bat (world.be)

"Véletlenül" kifelejtünk egy számot a bemenetből, így két településnév kerül egymás mellé: ERROR_INVALID_DATA rosszbemenet.bat (rosszbemenet.be) Vajon mit felejtettem ki? ("Saját magunk programját sosem tudjuk igazságosan tesztelni.") Fejlesztési lehetőségek Konzolos (cin, cout) használat lehetővé tétele, ha nincsenek paraméterként fájlok megadva. (Bár ez sosem volt célom, hiánya nemtetszést válthat ki.) Bírjon 10000 napos előrejelzést 10000 városra (Future proof) Grafikus kezelőfelület Térképes integráció színkódolással és animációval Olyan feladat megoldása, aminek kézzelfogható haszna is van. (Például a leghidegebb átlaghőmérsékletű város leghidegebb napját sokkal szívesebben számoltam volna ki, mint ezt.) És fizetést mikor kapok? (Tudom, jövőre lesz ösztöndíj.)