Keresés


Toplista

Toplista
  • betöltés...

Magántanár kereső

Ha szívesen korrepetálnál, hozd létre magántanár profilodat itt.
Ha diák vagy és korrepetálásra van szükséged, akkor regisztrálj be és írd meg itt, hogy milyen tantárgyban!

Hogyan kezdenétek neki ennek a C programozási feladatnak? (többi lent)

473
(bocsi,hogy az ékezetes betűket nem írja,viszont csak így tudtam bemásolni ) :(

A Formula 1-es versenyeken 3 f´ele gumikever´eket lehet haszn´alni: ”A”, ”B” ´es ”C”. Mindegyiknek 5
jellemz˝oje van:
´uj k¨orid˝o: az adott p´aly´an az ´uj gumikon ilyen k¨orid˝ot lehet el´erni
kop´as kezdete: h´any k¨or ut´an kezd el n˝oni a k¨orid˝o
H´any k¨ort lehet az ´uj gumival megtenni, miel˝ott a kop´as miatt elkezdene n˝oni a k¨orid˝o? Ha ez 1,
akkor csak az els˝o k¨ort lehet az ´uj k¨orid˝ovel megtenni, ´es a k¨ovetkez˝o k¨orben m´ar elkezd kopni a
gumi, azaz n˝oni a k¨orid˝o.
kop´as m´ert´eke: k¨or¨onk´ent mennyivel n˝o a k¨orid˝o
A kop´as kezdet´et˝ol a k¨orid˝o minden ´ujabb k¨orben ennyivel n˝o. Ha ez pl. 1 m´asodperc, akkor a
kop´as kezdet´et˝ol sz´am´ıtott 5. k¨orben p´eld´aul m´ar 5 m´asodperccel rosszabb k¨or¨oket futunk, mint az
´uj gumival.
elhaszn´al´od´as kezdete: h´any k¨or ut´an kezd el n˝oni a kop´as m´ert´eke
H´any k¨ort lehet a kopott gumival megtenni, miel˝ott elkezd elhaszn´al´odni, azaz a kop´as m´ert´eke is
elkezd megn˝oni? Ha ez 1, akkor csak a kop´as kezdete ut´ani els˝o k¨orben ´erv´enyes a kop´as eredeti
m´ert´eke, ut´ana minden egyes k¨orben a kop´as k¨or¨onk´enti m´ert´eke folyamatosan n˝o.
elhaszn´al´od´as m´ert´eke: k¨or¨onk´ent mennyivel n˝o a kop´as m´ert´eke
Az elhaszn´al´od´as kezdet´et˝ol a kop´as m´ert´eke k¨or¨onk´ent ennyivel n˝o. Ha ez pl. 1 m´asodperc, akkor
az elhaszn´al´od´as kezdet´et˝ol sz´am´ıtott 5. k¨orben a kop´as m´ert´eke 5 m´asodperccel t¨obb lesz, mint a
kop´as eredeti m´ert´eke.
P´elda
Ha az ”A” gumikever´ekre a k¨ovetkez˝o ´ert´ekek vannak megadva:
´uj k¨orid˝o: 60mp,
kop´as kezdete: 3 k¨or,
kop´as m´ert´eke: 1 mp,
elhaszn´al´od´as kezdete: 5 k¨or,
elhaszn´al´od´as m´ert´eke: 1mp,
akkor a k¨orid˝ok a k¨ovetkez˝ok´eppen alakulnak:
1. k¨or: 60mp
2. k¨or: 60mp
3. k¨or: 60mp
(3 k¨or ut´an elkezd kopni a gumi, k¨or¨onk´ent 1mp-et)
4. k¨or: 61mp (+1mp)
5. k¨or: 62mp (+1mp)
6. k¨or: 63mp (+1mp)
7. k¨or: 64mp (+1mp)
8. k¨or: 65mp (+1mp)
(´ujabb 5 k¨or ut´an elkezd elhaszn´al´odni a gumi, k¨or¨onk´ent tov´abbi 1mp-et)
9. k¨or: 67mp (+2mp)
10. k¨or: 70mp (+3mp)
11. k¨or: 74mp (+4mp)
2
12. k¨or: 79mp (+5mp)
...
A feladatod, hogy seg´ıtsd a kedvenc csapatod strat´egia egys´eg´et az´altal, hogy k´esz´ıtesz egy olyan
programot, ami kisz´am´ıtja, hogy egy adott versenyen, adott gumistrat´egi´aval mi lesz a teljes futamid˝o.
Ehhez meg van adva a h´aromf´ele gumi 5-5 param´etere, a k¨or¨ok sz´ama, a ker´ekcser´en´el a boxban t¨olt¨ott
id˝o, valamint a ”gumistrat´egia”, azaz a v´alasztott gumik ´es a gumicser´ek k¨oreinek sorsz´ama.
A versenyeken legal´abb egyszer ki kell ´allni kereket cser´elni, legal´abb k´etf´ele gumikever´eket haszn´alni
kell a futam sor´an ´es az utols´o k¨orben nem lehet kereket cser´elni. A ker´ekcsere egy p´aly´an a haszn´alt ´es
´uj gumik fajt´aj´at´ol f¨uggetlen¨ul mindig ugyanannyi id˝ot vesz ig´enybe.
P´elda
Input

A kever´ekek:
A: 60mp, 3 k¨or, 1.0mp, 5 k¨or, 1.0mp
B: 61mp, 5 k¨or, 0.5mp, 8 k¨or, 0.6mp
C: 62mp, 15 k¨or, 0.1mp, 15 k¨or, 0.2mp
A verseny 60 k¨or¨os, egy boxki´all´as +25mp, a strat´egia pedig: 0B 15C 50A. Ez azt jelenti, hogy a
versenyt a 0. k¨or ut´an a ”B” t´ıpus´u gumin kezdj¨uk, amivel 15 k¨ort tesz¨unk meg, majd egy ki´all´assal (a
15. k¨or v´eg´en) a ”C” t´ıpus´u gumira v´altunk, amivel ´ujabb 35 k¨ort tesz¨unk meg, miel˝ott az 50. k¨or v´eg´en
az ”A” t´ıpus´u gumira cser´el¨unk ´es ezzel tessz¨uk meg a marad´ek 10 k¨ort. A verseny a 60. k¨or v´eg´en ´er
v´eget ´es k´et ki´all´as ¨osszesen +50 m´asodperc¨unkbe ker¨ul.
(rajt – a ”B” kever´ek van az aut´on)
1. k¨or: 61.0
...
5. k¨or: 61.0
(kop´as)
6. k¨or: 61.5
...
13. k¨or: 65.0
(elhaszn´al´od´as)
14. k¨or: 66.1
15. k¨or: 67.8
(ki´all´as – a ”C” kever´ekre cser´el¨unk)
16. k¨or: 87.0
17. k¨or: 62.0
...
30. k¨or: 62.0
3
(kop´as)
31. k¨or: 62.1
...
45. k¨or: 63.5
(elhaszn´al´od´as)
46. k¨or: 63.8
47. k¨or: 64.3
48. k¨or: 65.0
49. k¨or: 65.9
50. k¨or: 67.0
(ki´all´as – az ”A” kever´ekre cser´el¨unk)
51. k¨or: 85.0
52. k¨or: 60.0
53. k¨or: 60.0
(kop´as)
54. k¨or: 61.0
...
58. k¨or: 65.0
(elhaszn´al´od´as)
59. k¨or: 67.0
60. k¨or: 70.0
(c´el)
Output
3 8 2 4. 9 0 0

Egy´eb felt´etelek:
• Az id˝o ´ert´ekeket (k¨or, ki´all´as, futamid˝o) 3 tizedesjegy pontoss´aggal kell kezelni.
• Nem garant´alt, hogy a gumikever´ekek ab´ec´e sorrendben szerepelnek a bemenetben.
• A strat´egiai hib´ak (kevesebb, mint k´et kever´ek haszn´alata; ´es kevesebb, mint egy ki´all´as) eset´en a
kimenetbe csak a ”HIBA” sz¨oveg ker¨ulj¨on. Ezeken k´ıv¨ul a bemenet korrekt, azaz m´as eshet˝os´egekre
nem kell felk´esz´ıteni a programot ´es az egy´eb hib´akat sem kell jelezni.
• A kimenetet minden esetben egy sorv´ege jel z´arja!



Jelenleg 1 felhasználó nézi ezt a kérdést.
0
Felsőoktatás / Informatika

Válaszok

4
Csatoltam képet.
0

Én Python 3.6-ot szoktam használni, ezért abban írtam meg. Valószínűleg több olyan eszközt használtam, ami nincs meg C-ben, de lehet, hogy van olyan is, aminek a logikáját abban is lehet használni, vagy valami hasonlót csinálni.
https://mega.nz/#!BBxDwaiS!1yYOBfrXRUh3mhj5sKsok3cog4xN99pS4o4ThANJ6WU
Itt a link a fájlhoz. Akármilyen szövegszerkesztővel meg tudod nézni, de legalább egy notepad++ Python beállítást ajánlok, hogy külön színezze a jegyzetet és a kódot, mert anélkül elég átláthatatlan lesz.
0

Egy lehetséges C implementáció:
https://www.jdoodle.com/embed/v0/M1B

Az "Stdin Inputs..." mezőbe írd be mondjuk ezt:
A 60.0 3 1.0 5 1.0
B 61.0 5 0.5 8 0.6
C 62.0 15 0.1 15 0.2
60
25.0
0B 15C 50A

aztán ha az Execute-ra klikkelsz, lefuttatja.

Ha alul az "Edit this in program JDoodle.com"-ra klikkelsz, akkor tudod módosítani is. Az elején van egy "#if 0", ha azt átírod "#if 1"-re, akkor logol is számolás közben.
0

Csatoltam képet.
0