Középiskolai Matematikai és Fizikai Lapok
Informatika rovattal
Kiadja a MATFUND Alapítvány
Már regisztráltál?
Új vendég vagy?

Az I. 439. feladat (2017. november)

I. 439. Egy hosszú egyenes folyón utazunk folyásirányban lefelé egy kevés benzinnel rendelkező motorcsónakon. A folyószakasz hosszú, ezért csak időnként kapcsoljuk be a motort, különben csak az áramlás sebességével utazunk (sodródunk) lefelé. Amikor a motor működik, akkor a parthoz viszonyított sebesség az áramlás sebességének és a motorcsónak vízhez viszonyított sebességének összege lesz, mivel a csónak mindig az áramlás irányában áll.

Készítsünk programot, amely a különböző folyószakaszok \(\displaystyle v_{i}\) áramlási sebességének, a motorcsónak vízhez viszonyított \(\displaystyle v_{m}\) sebességének és maximális működtetési idejének ismeretében megadja a kiindulási helytől \(\displaystyle L\) távolságra lévő célba érkezés minimális idejét.

A standard bemenet első sora négy számot tartalmaz: a megteendő folyószakasz \(\displaystyle L\) (\(\displaystyle 1\le L\le 100\)) hosszát (km), a motorcsónak \(\displaystyle 1\le v_{m} \le 10\) sebességét (km/h) a vízhez képest, a motor \(\displaystyle T\) (\(\displaystyle 1\le T\le 10\)) maximális üzemeltetési idejét (h) és a különböző sodrási sebességű folyószakaszok \(\displaystyle N\) (\(\displaystyle 1\le N\le 50\)) számát. Az ezt követő \(\displaystyle N\) sor soronként két számot tartalmaz: az adott sodrású folyószakasz elejének a kiindulási helytől mért távolságát (\(\displaystyle 0\le E_{i} \le L\)) (km) és a folyószakasz sodrási sebességét \(\displaystyle v_{i}\) (\(\displaystyle 1\le v_{i} \le 10\)) (km/h).

A standard kimenetre írjuk ki a célba érkezés minimális idejét órában, három tizedesjegy pontossággal.

Példa bemenet (a / jel új sort helyettesít)Kimenet
20 2 3 5 / 0 2 / 3 1 / 7 2 / 12 1 / 15 28.167

Beküldendő egy tömörített i439.zip állományban a program forráskódja, valamint a program rövid dokumentációja, amely tartalmazza a megoldás rövid leírását, és megadja, hogy a forrásállomány melyik fejlesztői környezetben fordítható.

(10 pont)

A beküldési határidő 2017. december 11-én LEJÁRT.


Megoldásokról:

A feladat standard bemenet használatát kérte. A versenyzők közül többen a bemenetet fájl beolvasással, vagy a billentyűzet olvasásával oldották meg. Egy-egy teszt 20-50 adat megadását igényli. Ha ezt billentyűzetről kéne megadni, akkor szinte lehetetlen lenne a versenyzők munkáinak értékelése.

A standard bemenet használatáról itt olvashatunk: stdio.pdf

Mintamegoldás:

A közölt mintamegoldás Békési Péter, a zalaegerszegi Zrínyi Miklós Gimnázium 10. osztályos tanulójától származik: Module1.vb

A feldolgozás előtt még rendeznem kellett az adatokat, hisz a feladatot lényegében a mohó algoritmussal oldottam meg, melyben most a választási tulajdonság, hogy a minél kisebb sebességű szakaszoknál használjuk minél tovább a motort, mivel így érhetünk el minimális időt (ez látszik már a képletből is (t=s/v). Ezt a rendezést beépített rendezési függvénnyel és lambdakifejezéssel csináltam (forrás: Juhász Tibor, Kiss Zsolt: Programozási ismeretek versenyzőknek).

A feldolgozásnál egy összidő nevű változóban számoltam az minimális időt. Ehhez egy ciklussal mentem végig a már rendezett adatokon amíg még volt üzemanyag. A szükséges idő a szakasz hosszának és a motor valamint a folyószakasz sebességének összegének hányadosa. Egyébként pedig egyszerűen csak az út és a folyószakasz sebességének hányadosa. Ha nem pont egy szakasz végénél fogy el az üzemanyag, akkor az adott szakaszt két részre kell bontani.


Statisztika:

15 dolgozat érkezett.
10 pontot kapott:Békési Péter, Horcsin Bálint, Kis Lázár Bence, Ürmössy Dorottya, Vígh Márton, Zsombó István.
9 pontot kapott:Bodgál Attila Zoltán, Porkoláb Mercédesz.
8 pontot kapott:1 versenyző.
6 pontot kapott:1 versenyző.
5 pontot kapott:3 versenyző.
4 pontot kapott:1 versenyző.
3 pontot kapott:1 versenyző.

A KöMaL 2017. novemberi informatika feladatai