Házi feladat

3100-NY nyílt napi beosztás

Általános leírás

Törekedj arra, hogy szép, áttekinthető kódot írj! Úgy oldd meg a feladatokat, hogy függvényeket használsz a megoldáshoz! A felhasznált függvényekben ne történjen konzolra való kiírás!

Mindegyik feladatban nagyon fontos, hogy bár két inputfájlt kapsz, úgy írd meg a programod, hogy bármilyen, a feladatkiírásnak megfelelő inputfájlpárral működjön!

3.100-NY Nyílt napi beosztás

Iskolánk nyílt napjára általános iskolás diákok jelentkeztek. A férőhelyek száma korlátozott, ezért a jelentkezési sorrend alapján döntjük el, ki vehet részt a programon. A bejutott diákokat ezután csoportokba osztjuk. Olvasd be a két bemeneti fájlt, majd oldd meg a következő feladatokat! Minden feladat előtt a program írja ki a feladat sorszámát!

Az iskolak.tsv az iskolák adatait tartalmazza. A fájl UTF-8 kódolású, mezőit tabulátor választja el, első sora mezőneveket tartalmaz. Az oszlopok sorrendje: az iskola OM-száma, teljes neve, a kerület száma és a település neve. Az OM-szám egyedi, pontosan hat számjegyből áll; szövegként tárold, hogy az esetleges kezdő nullák is megmaradjanak! A kerületszám 0 és 23 közötti egész szám. A 0 számot a nem budapesti iskolák kapják. A feladatban minden iskola budapesti.


012345;Példa Általános Iskola;10;Budapest
023456;Minta Általános Iskola;14;Budapest

A jelentkezesek.csv minden sora egy diák jelentkezését tartalmazza. A fájl UTF-8 kódolású, nincs fejlécsora, mezőit pontosvessző választja el. A mezők sorrendje: a jelentkezés időpontja, a tanuló teljes neve, iskolájának OM-száma. Az időpont formátuma éééé-HH-nn ÓÓ:pp:mm, például 2026-10-15 08:03:27; az időpontot dátum és idő típusú adatként kezeld! A teljes nevet és az iskola OM-számát szövegként tárold! Minden tanuló egyszer jelentkezett, és minden megadott iskola szerepel az iskolák fájljában. A szöveges mezők nem tartalmaznak pontosvesszőt vagy sortörést, és nincsenek idézőjelezve. A jelentkezések nem feltétlenül időrendben szerepelnek.

2026-10-15 08:03:27;Kovács Anna;012345
2026-10-15 08:01:12;Nagy Bence;023456
2026-10-15 08:05:40;Tóth Eszter;012345
  1. A bejutottak névsora. Kérj be a felhasználótól egy N egész számot! Feltételezheted, hogy 1 <= N <= a jelentkezők száma. A jelentkezési idő szerint első N diák jut be a nyílt napra. Ha két jelentkezés időpontja megegyezik, a bemeneti fájlban előbb szereplő jelentkezés élvez elsőbbséget. Készíts névsort a kapunál dolgozók számára: írd ki a bejutott diákok teljes nevét, osztályát és iskolájának teljes nevét! A névsor a diákok teljes neve szerint, magyar ábécérendben növekvően legyen rendezve, hogy a belépőket könnyen megtalálják, és diákigazolványuk alapján az iskolájukat is ellenőrizhessék. Névazonosság esetén az iskola OM-száma, majd az osztály szöveges értéke szerint növekvő sorrend döntsön; további egyezés esetén a jelentkezési sorrendet használd!
  2. Csoportbeosztás. A korábbi években az azonos iskolából érkező diákok gyakran egymással beszélgettek az előadások alatt. A szervezők ezért idén szeretnék őket minél egyenletesebben szétosztani a csoportok között. Kérj be két pozitív egész számot: K a csoportok száma, M pedig az egy csoportba beosztható diákok legnagyobb száma! Feltételezheted, hogy K · M >= N. Kizárólag az első feladatban bejutott N diákot oszd be; mindenki pontosan egy csoportba kerüljön! Egyik csoportban sem lehet M főnél több. Minden iskolára külön-külön teljesüljön, hogy az abból érkező diákok száma bármely két csoportban legfeljebb eggyel tér el! Ebbe az összehasonlításba azokat a csoportokat is számítsd bele, amelyekbe az adott iskolából senki sem került. Így ha egy iskolából legfeljebb K diák jutott be, mindannyian különböző csoportba kerülnek. Ha többen vannak, a lehető legegyenletesebben oszlanak el. Több megfelelő beosztás esetén bármelyiket megadhatod. Készítsd el a csoportvezetők számára nyomtatandó névsorokat külön-külön UTF-8 kódolású fájlokba! A csoportok sorszáma 1-től K-ig terjedjen; az i. csoport névsora a csoporti.txt fájlba kerüljön, például csoport1.txt, csoport2.txt és így tovább. Minden csoportnál először a csoport száma szerepeljen, majd külön sorokban a beosztott diákok teljes neve és iskolájának teljes neve, pontosvesszővel elválasztva! A diákok az első feladatban meghatározott névsorrendben szerepeljenek. Az üres csoportokhoz is készíts fájlt: az első sorban a csoport száma, alatta a „Nincs beosztott diák.” szöveg szerepeljen!