Kezdőoldal » Számítástechnika » Programozás » Segítene valaki ebben a C++...

Segítene valaki ebben a C++ feladatban?

Figyelt kérdés

Nem sikerül megoldanom ezt a feladatot, mert nem jó a kimenet. Nem vagyok abban sem biztos, hogy jól olvasom-e be az adatokat. A megoldáshoz próbáltam a kiválogatás tételt alkalmazni. Valaki tudna nekem ebben a feladatban segíteni?



Kódom:

[link]


Bemenet


A standard bemenet első sorában a futamok száma (0<N≤100), a helyezettek száma(3≤K≤10), az összetett versenybe beleszámító helyezések száma (2≤L≤N) és a versenyzők száma (1≤M≤1000) van, egyetlen szóközzel elválasztva. Ezt követik az egyes futamok a versenyzők sorrendjével. Minden sorban a versenyzők sorszámai (1≤Si,j≤M) vannak, helyezésük szerint csökkenő sorrendben, egy-egy szóközzel elválasztva.


Kimenet


A standard kimenet első sorába azon versenyzők számát kell írni, ahányan mindegyik futamban az első K helyezés valamelyikét érték el, majd pedig az ilyen versenyzők sorszámát, egy-egy szóközzel elválasztva, növekvő sorrendben!



Példa


Bemenet

5 5 3 15

1 2 3 4 5

2 4 6 8 3

3 6 9 12 4

5 4 3 2 1

1 4 5 2 3


Kimenet

2 3 4



2021. okt. 17. 02:17
1 2
 1/13 anonim ***** válasza:
0%

Szerintem - a leegyszerűsítés kedvéért - először konkrét rekordokkal és versenyekkel kellene megoldani, ez a tömbösítés stb nehezíti az átláthatóságot.

Vagy legyen triatlon ahol lehet csak egy-egy versenyszámban is indulni...

2021. okt. 17. 05:43
Hasznos számodra ez a válasz?
 2/13 anonim ***** válasza:
90%

ha az a cél, hogy programozási tételekkel (kevésbé hatékonyan) oldd meg a feladatot:



//megadja egy logikai értékkel, hogy egy adott versenyző egy adott futamban elért-e az első K helyezés valamelyikét


elértHelyezést(i, j, eredmények[N][K]):

elérte = hamis

k = 1 to K:

elérte = elérte || eredmények[j][k] == i

return elérte



//megadja egy logikai értékkel, hogy az adott versenyző mindig elérte-e az első K helyezés valamelyikét


mindigElsőK(i, eredmények[N][K]):

mindig = igaz

j = 1 to N:

mindig = mindig && elértHelyezést(i, j, eredmények[N][K])

return mindig



main:

//eredmények[N][K] beolvasása

válasz = []

i = 1 to M:

if mindigElsőK(i, eredmények[N][K]):

válasz = válasz + [i]



ennél jóval gyorsabban pedig úgy lehetne megoldani, hogy készítesz egy M elemű map-et, ahol 1-től M-ig minden értéket kinullázol

ezután egyszer kell végigmenni az összes adaton, és a map segítségével megszámolni, hogy melyik versenyző hányszor ért el helyezést

a válasz megadásához meg ki kell válogatni a map-ből azokat, amiknek értéke N

2021. okt. 17. 13:02
Hasznos számodra ez a válasz?
 3/13 anonim ***** válasza:

Miét lett törölve a kommentem??


Ez egy duplikált kérdés:


https://www.gyakorikerdesek.hu/szamitastechnika__programozas..

2021. okt. 17. 13:25
Hasznos számodra ez a válasz?
 4/13 anonim ***** válasza:
vagy igazából map helyett elég egy tömb, amit a versenyző számával indexelsz
2021. okt. 17. 13:35
Hasznos számodra ez a válasz?
 5/13 A kérdező kommentje:

#2 Igen a programozási tételt kell használni.


Úgy próbáltam megoldani, hogy egy tömbbe belerakom azokat, akik ugye mindegyik sorban benne voltak és megszámolom őket a hossz változóval, de valami nem jó mert valami hatalmas szám jön ki eredményül.


[link]

2021. okt. 17. 14:18
 6/13 anonim ***** válasza:
lokális változóként létrehozott tömbök elemeit ki kell nullázni, alapból bármi lehet benne, valószínűleg innen jönnek a nagy számok
2021. okt. 17. 14:27
Hasznos számodra ez a válasz?
 7/13 A kérdező kommentje:
Köszi, így most 0 az érték, de sajnos még mmindig nem a megfelelő érték került be a tömbömbe.
2021. okt. 17. 14:47
 8/13 anonim ***** válasza:

if (dupla[i][j]== dupla[i+1][j])

{

dupla[i][j] = megoldas[x];

hossz++;

}


ez mi akar lenni?

másrészt meg persze, hogy mindegyik 0, sehol nem adsz értéket a megoldas tömb elemeinek


2-es válaszban leírtam, hogy programozási a programozási tételeknek megfelelően mit kell csinálni

írd meg azt a két függvényt, és a mainben csak az az egy ciklus kell

2021. okt. 17. 15:03
Hasznos számodra ez a válasz?
 9/13 A kérdező kommentje:

Meg akartam nézni hogy az 1.sor eleme egyenlő-e a 2. sor elemével és ha igen akkor hozzáadni a lista elemét a megoldas tömbbe.


Még nem tanultam függvényeket de megírtam : [link]

Így kellene kinéznie ?

2021. okt. 17. 15:43
 10/13 anonim ***** válasza:

nem

azokat kell kiválogatni, amelyek mindegyik sorban szerepelnek, ehhez nem elég az, hogy ott van a következő sorban is ugyanazon a helyen


amit írtam 2-es válaszban, az nem c++ kód, szóval ne átmásold, hanem próbáld megérteni, hogy mi a lényege, és után valósítsd meg c++-ban

de előtte nem árt ismerni a programozási tételeket

2021. okt. 17. 15:51
Hasznos számodra ez a válasz?
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!