Miért nem a megfelelő eredmény adja az alábbi C++ program?
Azt kéne kiszámolnia az alábbi programnak, hogy hány jegyet adott el egy színház az ülésrend alapján.
#include <iostream>
#include <fstream>
using namespace std;
struct szetvalaszt{
string sor;
};
int main(){
//1. feladat
szetvalaszt sorok[15];
ifstream be;
be.open("foglaltsag.txt");
int i=0;
while(be>>sorok[i].sor){
i++;
}
be.close();
int jegyszam=0;
for(int i=0;i<15;i++){
for(int j=0;i<20;i++){
if(sorok[i].sor[j]=='x'){
jegyszam++;
}
}
}
cout<<jegyszam<<endl;
return 0;
}
Az ülésrend:
xxoxoxoxoxoxooxxxxox
xxxxxxxxxxxxxxxxooox
xoxoxoxoxoxoxoxoxoxo
ooxoxoxoxoxoxoxooxox
xxxxxxxxxxxxxxxxoooo
xxxxxxxxxxxxxxxxxxxx
oooooooooooooooooooo
xxxxxxxxxxooxxxxxxxx
xooxxxxxxxxxoxxxxxoo
xxxxxxoxxxxxxxoxxooo
xooooooooxoooooooxxx
ooooooxoxoxoxoxoxoxo
oxxxxxxxxxxxxxxxxxoo
xxxxxxxxxxxxooooooox
oxxxxxxxxxxxxxoooooo
15 sor van, mindegyikben 20 szék. Az x foglaltat, az o szabad helyet jelent. A programtól azt reméltem, hogy összeszámolja az x-ek számát, és a végeredmény az eladott jegyek száma lesz. Le is fut a program, de 10-et ad eredményül, ami értelemszerűen hibás, még az első (0.) sorban is 12 van. Mit rontottam el?
2. ciklus: j helyett i van a feltételnél és a növelésnél
btw minek a struct?
Ó, köszönöm, sosem vettem volna észre. :)
Ez még eléggé megkezdett program, ezért sok minden van ott fölöslegesen.
Kész csoda, hogy előtte lefutott, nálam a tömb túlindexelése miatt elszállt.
Viszont még így is van egy figyelemre méltó probléma. Mint mondtad, 15 sor van, soronként 20 székkel. Viszont a mintaadatban, amit ide másoltál nagyon nem 20 szék van soronként, sokkal inkább hol ennyi, hol annyi. A programod viszont minden sorban 20-ig megy el. NAmost,a string túlindexelése nemigen fog futási hibát okozni, viszont mivel inicializálatlan értéket olvasol, így azt a memóriaszemetet fogod ellenőrizgetni, ami éppen ottmaradt. Ami akár x is lehet. Hopp.
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!