C++ program segítség?
A feladat:egy játéktábla 11 sorból áll,minden sorban pontosan 2x annyi elem van mint a fölötte lévő sorban.
A tábla felső pontjából azaz az első sor első pontjából indulunk.Az egyes lépéseket a következők írják le:
-BL balra lefelé lépünk egyet
-JL jobbra lefelé lépünk egyet
-F felfelé lépünk egyet
-B balra lépünk egyet
-J jobbra lépünk egyet
Készíts programot(jatek.cpp),amely beolvas egy lépéssorozatot majd megadja hogy a lépéssorozat végén hányadik sor hányadik elemén áll a bábunk
A bemenet első sorában a lépések "K" száma van(1<=K<=10),a következő K sorban pedig az egyes lépéseket leíró betűk vagy betűpárok.
A kimenet egyetlen sorába a lépéssorozat végén a bábu sorának és soron belüli helyének a sorszámát kell írni egy szóközzel elválasztva! Ha a bábu kilépne a tábláról akkor az első sorba azt a helyet kell írni ahol utoljára volt!
A feladat adott..mielőtt még lehülyéznétek heti 1 órában tanulunk programozni és ez valami versenyfeladat.Fogalmam sincs hogy kezdjek.
Gondold végig, hogy milyen indexek vannak egymás felett, alatt. Illetve a különböző lépések esetén hogyan kell kiszámolni az új indexet, illetve milyen feltételekre kell odafigyelni.
Például:
Az egyik sorban az indexek: 1, ..., n
Az alatta lévőben: 1, ..., 2n
A felette lévőben: 1, ..., n/2
Tudni kell, hogy éppen hanyadik sorban vagyunk, és azon belül melyik indexen. Legyen i a sorszám, j az index.
A fenti példát folytatva:
j-ről tudjuk, hogy: 1 <= j <= n
a) Felfelé akarok lépni:
új index = j/2 alsó egészrésze (lefele kerekítés, vagy egész osztás ugye) lesz a fölötte lévő sor megfelelő indexe.
feltétel = i > 1 (tehát nem az első sorban vagyunk)
b) Jobbra lefelé lépek:
új index = 2*j
feltétel: mindig mehet
c) Balra lefelé:
új index = 2*j-1
feltétel: mindig mehet
d) Balra vízszintesen:
új index = j - 1
feltétel: j > 1
e) Jobbra vízszintesen:
új index = j + 1
feltétel: j < az indexek száma a sorban
!!! e)-nél kell az indexek száma egy adott sorban. Ezt ajánlott mindig kiszámolni, amikor sort váltasz (a, b, c eset). Ha 1-től számozod a sorokat, akkor az indexek száma az i. sorban = 2^(i-1).
Ezt lehet hatékonyan is csinálni:
Legyen n az indexek száma az aktuális sorban. Ez kezdetben 1.
Ha lefele lépek, akkor megduplázom: n = 2*n
Ha felfelé lépek, akkor felezem: n = n/2
Egy kis észrevétel
b) Jobbra lefelé lépek:
új index = 2*j+1
feltétel: mindig mehet
c) Balra lefelé:
új index = 2*j
feltétel: mindig mehet
#6, ezt azért gondold át légyszi...
1-től n-ig indexelem a sort.
Pl. 1 alatt az 1 és a 2 van, 2 alatt a 3 és a 4, stb.
Tehát amit írtam, az a jó képlet...
> 1-től n-ig indexelem a sort.
Akkor viszont itt van a hiba.
Olvasd már el a leírásomat kérlek.
Milyen hibáról beszélsz?
Mondta bárki is, hogy 0-tól kell indexelni a sort vagy az oszlopot?
Mielőtt még jönnél a tömbökkel: sehol sincs tömb ebben a feladatban!
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!