SMALL BASiC Segítség kéne egy feladathoz amit sehogy se tudok megoldani?





Azért pascalban megpróbáltam orvosolni:





Ha már ennyi hozzászólás született, akkor nem maradok ki.
Igaz már privátban tegnap elküldtem a kérdezőnek, - mert nem gondoltam, hogy lesz még válasz - de legyen meg itt is kétféle megoldás, hátha valaki másnak a hasznára válik.
Kipróbálni nem tudtam, mivel egy régi netbook van előttem XP-vel, és csak ezért nem lesz telepítve még a .NET v3.5 is, szóval lehet benne szintaktikai hiba. (inkább a képletes résznél)
A ciklusos megoldást nem magyarázom, mivel elég egyszerű.
'CIKLUSSAL SZÁMOLVA
'------------------
TextWindow.Write("Kérem a kezdősebességet (m/s): ")
sebesseg = TextWindow.ReadNumber()
ido = 0
rovidido = 30
tavolsag = 0
While (tavolsag < 5000)
tavolsag = tavolsag + sebesseg
ido = ido + 1
rovidido = rovidido - 1
If (rovidido < 1) Then
sebesseg = sebesseg + 1
rovidido = 30
EndIf
EndWhile
TextWindow.Write("Peti " + ido + " másodperc alatt teljesítette a távot, " + tavolsag + " métert tett meg.")
'KÉPLETTEL SZÁMOLVA
'------------------
TextWindow.Write("Kérem a kezdősebességet (m/s): ")
sebesseg = TextWindow.ReadNumber()
idoszakok = 0.5 - sebesseg + Math.SquareRoot( sebesseg * sebesseg - sebesseg + 4003 / 12 )
ido = 1 + Math.Floor( idoszak * 30 )
idoszakok = Math.Floor( idoszakok )
rovidtav = 30 * sebesseg * idoszakok + 15 * ( idoszakok - 1 ) * idoszakok
maradekido = 1 + Math.Floor( ( 5000 - rovidtav ) / ( idoszakok + sebesseg ) )
tavolsag = Math.Floor( rovidtav + ( idoszakok + sebesseg ) * maradekido )
TextWindow.Write("Peti " + ido + " másodperc alatt teljesítette a távot, " + tavolsag + " métert tett meg.")
'KIS MAGYARÁZAT A KÉPLETES MEGOLDÁSHOZ:
Így jönnek a 30 másodperces szakaszok távolságai, ahogy emelkedik a sebesség ("s"):
30*s + 30*(s+1) + 30*(s+2) + 30*(s+3) + ... + 30*(s+x), ahol "x" az a szám amivel pont túlér a megadott távolságon.
Ezt matematikai egyenletként felírva, majd átrendezve a fenti képletek adódnak.
Változók:
idoszakok - hány 30 másodperces ciklus kell a táv teljesítéséhez
maradekido - a legutolsó 30 másodperces időszak utáni másodpercek (nem kellett volna különvenni, de így nem olyan hosszú a sor, és jobban tagolt)
rovidtav - az összes kerek 30 másodperces időszak alatt megtett táv (az utolsó pár másodpercre jutó távolságot ez alapján számoltam)





@#12:
Na jó, itt az én változatom is, igaz, hogy nem Small Basic, hanem FreeBASIC, hogy ne kelljen átmennem Windowsba. A te elsődre hasonlít, a másodpercenkénti kiíratás és egyéb csicsák nélkül így néz ki:
dim as integer sebesseg, ido, tavolsag
input "Kezdősebesség (m/s): ", sebesseg
ido = 0
tavolsag = 0
do
ido = ido + 1
tavolsag = tavolsag + sebesseg
if ido mod 30 = 0 then
sebesseg = sebesseg + 1
end if
loop until tavolsag >= 5000
print "Peti";
if ido \ 60 > 0 then
print ido \ 60; " perc és";
end if
print ido mod 60; " másodperc alatt teljesítette az 5 kilométeres távot,"
print "ezalatt"; tavolsag; " métert tett meg"
sleep





Ha már spoilerezünk:
pastebin(pont)com(per)xSeHixf7
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!