El tudnátok magyarázni, hogy hogyan működik ez a program?
2009 októberi emelt infó érettségi egy részfeladata.
Az Alsó és Felső várost összekötő út 1 000 m hosszú részének a felújításán dolgoznak. Ennek a szakasznak a forgalmát figyeljük egy nap néhány óráján keresztül. Az említett szakaszon előzési tilalom van érvényben.
A forgalmat a forgalom.txt állomány tartalmazza. Első sorában a megfigyelési időszakban áthaladó járművek száma (legfeljebb 2000) látható, a továbbiakban pedig soronként
egy áthaladó jármű adatai olvashatók időrendben. Egy sorban az első három szám azt az időpontot jelöli (óra, perc, másodperc), amikor a jármű belép a vizsgált útszakaszra. A következő
szám jelöli, hogy a jármű az érintett távolságot hány másodperc alatt tenné meg (legfeljebb
300) – a belépéskor mért sebességgel –, ha haladását semmi nem akadályozná. Ezt egy betű
követi, amely jelzi, hogy a jármű melyik város irányából érkezett. Ennek megfelelően a betű
A vagy F lehet. Az egyes adatokat pontosan egy szóköz választja el egymástól.
Ha az útszakaszon egyik jármű utoléri a másikat, akkor az előzési tilalom miatt úgy tekintjük, hogy változatlan sorrendben, ugyanabban az időpillanatban hagyják el a szakasz, mint
ahogy a lassabb jármű tenné.
Például:
forgalom.txt
1105
7 21 1 60 F
7 21 58 69 F
7 22 4 117 F
7 22 39 155 A
7 23 11 99 A
…
A 3. sor megmutatja, hogy a 7 óra 21 perc 58 másodperckor a Felső város felől érkező
jármű 69 másodperc alatt tenné meg ezt az 1 km hosszú távolságot. Ez a jármű – ha más járművek nem akadályozzák – 7 óra 23 perc 7 másodperckor lép ki az útszakaszról, tehát akkor
már nem tartózkodik ott.
3. Írja a képernyőre, hogy a Felső város irányába tartó utolsó két jármű hány másodperc különbséggel érte el az útszakasz kezdetét!
int Felsobe(int JarmuSzam_, tEgyJarmuTomb Jarmu_)
{
int i=0, poz=JarmuSzam_-1;
int fjarmu[2]={0};
while (i<2 && poz>=0)
{
if ( Jarmu_[poz].Honnan=="A") { fjarmu[i]=poz; i++; }
poz--;
}
if (i==2)
{
cout << "A Felso varosba tarto utolso ket jarmu "
<< Jarmu_[fjarmu[0]].Ido-Jarmu_[fjarmu[1]].Ido
<< " masodperc elteressel kovette egymast." << endl;
}
else { cout << "Kevesebb, mint 2 jarmu tartott a Felso varosba. " << endl; }
}
Nincs sok C++ tudásom, nem értem a szintaktikáját (pl. Jarmu_[poz].Honnan mit jelent vagy az eslő sorban a "tEgyJarmuTomb Jarmu_" egy változó vagy mi akarna lenni?).
Főleg a logikai működése kellene. Előre is egy nagy köszönet!
JarmuSzam_ ennyi gepjarmu van.
Jarmu_ ebben a tombben vannak a jarmuvek adatai.
Elkezdi visszafele bejarni a Jarmu_ tombot, tehat a tomb utolso elemetol indul es a legeleje fele halad hogy megtalalja a ket utolso jarmuvet.
poz = JarmuSzam_ - 1 poz kezdoerteke az utolso elem a tombben
minden ciklusnal csokkenti poz-t eggyel hogy az eggyel korabbi jarmuvet mutassa (poz--)
Ezenkivul letrehoz egy masik 2 elemu tombot:
int fjarmu[2]
ebben fogja eltarolni ha talal egy autot ami A-bol jon es F-be megy.
Amit bemasoltal persze az nem teljes kod, mert hianyzik belole az a resz amikor beolvassa a fajlt es letrehozza a tEgyJarmuTomb tombot.
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!