Hogyan kellene ezt a feladatot megoldani C++-ban ?
Készíts programot, amely megadja azt a tanárt, akinek a legkeveseb lyukasórája van!
Bemenet:
A standard bemenet első sorában az órák száma (1=<O=<1000) tanárok száma
(1=<N=<100), a tantárgyak száma (1=<M=<100) van egy-egy szóközzel elválasztva.
A következő sorok mindegyikében 4 egész szám van, egy-egy szóközzel
elválasztva: a tanár sorszáma (1=<TS=<N), a tanított tantárgy sorszáma
(1=<TTS=<M), a nap (1=<Nap=<5) és az óra (0=<Óra=<8). Például 3 7 2 0 azt
jelenti, hogy a harmadik tanár a hetedik tantárgyat a hét második napján
a nulladik órában tanítja.
Kimenet:
A standard kimenet egyetlen sorába ki kell írni annak a tanárnak a sorszámát,akinek a legkevesebb lyukasórája van (lyukasóra: nincs órája, de aznap előtte is van órája valamikor és utána is van órája valamikor)!
Példa:
Bemenet:
8 3 4
1 1 1 6
1 1 2 2
1 2 1 3
2 1 2 2
2 2 3 1
3 4 1 2
3 2 1 4
3 3 2 1
Kimenet :2
Így szeretném megoldani a feladatot viszont az első lépést nem tudom, hogyan kellene kivitelezni. Valaki tudna nekem ebben segíteni ?
1. Megszámoljuk hány lyukasórája van egy tanárnak.
2. Kiválasztjuk azt akinek a legkevesebb van.
minden tanár adatait beolvasod egy 2 dimenziós tömbbe
először ki kell nullázni az egészet, majd addig olvasni az adatokat, amíg ugyanannak a tanárnak az adatai jönnek, és a tömbben elmented
például: adatok[2][4]==1 jelentse azt, hogy a 2. napon van 4. órája (tehát első dimenzió azonosítja a napot, a második az órát)
ha az összes megvan, akkor naponként bejárod a tömböt, és megszámolod, hogy az i. naphoz, hány lyukasóra tartozik
az i. nap j. órája lyukasóra, ha j>0 és j<8 és adatok[i][j]==0 és adatok[i][j-1]==1 és adatok[i][j+1]==1
ha megszámoltad, akkor összehasonlítod az ediggi maximummal, és szükség esetén azt frissíted
majd újra ki kell nullázni a tömböt, és lehet kezdeni beolvasni a következő tanár adatait
(az pedig, hogy hány nap, hány óra van, meg van adva a feladat leírásában, szóval nem kell dinamikus memóriakezeléssel foglalkozni és azt is előre lehet tudni, hogy hány adat lesz)
Első ránézésre ez lenne a tervem:
Csinálok egy 3 dimenziós int tömböt. Első koordánátája a tanárok, második a napok (5 hosszú), a harmadik koordináta pedig egy bool lista (8 hosszú), false-ra inicializált mind.
Tehát van N*M bool listám. Ahogy jönnek be a sorok, ezekbe a bool listákba jelölöm be az órákat. Szóval a fenti példánál az 1-es tanár 1-es naphoz tartozó listájában a 3. és 6. bit lesz true.
Aztán végigiterálnék a listákon, az első és utolsó true-k közötti távolságokat megmérve számíthatóak lyukas órák adott napra.
Ezeket aztán tanáronként összegezni kell.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!