Flux rss
Collection CommentÇaMarche.net
Rechercher : dans
Par :

C++ erreur de segmentation

Pierre, le mardi 18 janvier 2005 à 20:53:09 
 Signaler ce message aux modérateurs

Bonjour,
je me suis fait un ptit programme :
--------------
int main()
{
int nbeleves;
int nbnotes;
float total = 0;
float moy;

cout << "Combien avez-vous d'élèves ?\n";
cin >> nbeleves;
cout << "\nCombien y a t-il de notes par élève ?\n";
cin >> nbnotes;

struct eleve
{
float note[];
string prenom, nom;
};
eleve eleve_no[40];

cout << "\n\nOK ...\n";

for(int i=0;i<nbeleves;i++)
{
cout << "\nEntrez le prénom de l'élève " << i+1 << " :\n";
cin >> eleve_no[i].prenom;
cout << "\n\nEntrez le nom de cet élève :\n";
cin >> eleve_no[i].nom;

for(int a=0;a<nbnotes;a++)
{
cout << "\nEntrez la note " << a+1 << " :\n";
cin >> eleve_no[i].note[a];
}
return 0;
}
}
---------------

Il marche parfaitement, mais à la fin il me dis "erreur de segmentation ".
Je ne vois pas pourquoi ?

1

stef, le mardi 18 janvier 2005 à 21:18:05

Salut Pierre,
Quand tu as le segmentation fault quelles sont les valeurs de nbeleves et nbnotes?

Selon ces valeurs tes boucles for sont mal construites car tu incrémentes les variables de tes boucles for (i et a) 2 fois et tu peux donc demander à écrire en dehors de tes tableaux.

stef

Répondre à stef

2

stef, le mardi 18 janvier 2005 à 21:44:30

Pierre,

petite correction à mon dernier mesasge, tu incrémentes bien qu'un fois néanmoins si nbeleves> 40 tu écris hors du tableau.

De plus quelle valeur mets tu dans la struct pour note[] ???

Stef

Répondre à stef

3

eric, le mardi 18 janvier 2005 à 21:58:36

Bonjours,

Je pense que cela vient du fait que tu ne définis pas un nombre max de notes par élève.

Par ailleurs ton "return 0;" est assez curieusement placé.

a+

eric

Répondre à eric

4

Pierre, le mardi 18 janvier 2005 à 22:03:31

Merci pour vos réponse, pour le "return 0" c ke javais pas copier mon message en eniter dc je l'ai rajouté sans faire attention .

Répondre à Pierre

5

Pierre, le mardi 18 janvier 2005 à 22:08:38

Je n'écris pas en dehors du tableau, j'ai mis que 2 élève et une note mais il y a toujours le meme problème et ce n'est pas au niveau de
"float note[];" .
Je ne comprend pas .

Répondre à Pierre

6

stef, le mardi 18 janvier 2005 à 22:12:02

J'ai essayé ca chez moi et ca fonctionne bien...

struct eleve {
float *note;
string prenom, nom;
};
eleve eleve_no[40];

int main() {
int nbeleves;
int nbnotes;
float total = 0;

cout << "Combien avez-vous d'élèves ?\n";
cin >> nbeleves;
cout << "\nCombien y a t-il de notes par élève ?\n";
cin >> nbnotes;

for (int j=0; j<40; j++) {
eleve_no[j].note = new float(nbnotes);
}

cout << "\n\nOK ...\n";

for(int i=0;i<nbeleves;i++) {
cout << "\nEntrez le prénom de l'élève " << i+1 << " :\n";
cin >> eleve_no[i].prenom;
cout << "\n\nEntrez le nom de cet élève :\n";
cin >> eleve_no[i].nom;

for(int a=0;a<nbnotes;a++) {
cout << "\nEntrez la note " << a+1 << " :\n";
cin >> eleve_no[i].note[a];
}
}
return 0;
}

Répondre à stef

7

 Jon301, le mercredi 19 janvier 2005 à 00:43:36

Pierre,
Lorsque tu as un segmentation fault, c'est souvent une erreur d'indice dans un tableau

Ici, tu as saisi le nombre de note par eleve, mais dans ta structure tu n'as pas donné de taille pour le tableau de note.
(float note[]; n'est pas correct).

Etant donné que la taille d'un tableau doit être une constante et que ca fait pas propre de faire une saisie de la taille de cette manière,

il faudrait que tu déclares un pointeur et que tu alloue dynamiquement un tableau de nbnotes

float* note;
note = new float[nbnote];

en gros, comme ce qu'a fait stef ci dessus

voila.

Jon

Répondre à Jon301
[visual C++] erreur icone Bonjour!!!! Je suis en train de créer une application sur visual c++ express 2005 et j'ai voulu mettre une icone pour la fenetre principale à côté du titre de la form mais j'ai une erreur lorsque je lance l'application : Une exception non gérée du... www.commentcamarche.net/forum/affich-2716593-visual-c-erreur-icone
Windows live messenger (c.erreur 80048820) (Résolu) Salut, j'ai un petit problème avec mon msn, je travaille sur windows live messanger ( la derinière version) le problème c'est que lorsque j'éssaie d'ouvrir ma session le messenger me signale qu'il est impossible de me connecter, après il me propose... www.commentcamarche.net/forum/affich-3410022-windows-live-messenger-c-erreur-80048820
[Visual C++] erreur à la compilation (Résolu) Bonjour, J'utilise actuellement le code dont le lien est le suivant : http://www.codeproject.com/audio/ExtrtactAVIFrames.asp qui permet d'extraire les images d'une vidéo et de les transformer en bitmap. Voici les erreurs à la compilation que je ne... www.commentcamarche.net/forum/affich-2098813-visual-c-erreur-a-la-compilation
La compilation et les modules en C et en C++Cet article a pour vocation d'introduire les notions de bases de la compilation en C et en C++ et de la programmation modulaire. Il permet de mieux comprendre les messages d'erreur du compilateur. Les notions abordées ici sont indépendantes du... www.commentcamarche.net/faq/sujet-14440-la-compilation-et-les-modules-en-c-et-en-c
MSN - Erreur de connexion 80048439Erreur 80048439 Avant toute modification sur votre système, vérifiez l'état des serveurs MSN Messenger, afin de déterminer si le problème ne vient pas de là : http://messenger.msn.com/Status.aspx?mkt=fr-fr Il peut également s'agir d'un problème... www.commentcamarche.net/faq/sujet-6123-msn-erreur-de-connexion-80048439
Gestion des erreursPar défaut, en Pascal, la gestion des erreurs est assurée par le compilateur. C’est pour cette raison que le programme s’arrête en affichant un message commençant par Runtime error suivi par le numéro de l’erreur … Alors si le programmeur désire... www.commentcamarche.net/faq/sujet-7546-gestion-des-erreurs
Microsoft Visual C++ Runtime LibraryBonjour à tous et merci à ceux qui liront ce message. Je suis sous Windows 2000. Lorsque je joue à un jeu (CS, AOM, NWN), le message d'erreur suivant s'affiche au début de la partie : Microsoft Visual C++ Runtime Library Runtime error! program : « le... www.commentcamarche.net/forum/affich-212424-microsoft-visual-c-runtime-library
[Visual C++]Erreur à l'execution avec des dllsalut, j'ai un probleme sous visual(je decouvre ce logiciel!) mon programme compil mais lorsque je veux l'executer la console s'affiche puis disparait quasi directement et j'ai ensuite un tas d'erreur du genre : 'joao.exe' : Chargé... www.commentcamarche.net/forum/affich-2723991-visual-c-erreur-a-l-execution-avec-des-dll
Visual C++ - Erreur C1083Bonjour tout le monde ! Je suis en train de faire une DLL sous Visual C++. J'ai donc créer mon fichier .c via Win32 DLL. Cette dernière appelle une librairie "commonDLL.h" qui appelle elle-même d'autres librairies. Toutes ces librairies sont utilisées... www.commentcamarche.net/forum/affich-2699855-visual-c-erreur-c1083