Programozási tételek, C++?
Linkeltem a feladatot és amit eddig csináltam. Az az első bajom, hogy a feladat azt kéri, hogy a bemenet első sorában egyszerre szerepeljen n és k is, de nem tudom, ezeket hoy lehet eltárolni, hogyha ugye a felhasználó szóközzel adta meg őket. (Próbáltam kiíratni őket, hogy ellenőrizzem, de nem jó.)
Valaki tudna ebben segíteni?
int n;
int k;
után:
std::cin >> n >> k; // összefűzött beolvasás
vagy:
std::cin >> n;
std::cin >> k;
beolvassa a szóközökkel, újsorral elválaszott egész számokat, ebben nincs hiba. Viszont a 20. sorban nem kiírod a k-t, hanem újra bekéred. cout helyett cin van, és a << helyett is >>-t írtál. A program működik, de nem úgy, ahogy akarod. Ez a szemantikai hiba. A kiíratás helyesen:
std::cout << "N=" << n << "; K=" << k << std::endl;
Köszi!
Megcsináltam újra, most végig (az előfeltételektől eltekintettem), nem tudod, itt mi lehet a hiba? :( Lefut, de mindenre 0-t ír ki a végén.
A 24. sorban i < n, i++; van mint ciklus feltétel. A pontosvesszőt rakd át a vessző helyére, és jó lesz. Ez ugyanis annyit csinál, hogy kiértékeli az i < n-t, ezt eldobja, aztán kiértékeli az i++-t, ami 0, ez booleanként hamis, tehát be sem lép a ciklusba. A Visual Studio erre ezt a figyelmeztetést írja:
Warning C6319 Use of the comma-operator in a tested expression causes the left argument to be ignored when it has no side-effects.
Valóban nem a vessző operátor kell ide. Ilyen hibák esetén érdemes debuggolni a kódot, beraksz egy töréspontot a hiba elé, aztán soronként lépteted, és nézed a változók értékét. Itt látszódna, hogy a számoló ciklus egyszer sem futna le.
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!