6 réponses
maily
Messages postés
7556
Date d'inscription
lundi 26 juin 2000
Statut
Contributeur
Dernière intervention
23 juin 2023
453
10 nov. 2004 à 09:30
10 nov. 2004 à 09:30
Bonjour!
Je pense que tu devrais demander de rentrer leurs notes une par une... Comme pour le nom et le prénom d'ailleurs!
Sinon, le reste me semble bon! ;-)
Maily :-))))
Boumj'chtattrape
Je pense que tu devrais demander de rentrer leurs notes une par une... Comme pour le nom et le prénom d'ailleurs!
Sinon, le reste me semble bon! ;-)
Maily :-))))
Boumj'chtattrape
Salut, ce qui plante est le fait que tu fais
char nom,prenom
un char est UN seul caractere, une string est une chaine de caractere.
donc il faut que tu fasses
char* nom;
char* prenom;
(un pointeur vers un char est une string)
Voici un prgramme qui devrait fonctionner :
#include<iostream>
using std::cout;
using std::cin;
using std::endl;
int main()
{
char* nom;
char* prenom;
float tp1,tp2,tp3;
cout<<"bonjour entrez votre nom et prenom\n";
cin>>nom>>prenom;
cout<<" Entrez vos trois notes de travaux pratiques , elles doivent etre comprises entre (0 et 100 ).\n";
cin>>tp1;
while( (tp1<0) && (tp1>100) )
{
cout<<"erreur de saisie de tp1\nRecommencez\n";
cin>>tp1;
}
cin>>tp2;
while( (tp2<0) && (tp2>100) )
{
cout<<"erreur de saisie de tp2\nRecommencez\n";
cin>>tp2;
}
cin>>tp3;
while( (tp3<0) && (tp3>100) )
{
cout<<"erreur de saisie de tp3\nRecommencez\n";
cin>>tp3;
}
cout<<"Merci "<<prenom<<" "<<nom<<" ! Votre moyenne est de "<<(tp1+tp2+tp3)/3<<endl;
return 0;
}
Pom
char nom,prenom
un char est UN seul caractere, une string est une chaine de caractere.
donc il faut que tu fasses
char* nom;
char* prenom;
(un pointeur vers un char est une string)
Voici un prgramme qui devrait fonctionner :
#include<iostream>
using std::cout;
using std::cin;
using std::endl;
int main()
{
char* nom;
char* prenom;
float tp1,tp2,tp3;
cout<<"bonjour entrez votre nom et prenom\n";
cin>>nom>>prenom;
cout<<" Entrez vos trois notes de travaux pratiques , elles doivent etre comprises entre (0 et 100 ).\n";
cin>>tp1;
while( (tp1<0) && (tp1>100) )
{
cout<<"erreur de saisie de tp1\nRecommencez\n";
cin>>tp1;
}
cin>>tp2;
while( (tp2<0) && (tp2>100) )
{
cout<<"erreur de saisie de tp2\nRecommencez\n";
cin>>tp2;
}
cin>>tp3;
while( (tp3<0) && (tp3>100) )
{
cout<<"erreur de saisie de tp3\nRecommencez\n";
cin>>tp3;
}
cout<<"Merci "<<prenom<<" "<<nom<<" ! Votre moyenne est de "<<(tp1+tp2+tp3)/3<<endl;
return 0;
}
Pom
oups ! pardon, ce n'est pas
while( (tp1<0) && (tp1>100) )
mais
while( (tp1<0) || (tp1>100) )
mille excuses
pom
while( (tp1<0) && (tp1>100) )
mais
while( (tp1<0) || (tp1>100) )
mille excuses
pom
...Salut Pom et merci encore pour ton aide ,le programme arrive a compiler , mais ...juste apres avoir entrez les nom et prenom ca me met ;
SEGMENTATION FAULT ! je ne sais pas ce que c'est et je n'arrive pas a comprendre pkoi , j'ai essayer pourtant de le remodeler , mais rien .
Essaies de le compiler ,et fais moi signe des que tu peux .
je te remercie encore pour ton aide , c'est apprecié !
SEGMENTATION FAULT ! je ne sais pas ce que c'est et je n'arrive pas a comprendre pkoi , j'ai essayer pourtant de le remodeler , mais rien .
Essaies de le compiler ,et fais moi signe des que tu peux .
je te remercie encore pour ton aide , c'est apprecié !
...Milles merci Pom , tu me sauve la vie ! je suis toujours étonné de la facilité avec laquelle certaines personnes arrive faire de telles programmes ,
...Je vais l'essayer ! merci encore .
...Je vais l'essayer ! merci encore .
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut Bontykillah, salut Pom.
La "SEGMENTATION FAULT" est du à l'écriture des nom et prénom sur 2 variables mémoires NON ALLOUEES (erreur TRES classique en C/C++)
char* nom; // pas bon !!!
char* prenom; // pas bon !!!
soit
char* nom = new char [100];
char* prenom = new char [100];
// dans ce cas sgemntation fault seulement si l'utilisateur s'AMUSE à saisir un nom ou un prénom de + de 99 caractères
(oui 99 car 100 = 99 + 1, le 1 &tan,t le '\0' caractère de fi de chaine).
marvinrouge
La "SEGMENTATION FAULT" est du à l'écriture des nom et prénom sur 2 variables mémoires NON ALLOUEES (erreur TRES classique en C/C++)
char* nom; // pas bon !!!
char* prenom; // pas bon !!!
soit
char* nom = new char [100];
char* prenom = new char [100];
// dans ce cas sgemntation fault seulement si l'utilisateur s'AMUSE à saisir un nom ou un prénom de + de 99 caractères
(oui 99 car 100 = 99 + 1, le 1 &tan,t le '\0' caractère de fi de chaine).
marvinrouge
Hello!
En programmation, il faut toujours nettoyer derrière soi... donc si tu alloues de la mémoire comme suggéré par marvinrouge, n'oublie pas la désallouer quand tu n'en as plus besoin.
delete [] nom;
nom = NULL; // bonne pratique pour éviter de réutiliser une zone mémoire qui n'est plus allouée
Mais les bibliothèques standards c++ t'offrent des objets "string" qui se chargent de ces problèmes de gestion de mémoire à ta place. Il te suffit de déclarer tes variable "nom" et "prenom" comme ceci (et tu n'as même pas besoin de désallouer quoique ce soit):
std::string nom;
std::string prenom;
En programmation, il faut toujours nettoyer derrière soi... donc si tu alloues de la mémoire comme suggéré par marvinrouge, n'oublie pas la désallouer quand tu n'en as plus besoin.
delete [] nom;
nom = NULL; // bonne pratique pour éviter de réutiliser une zone mémoire qui n'est plus allouée
Mais les bibliothèques standards c++ t'offrent des objets "string" qui se chargent de ces problèmes de gestion de mémoire à ta place. Il te suffit de déclarer tes variable "nom" et "prenom" comme ceci (et tu n'as même pas besoin de désallouer quoique ce soit):
std::string nom;
std::string prenom;