Miért nem működik ez a program?
codeblocksban írtam c++-ban és ha 5 elemig írom akkor addig jó, de ha egy hatodikat kérek, akkor leáll a működése.
#include <iostream>
using namespace std;
int main()
{
int N=0, i=-1, a[N];
do{
N++;
i++;
cin>>a[i];
}
while(a[i]!=0);
for(int j=0;j<N-1;j++)
{
cout<<a[j]<<", ";
}
return 0;
}
Nem dolgozom C++-ban, majd kijavítanak ha hibás.
Nekem kissé gyanús az "a" tömb deklarálása. Gyakorlatilag egy 0 elemű tömböt hozol létre, aztán meg túlindexeled.
Akkora tömböt kell létrehoznod, amibe minden bekérendő adat belefér. Ha pedig nem tudod, hogy mennyi adat lesz benne, akkor használj vektorokat.
G.
int N=0,a[N];
Az 'a' tömböd 0 méretű marad a programod végéig szerintem.
1) Az N értéke 0, szóval egy 0 elemű tömböt hozol létre
2) Az i értéke kezdetben 1, majd növeled eggyel (lesz 2), így az első elem a 0. index helyett a 2. indexre fog kerülni
3) A do..while feltételébe nem vetted bele, hogy a tömb betelhet, ami szintén programhibához vezet
Szerintem tombok helyett inkabb hasznalj vektort, listat, vagy hasonlot, es akkor irhatsz valami ilyent:
std::vector<int> v;
int a;
for(;;)
{
cin >> a;
if (!a) break;
v.push_back(a);
}
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!