Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur lors de la compilation

Sujet résolu
    13 juin 2007 à 20:25:23

    Bonjour,
    j'ai voulu faire un programme avec les objets et une fonction qui recoit 2 valeurs et voilà l'erreur :
    main.cpp:44: error: `resultat' undeclared (first use this function)
    main.cpp:44: error: (Each undeclared identifier is reported only once for each function it appears in.)
    main.cpp:44: error: `nombreEntre1'
    undeclared (first use this function)

    voilà mon code :
    #include <iostream>


    #include <string>


    using namespace std;


    int triple(int nombre1, int nombre)
    {
        return 3*nombre;
    }



    int main()
    {


        cout <<"Entrez votre prenom"<<endl;

        string prenom = "";

        cin >> prenom;

        cout <<"Votre nom fait "<<prenom.size()<<" lettres ! "<<endl;

        cout <<prenom<<" entrez un nombre...";


            int nombreEntre = 0;

            cin >> nombreEntre;

        cout <<prenom<< "entrez un autre nombre"<<endl;

        int nombreEntre2 = 0;

        cin >> nombreEntre2;

        prenom.erase();

        resultat = triple(nombreEntre, nombreEntre1);

        cout <<nombreEntre<<" / "<<nombreEntre1<<" = "<<resultat<<endl;


            return 0;
    }

    merci
    • Partager sur Facebook
    • Partager sur Twitter
      13 juin 2007 à 20:45:15

      Il manque :


      int resultat;


      Puis modifie nombreEntre2 par nombreEntre1 dans la déclaration de variable.

      Un conseil, met tes déclarations de variables en début de fonction, ca t'évitera des oublis si cons...
      • Partager sur Facebook
      • Partager sur Twitter
        14 juin 2007 à 13:36:51

        heu il y a beaucoup d'erreurs...
        une erreur involontaite "cin>>prenom;"
        ATTENTION si tu marque "le super zero"
        il t'affichera "le"
        (et crois moi ca pouri beaucoup de chose ^^ )

        j'ai tester ton code et il vaut mieux changer entre1 par entre2.
        • Partager sur Facebook
        • Partager sur Twitter
          14 juin 2007 à 16:49:46

          mais comment faire alors pour qu'il affiche le super zero ?
          • Partager sur Facebook
          • Partager sur Twitter
            15 juin 2007 à 9:25:18

            il faut utiliser un tableau de char
            char prenom[50]

            et utiliser soit scanf(main on est en c++ alors...)
            soit gets(char*)

            //bla bla bla
            char prenom[50];
            char* pointeur=&prenom;
            gets(pointeur);//enregistre le texte y compris les espaces dans prenom[]
            puts(prenom);//lit la chaine
            //bla bla bla

            par contre je ne vois plus comment on fait pour mesurer la chaine de charactere (car sizeof() te renverras 50)

            mais j'essairais de te dire comment on peux faire pour mesurer la chaine de charactere( :-° mais là,j'ai pas trop le temps...)

            EDIT:j'ai la solution
            #include <iostream>
            #include <string>//inutil ici
            using namespace std;

            int main(int argc, char *argv[])
            {
                char prenom[50];
                long longueurChaine;
                gets(prenom);//on entre les valeurs prenom
                // On récupère la longueur de la chaîne dans longueurChaine
                longueurChaine = strlen(prenom);//identique à prenom.size

            cout<<prenom<<" votre prenom fait "<<longueurChaine<<" characteres de long!!"<<endl;
            system("PAUSE");//moi je suis sur DEV ^^
                return EXIT_SUCCESS;
            }


            :p ce code permet d'entrer les espace les accent et calcul le nombre de charactere :lol:
            • Partager sur Facebook
            • Partager sur Twitter
              15 juin 2007 à 10:35:58

              std::getline pour lire des lignes (attention subtilité, cf la FAQ C++ de developpez à ce sujet) (i.e. oublie les char[])
              • Partager sur Facebook
              • Partager sur Twitter
              C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
                15 juin 2007 à 10:44:38

                oui il existe cin.get et cin.getline mais le probleme n'est pas pour lire mais pour entrer les valeur avec un espace je n'ai vu que cette soluce
                • Partager sur Facebook
                • Partager sur Twitter
                  15 juin 2007 à 11:03:31

                  stg::getline. Pas std::istream::getline.

                  Quelle différence tu fais entre "lire" et "entrer les valeurs" ? (Perso j'en fais pas)
                  • Partager sur Facebook
                  • Partager sur Twitter
                  C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
                    15 juin 2007 à 11:05:31

                    reponse: lire -> ce qu'on lit
                    entrée des valeur -> ce qu'on ecrit avec cin gets etc...

                    si tu connais une solution plus "c++" je serais ravi de la connaitre car avec gets on ne peu qu'utiliser char* et non std::string
                    • Partager sur Facebook
                    • Partager sur Twitter
                      15 juin 2007 à 11:13:52

                      o_O

                      cin.get ... lit des données depuis le flux entrant .... std::cin (== console input) est un std::isftream (input stream) ; input, c'est ce qui rentre : la lecture
                      Si tu veux écrire sur la console, c'est std::cout (==console output) qui est un std::ostream (output stream) ; output, c'est ce qui sort : l'écriture

                      EDIT: Sinon, je l'avais déjà dit, c'est là qu'il faut aller voir: http://c.developpez.com/faq/cpp/?page=SL#SL_get_string_line
                      • Partager sur Facebook
                      • Partager sur Twitter
                      C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
                        15 juin 2007 à 11:38:14

                        lol regarde le code que j'ai mis plus haut tu verras que je sais tres bien m'en servir^^
                        (j'ai pas utiliser "cin>>" car il est pratique pour les variables les textes SANS espaces mais avec je ne conais que "gets(char*)"
                        • Partager sur Facebook
                        • Partager sur Twitter
                          15 juin 2007 à 11:45:41

                          Tu inverses lire et écrire (je parle de vocabulaire).
                          put/write==mettre/ecrire, read/get==lire/obtenir. put et write correspondent à la même famille de focntion d'écriture, de même que read et get appartiennent à la même famille de fonction de lecture.

                          Quant à comment on fait en C++, j'ai donné le lien.
                          • Partager sur Facebook
                          • Partager sur Twitter
                          C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
                            15 juin 2007 à 12:11:33

                            de rien ^^

                            en fait c'est mon livre de c++ qui en pouri^^
                            il n'a jamais mentionné l'utilisation du cin.getline de cette manière ^^

                            • Partager sur Facebook
                            • Partager sur Twitter
                              15 juin 2007 à 12:58:11

                              Pas std::istream::getline. Mais std::getline. Ce n'est pas la même fonction.

                              (Beaucoup de livres de C++ sont mauvais :-()
                              • Partager sur Facebook
                              • Partager sur Twitter
                              C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
                                15 juin 2007 à 16:31:34

                                il faudrais en ecrire un pour en faire un potable :lol:
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  15 juin 2007 à 22:41:48

                                  Pour être sur de comment faire, regarde la doc : http://www.polydoc.org/cpp/getline
                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Erreur lors de la compilation

                                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                  • Editeur
                                  • Markdown