|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Apr 2006
Messaggi: 264
|
[C++] Errore a run time...
Salve a tutti. Questa è il codice che mi crea problemi
[code] #include <iostream> #include <cstring> #include <string> using namespace std; const int dim = 80; struct ind { char nome [dim]; char cognome [dim]; char email [dim]; }; int main () { int num; int x = 0; ind dati[num]; cout <<"Inserisci numero di indici: "; cin >> x; cout <<"*** FASE COMPILAZIONE DELLA LISTA INVITATI ***" <<endl; for (num = 0; num < x; num++) { cout <<"Inserire nome: "; cin >> dati[num].nome; cout <<"Inserire cognome: "; cin >> dati[num].cognome; cout <<"Inserire email: "; cin >> dati[num].email; } return 0; } [\CODE] è solo un semplice esercizio sugli array di struct. Il problema è che in fase di compilazione non mi da nessun problema. Appena avvio il programma mi da errore di sistema. Utilizzo NetBeans. Ho provato anche a utilizzare code blocks e dev C++. Tutti quanti mi danno lo stesso problema. Ho provato pure a fare un debug con dev C++ e mi dice "Errore di segmentazione" ma non capisco cosa sia. Spero possiate aiutarmi. Grazie! |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Apr 2006
Messaggi: 264
|
Scusate ecco il codice:
Codice:
#include <iostream> #include <cstring> #include <string> using namespace std; const int dim = 80; struct ind { char nome [dim]; char cognome [dim]; char email [dim]; }; int main () { int num; int x = 0; ind dati[num]; cout <<"Inserisci numero di indici: "; cin >> x; cout <<"*** FASE COMPILAZIONE DELLA LISTA INVITATI ***" <<endl; for (num = 0; num < x; num++) { cout <<"Inserire nome: "; cin >> dati[num].nome; cout <<"Inserire cognome: "; cin >> dati[num].cognome; cout <<"Inserire email: "; cin >> dati[num].email; } return 0; } |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6011
|
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 376
|
devi inizializzare num altrimenti non sa la dimensione dell'array dati
Codice:
[...] int main () { int num; int x = 0; ind dati[num]; cout <<"Inserisci numero di indici: "; cin >> x; // qui metti un controllo per far sapere che x deve essere minore di num cout <<"*** FASE COMPILAZIONE DELLA LISTA INVITATI ***" <<endl; for (num = 0; num < x; num++) { cout <<"Inserire nome: "; cin >> dati[num].nome; cout <<"Inserire cognome: "; cin >> dati[num].cognome; cout <<"Inserire email: "; cin >> dati[num].email; } return 0; } |
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Apr 2006
Messaggi: 264
|
c ho già provato poi mi sn accorto che num viene già inizializzato nel ciclo for .. Nello specifico:
=> per x = 2; => mi fa inserire nome, cognome, email per il primo ciclo e solo nome e cognome per il secondo ciclo... quando è il momento di inserire l'email mi da errore di sistema. |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6011
|
Quote:
Codice:
ind dati[num]; Inoltre rischi comunque di sforare l'array in quanto se ad esempio num=10 e l'x inserito vale 20, fai troppi cicli uscendo dal range di dati[]. Devi controllare che l'x inserito non sia più grande di num-1, dopo aver inizializzato num prima dell'allocazione ovviamente.. ![]() Ultima modifica di Unrue : 06-02-2010 alle 14:56. |
|
![]() |
![]() |
![]() |
#7 |
Member
Iscritto dal: Apr 2006
Messaggi: 264
|
quindi Unrue intendi:
Codice:
int num = 0; int x = 0; ind dati[num]; |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6011
|
|
![]() |
![]() |
![]() |
#9 |
Member
Iscritto dal: Apr 2006
Messaggi: 264
|
ok ho risolto... grz mille dell'aiuto a tutti .. a presto
![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:16.