C++ számsorban lévő tagok különbsége?
Üdv, olyan problémába szaladtam az egyik feladatomban, hogy a program végén kapok egy tömbbe számokat például:
2 3 4 7 8. Az lenne a cél, hogy ki kell íratni azt, hogy melyik a legnagyobb folyamatos növekedés. Szóval 2 3 4 és 7 8. A 2 3 4 között a különbség 4-2=2, 8-7=1, szóval a megoldás 2-4 között lesz. Úgy próbáltam megoldani, hogy nézem hogy tomb[i]-tomb[i-1==1 vizsgálattal és ameddig ez teljesül db++, és ha nem az else ágban az első és utolsó tagot rögzítsem. De utána még vizsgálni kell a maradék 7-8 között is.
Nem tudok egyszerűen megoldást találni rá c++ még teljesen új nekem és az évekig tanult nyelv elemei itt hiányoznak.
Szóval segítséget kérek, hogy valami megoldás vagy megoldásmenete lenne-e valakinek.
Jó hosszúra sikerült, de ha végig olvastad azt nagyon szépen köszönöm és a választ is előre.
tabaki a kódot eltudnád küldeni?
Mert azóta én is próbáltam amiket kaptam válaszul a maximumkiválasztást, hát némelyik példára működik de erre pont nem ,de pontosan úgy csináltam ahogyan írta az egyik kommentelő
ez a tovább fejlesztett kódom hozzá
int max = 1;
int jelenlegi= 1;
int elso;
int utolso;
int jelengeli_elso;
jelengeli_elso= tomb[0];
for (int i = 0; i < n-1; i++) {
if (tomb[i] == tomb[i+1] -1) {
jelenlegi++;
}
else {
if (jelenlegi> max) {
jelenlegi= max;
elso= jelengeli_elso;
utolso= tomb[i];
}
jelengeli= 1;
jelengeli_elso= tomb[i+1];
}
}
if (jelengeli> max) {
jelengeli= max;
elso= jelengeli_elso;
utolso= tomb[n-1];
}
cout << elso<< " " << utolso;
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Nekem tetszik a jelengeli, olyan hamisítatlan afrikai hangulata van. Kittenberger Kálmánnak voltak hasonló nevű néger nyomolvasói.
Bocs, kicsit nehezen ébredtem, mert sokáig voltam fent. Ahhoz még mindig zizi vagyok, hogy a kódodat bogarásszam, annyit mindenesetre látok, hogy sok dologban hasonlít arra, amit én csináltam.
Itt a tegnapi kódom: [link]
Ugyanaz a könyvelés lépéseinek kiíratása nélkül: [link]
Ez is ugyanaz, csak igyekeztem a te változóneveidet használni, hátha úgy jobban összevethető a tiéddel: [link]
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Na, ezért nem szerencsés, ha dilettáns létemre kódot írok az éjszaka közepén. Próbálgattam én többféleképpen, de valahogy az kimaradt, hogy mi van, ha pont az utolsó sorozat a leghosszabb, és ezt az eshetőséget is meg kéne vizsgálni a ciklusból való kilépés után. Egy programozó nyilván módszeresen tesztel, úgyhogy nem lő ilyen bakot, de ez van, néha nekem is elkél egy kis szomorkodás. Te okosabb voltál, úgyhogy most, amikor megint elővettem a programodat, a magamét gyorsan korrigáltam a nyomdokaidon.
Ha a jelengelitől eltekintünk, voltaképpen csak két hiba van a programodban, igaz, mindkettő végzetes az eredmény szempontjából. Egyrészt az eddiginél hosszabb sorozat esetén nem annak a hosszát írod be a 𝒎𝒂𝒙 változóba, hanem fordítva, ami mindkét előfordulási helyén tökéletesen értelmetlen, mellesleg a ciklusban a 𝒋𝒆𝒍𝒆𝒏𝒍𝒆𝒈𝒊 változó értékét azonnal felül is írod 1-gyel. Másrészt a sorozat végeként a tömbelemnek nem az indexét, hanem a tartalmát tárolod el. Mivel ezek legfeljebb véletlenül esnek egybe, a program általános esetben hibásan jelzi a sorozat végét, a tömbelem értékétől függően vígan kiírva bármilyen tömbhatárokon kívüli számot is.
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!