Aide urgente en c++

Bounty killah............. -  
 pom -
Salut tout le monde .

..Voila j'ai un petit probleme a vous faire part , je ne suis malheureusement pas trop bon en programmation voila pkoi je vous fait appel , l'aide sera appreciée ! merci d'avance .

...Je dois faire un programme qui calcule la moyenne d'un etudiant en C++

..Voila ce que j'ai pu faire jusqu'a maintenant .
----------------------------------------------------------------------------
#include <iostream.h>
#include <stdio.h>
main()
{
char nom,prenom;

float tp1,tp2,tp3;


cout<< " bonjour entrez votre nom et prénom " ;
cin>>nom >>prenom;

cout<<" Entrez vos trois notes de travaux pratiques , elles doivent etre comprises entre (0 et 100 ).\n"
cin>>tp1>>tp2>>tp3;

if(tp1>=0&&tp1<=100)
{if(tp2>=0&&tp2<=100)
if(tp3>=0&&tp3<=100)
cout<<" Merci ! :votre moyenne est de "<<(tp1+tp2+tp3)/3<<endl;}
}}
---------------------------------------------------------------------------- Questions : pkoi mon programme ne lit pas mes trois tp(1,2,3) ? et comment fait-on un programme qui :
Arrive a lire trois nombres avec la condition que ces trois nombre soient entre( 0 et 100) et calcule la moyenne sans probleme ? Merci encore les gars , vous me sauvez la vie !

Besoin urgente d'aide , merci infiniment ! Bounty killah...........

6 réponses

maily Messages postés 7556 Date d'inscription   Statut Contributeur Dernière intervention   453
 
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
0
pom
 
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
0
pom
 
oups ! pardon, ce n'est pas

while( (tp1<0) && (tp1>100) )

mais

while( (tp1<0) || (tp1>100) )

mille excuses

pom
0
Bontykillah..........
 
...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é !
0
Bontykillah........
 
...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 .
0
pom
 
Salut Bontykillah,
Marvinrouge m'a juste donné quelques très sérieux conseils il y a quelques mois déjà, mais tu vois avec le segmentation fault j'ai toujours des choses à apprendre.
Pour moi cette erreur c'est vraiment la pire, car je mets trois plombes à la corriger.

Bonne continuation.

Pom
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
marvinrouge
 
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
0
leo1234
 
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;
0
baib
 
met plutot a la place de :
std::string nom;
std::string prenom;

ça :
using namespace std ;
ca va plu vit
0
pom > baib
 
Salut Baib, certes ca va plus vite mais si tu utilises une fonction de l'espace de nom standard, il risque d'y avoir un conflit.
Par
std::string nom;
std::string prenom;

tu limites la casse.

Pom
0