Probleme en c++ sur struct.
Résolu
yoshis94
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
Ravachol Messages postés 566 Date d'inscription Statut Membre Dernière intervention -
Ravachol Messages postés 566 Date d'inscription Statut Membre Dernière intervention -
bonjour ,
j'ai de nouveau un soucit avec un programme que je fais en c++
le voici:
#include <iostream>
#include <cstdlib>
#include <cstdio>
using namespace std;
typedef struct {char marque[10];char model[10];int proscesseur;int ram;int dd;char ecran[10];int taille;} ordinateur;
int main()
{
ordinateur a[1];
cout<<"Quel est la marque de l'ordinateur: "<<endl;
cin>> a[1].marque;
cout<<endl<<"le model:"<<endl;
cin>>a[1].model;
cout<<endl<<"la vitesses du proscesseur:"<<endl;
cin>>a[1].proscesseur;
cout<<endl<<"quel est la taille de votre memoire vive en MO:"<<endl;
cin>>a[1].ram;
cout<<endl<<"la taille de votre disque dur en GO:"<<endl;
cin>>a[1].dd;
cout<<endl<<"la marque de votre ecran:"<<endl;
cin>>a[1].ecran;
cout<<endl<<"et ca taille en pouce:"<<endl;
cin>>a[1].taille;
return 0;
}
voila alors au debut tout va bien il me demande de saisir marque,model et vitesse du proscesseur et puis il affiche les lignes suivantes mais sans attendre que je rentre une valeur.
quelqu'un pourrais m'expliqué pourquoi, je ne comprend pas et vous pouvez voir que je suis un newbie dans le domaine.
D'avance merci
j'ai de nouveau un soucit avec un programme que je fais en c++
le voici:
#include <iostream>
#include <cstdlib>
#include <cstdio>
using namespace std;
typedef struct {char marque[10];char model[10];int proscesseur;int ram;int dd;char ecran[10];int taille;} ordinateur;
int main()
{
ordinateur a[1];
cout<<"Quel est la marque de l'ordinateur: "<<endl;
cin>> a[1].marque;
cout<<endl<<"le model:"<<endl;
cin>>a[1].model;
cout<<endl<<"la vitesses du proscesseur:"<<endl;
cin>>a[1].proscesseur;
cout<<endl<<"quel est la taille de votre memoire vive en MO:"<<endl;
cin>>a[1].ram;
cout<<endl<<"la taille de votre disque dur en GO:"<<endl;
cin>>a[1].dd;
cout<<endl<<"la marque de votre ecran:"<<endl;
cin>>a[1].ecran;
cout<<endl<<"et ca taille en pouce:"<<endl;
cin>>a[1].taille;
return 0;
}
voila alors au debut tout va bien il me demande de saisir marque,model et vitesse du proscesseur et puis il affiche les lignes suivantes mais sans attendre que je rentre une valeur.
quelqu'un pourrais m'expliqué pourquoi, je ne comprend pas et vous pouvez voir que je suis un newbie dans le domaine.
D'avance merci
5 réponses
merci a toi mais je pense avoir trouvé le soucit
si je ne rentre pas une valeur comme le programme l'attent il me fais n'importe quoi!
genre:
du texte a la place de valeur numerique.
merci pour ton aide.
si je ne rentre pas une valeur comme le programme l'attent il me fais n'importe quoi!
genre:
du texte a la place de valeur numerique.
merci pour ton aide.
ui j'ai remarqué ca aussi vis a vis du programme mais chez moi quand je compile il ny a pas besoin du #include <cstdlib>
et #include <cstdio>
,et ca marche tres bien comme ca,sauf a la fin ou ca plante mais la j'ai po trop compris pourquoi.
et #include <cstdio>
,et ca marche tres bien comme ca,sauf a la fin ou ca plante mais la j'ai po trop compris pourquoi.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut,
Pour ce qui est de la gestion des erreurs avec cin, voir ici:
http://c.developpez.com/faq/cpp/?page=console#SL_cin_verify
Si tu as utilisé le source fournit dans le post initial ce n'est pas étonnant que ça plante à la fin, en effet:
Déclare un tableau a de 1 élément de type ordinateur
puis dans le reste du code on voit ceci:
où l'on référence le deuxième élément du tableau a qui n'en contient qu'un seul. En C/C++ l'index des éléments d'un tableau commence à 0. Donc à la fin du programme tu dois logiquement avoir une erreur segmentation fault.
A++
Pour ce qui est de la gestion des erreurs avec cin, voir ici:
http://c.developpez.com/faq/cpp/?page=console#SL_cin_verify
Si tu as utilisé le source fournit dans le post initial ce n'est pas étonnant que ça plante à la fin, en effet:
ordinateur a[1];
Déclare un tableau a de 1 élément de type ordinateur
puis dans le reste du code on voit ceci:
cin>> a[1].marque;
où l'on référence le deuxième élément du tableau a qui n'en contient qu'un seul. En C/C++ l'index des éléments d'un tableau commence à 0. Donc à la fin du programme tu dois logiquement avoir une erreur segmentation fault.
A++