Kezdőoldal » Számítástechnika » Programozás » Miért nem tudok egy tömbbe n...

Miért nem tudok egy tömbbe n darab adatot beolvasni?

Figyelt kérdés

#include <iostream>

using namespace std;


int main(int argc, char *argv[])

{

int n;

int tomb[n];


cout<<"Mennyi az annyi?"<<endl;

cin>>n;


for (int i=0; i<n; i++){

cin>>tomb[i];

}


cout<<n<<endl;

}


N+1—gyel se működik. Segmentation fault-ot ír két int beolvasása után


2021. nov. 27. 17:02
1 2
 1/13 A kérdező kommentje:
Az lenne a lényeg, hogy a user írja be
2021. nov. 27. 17:05
 2/13 anonim ***** válasza:
Ha az lenne a lényeg akkor először talán be kéne írnia, mielőtt létrehozod a tömböt random mérettel. Eleve int n értéke undefined, szóval már itt akkora elvi hiba van, mint atom. Alapszabály, hogy soha nem hagyunk változót incializálatlanul használat előtt.
2021. nov. 27. 17:22
Hasznos számodra ez a válasz?
 3/13 anonim ***** válasza:

Először is ne használj VLA-t. (variable length array)

Azaz hogy egy változóval határozod meg a tömb méretét.

Rengeteg hiba forrása lehet és egyáltalán nem ajánlott.

C++-ba már nem is lehet ilyet.


Határozz meg egy konstans max értéket, aminél az "n" nem lehet nagyobb.


Pl. így:


#define MAX_SIZE 1000


int tomb[MAX_SIZE];


és ellenőrzöd, hogy "n" nem lehet nagyobb ennél.

2021. nov. 27. 20:00
Hasznos számodra ez a válasz?
 4/13 anonim ***** válasza:
Én inkább a dinamikus memóriakezelést ajánlanám, new és delete
2021. nov. 27. 20:06
Hasznos számodra ez a válasz?
 5/13 anonim ***** válasza:
#4 itt mégis mi indokolná?
2021. nov. 27. 21:14
Hasznos számodra ez a válasz?
 6/13 A kérdező kommentje:

Felpontoztam mindenkit. Harmadiknak külön köszönet, végül úgy csináltam.


Utolsó kettőnek írom, hogy ha vitatkoznak nyugodtan tegyék itt. Szívesen tanulunk

2021. nov. 27. 21:42
 7/13 anonim ***** válasza:
#5: az hogy a felhasználótól akarná bekérni a tömb méretét. Persze lehet statikusan foglalni a stacken, de minek korlátázni magunkat, és ocsmánykodni, ha erre tökéletes a heap?
2021. nov. 27. 22:08
Hasznos számodra ez a válasz?
 8/13 A kérdező kommentje:

Egyébként nem fut le jó outputtal a kód sajnos még mindig. Lehet én vagyok a hülye, de nem értem miért



#include <iostream>

#define MAX_SIZE 500

using namespace std;


int main(int argc, char *argv[])

{

int n;

int tomb[MAX_SIZE];

int max=tomb[0];


cout<<"Mennyi az annyi?"<<endl;

cin>>n;


for (int i=0; i<n; i++){

cin>>tomb[i];

}


for(int j=0; tomb[j]=tomb[n] ;j++){

if(tomb[j]>max){

max=tomb[j];

}


}


cout<<max<<endl;

}



Általában 0 az output. Nem működik.

2021. nov. 28. 00:42
 9/13 anonim ***** válasza:

for(int j=0; j < n; j++){

..

}

2021. nov. 28. 01:01
Hasznos számodra ez a válasz?
 10/13 A kérdező kommentje:
<3
2021. nov. 28. 01:22
1 2

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!