Kezdőoldal » Számítástechnika » Programozás » C++ -ban miért ad ki a tömb...

C++ -ban miért ad ki a tömb egy nagyon alacsony negatív számot, ha kikérem az i-edik értékét?

Figyelt kérdés

Például kikérem a tömb 1,2, és 3. értékét. Az 1-es és 2-es értékének jó eredményt ad vissza, de a 3-asnak pedig -858993460 -t. Elvileg nem léptem túl a tömb értékét, megpróbáltam figyelni a határokra a ciklusban.


Itt a forráskód, ha segít:


int vszam, d, price,db=0;

int srszm[100];

cin >> vszam;

if (!(vszam >0 || vszam<100) && vszam%1!=0)

{

return 0;

}

for (int i = 0; i <= vszam-1; i++)

{

cin >> d >> price;


if (d>=1 && d<=20000 && price>=1 && price<=2000000)

{

if (price/d>100)

{

db++;

srszm[i] = i+1; // <--- valami itt mehet el, mivel itt adom meg neki az értéket.

}

}

else

{

return 0;

}


}

cout << db ;

for (int i = 0; i <= db-1; i++)

{

cout<< " " << srszm[i];

}

cout << endl;

return 0;



2021. okt. 6. 14:19
 1/6 A kérdező kommentje:
Erre a problémára rájöttem, a tömbnél (int srszm[100];) megadtam a tömbnek, hogy minden értéke kezdetileg 0-t vegyen fel (int srszm[100]= {0};) sajnos akadt egy másik, szóval a kérdést lezárom.
2021. okt. 6. 14:34
 2/6 anonim ***** válasza:

vszam%1!=0

ez mi akar lenni?

2021. okt. 6. 18:41
Hasznos számodra ez a válasz?
 3/6 anonim ***** válasza:

Az összes if egy halom sz.r. Az első mindíg hamis, mert minden szám nagyobb nulla VAGY kisebb száz és meg van benne 1, negátja false.

A másodiknál minek nézni a price-t, mikor ugyanaz az éréke, mint d?

A harmadik mindíg false, mivel spoiler alert: d==price, 1 meg nem nagyobb 100.

Az első for-ban ha vszam == 1 el se indul, szval minek belőle kivonni 1-et?

2021. okt. 7. 06:48
Hasznos számodra ez a válasz?
 4/6 A kérdező kommentje:

2# ez az, hogyha nem egész számot ad meg, akkor ne kerekítse a számot, hanem lépjen ki.


3# d és price nem ugyan az, csak egy sorban, szóközzel kéri be. Az első for ciklusban pedig ha 5 db város van, akkor ne hat értékig számoljon el, pl. 0,1,2,3,4,5 , hanem 5 értékig 0,1,2,3,4. alatta pedig az értékmegadást kicseréltem (srszm[db-1] = i+1) -ra, mert csak így működött helyesen.

2021. okt. 10. 13:38
 5/6 anonim ***** válasza:

"ez az, hogyha nem egész számot ad meg, akkor ne kerekítse a számot, hanem lépjen ki."

Hát ez nem így működik...

Beolvasol egy számot, és megnézed hogy utána amit tárol, az osztható-e eggyel. Megsúgom, minden szám osztható eggyel. Törtszám valóban nem lehetne, de

1: int-ként tárolod/olvasod be

2: törtszámra nem értelmezett a modulo operátor, hibát dobna.

Egy int vszam-ba te nem fogsz tudni mást beolvasni csak intet, minden más esetben tovább vár a cin inputra.

2021. okt. 10. 14:34
Hasznos számodra ez a válasz?
 6/6 A kérdező kommentje:

Értem, kicsit fordítva gondolkoztam. De köszönöm a segítséget.

Azonban a célt mégis élértem, lehet favágó módszerrel, de próbáltam egy külön kódban és működött, mivel tényleg kilép, ha törtet adok meg. A kódban, ahol ez a kritérium nincs, ott pedig továbbmegy a megadott törttel.


Köszönöm az építő kritikát mellesleg. Még kezdő vagyok, kérem, hogy egy kicsit elfogadóbban kezeljen :).

2021. okt. 10. 22:15

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!