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

  1. maily Messages postés 7560 Statut Contributeur 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
  2. 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
  3. pom
     
    oups ! pardon, ce n'est pas

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

    mais

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

    mille excuses

    pom
    0
    1. 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
  4. 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
    1. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

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

      ça :
      using namespace std ;
      ca va plu vit
      0
      1. 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