C++ programozásban kezdő vagyok. Van olyan, aki tud segíteni egy megszámlálós tétel feladattal?
Tudom, szeretném megérteni, hogy magam tudjam csinálni.
Bemenet: Bemenet
A standard bemenet első sorában található az elemek száma (1≤N≤100) és egy K szám (1≤K≤100) szóközzel elválasztva. Az ezt követő N sorban pedig az elemek vannak (1≤Elemi≤10000).
Kimenet: A standard kimenet első sorába ki kell írni azon elemek számát, amelyek a következő K elemben legalább egyszer megismétlődnek!
Órán vettünk rá egy sablont, hogy a megszámlálás tételére, de nem tudom, ott hova kell beilleszteni, vagy minek a helyére.
int db = 0;
for (int i = 0; i < N; ++i)
{
if (T[i] < 0)
{
db += 1;
}
Code Blocksban csinálom
Ami biztos:
1. deklarálnod kell:
* egy a ciklusváltozó számára fenntartott egész változót (nevezzük i-nek)
* három egész változót - N, K, és darab - az első kettőt majd bekérjük, a harmadik tartalmazza majd az elemek számát, ezért érdemes inicializálni nullás értékkel
2. Bekéred az N és a K értékét (cin)
3. Deklarálsz egy N elemű, egész értékeket tároló tömböt.
4. Végigiterálsz 0-tól N-1-ig, majd a ciklusmagban bekéred (cin) a 3. pontban említett "N elemű tömb" i. elemét.
Na most itt jön a "következő K elemben legalább egyszer megismétlődnek!"-kitétel - ami egy kicsit pontatlan (mihez képest következő?) - ahol a megszámlálás tétele alkalmazandó:
5. Végigiterálsz 1-től K-1-ig, majd a ciklusmagban ellenőrzöd, hogy a 3. pontban említett "N elemű tömb" i. eleme megegyezik-e a tömb 0. elemével. Ha igen, növeled a darab változó értékét eggyel.
6. Kiírod a darab változó értékét.
Ez a sablon copy paste megközelítés nem túl előnyös.
A számlálás logikáját kellene megértened, nem a sablont megjegyezned.
#4:
Szerintem a „következő K elemben legalább egyszer megismétlődnek” kitétel azt jelenti, hogy az aktuális tömbelemet követő k elemet kell vizsgálni, tehát elem[i+1]-től elem[i+k+1]-ig -- kivéve, ha ezzel túlmennél a tömbhatáron.
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!