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?
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;
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?
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.
"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.
É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 :).
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!