Kezdőoldal » Számítástechnika » Programozás » Miért nem a megfelelő eredmény...

Miért nem a megfelelő eredmény adja az alábbi C++ program?

Figyelt kérdés

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?



2016. máj. 7. 23:21
 1/4 anonim ***** válasza:

2. ciklus: j helyett i van a feltételnél és a növelésnél

btw minek a struct?

2016. máj. 7. 23:28
Hasznos számodra ez a válasz?
 2/4 A kérdező kommentje:

Ó, köszönöm, sosem vettem volna észre. :)

Ez még eléggé megkezdett program, ezért sok minden van ott fölöslegesen.

2016. máj. 8. 00:30
 3/4 anonim ***** válasza:

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.

2016. máj. 8. 01:59
Hasznos számodra ez a válasz?
 4/4 anonim ***** válasza:
Csak a gyakori kérdések motorja vágja le a nagyon sok egyforma karaktert 6-ra.
2016. máj. 8. 02:03
Hasznos számodra ez a válasz?

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

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!