Partage
  • Partager sur Facebook
  • Partager sur Twitter

getch() et conio.h

Sujet résolu
31 octobre 2018 à 19:27:04

Bonsoir,

j'ai inclus conio.h dans mon programme pour pouvoir utilisé getch() pour saisir un chiffre sans devoir appuyer sur entrée.

Dans mon programme je dois soit écrire 1 soit 2 pour faire une action et si j'écris autre chose il me dis que cette action n'est pas disponible et il recommence grâce à un while et je dois ressaisir 1 ou 2.

Mon problème est que même en écrivant 1 ou 2 il me dis que cette action n'est pas disponible.

voici le programme :

main.cpp

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <conio.h>
#include "actions.h"

using namespace std;

int main()
{
    cout << "Bonjour et bienvenue !" << endl << endl;

    cout << "Voici votre argent :" << endl << endl;

    system("start affichage.exe");

    string const nomFichier("points.txt");

    ofstream fichier(nomFichier.c_str());

    if (fichier)
    {
        double argent(40);
        double clicker(1);
        char action;

        fichier << argent << endl;
        fichier.seekp(0, ios::beg);

        while (argent > 0)
        {
            cout << "Quelle action voulez vous faire ?" << endl << endl;
            cout << "1: gagner de l'argent" << endl;
            cout << "2: augmenter votre argent de 25%" << endl << endl;

            do
            {
                action = getch();
                cout << endl << endl;

                switch (action)
                {
                case 1:
                    argent += clicker;
                    fichier << argent << endl;
                    fichier.seekp(0, ios::beg);
                    break;
                case 2:
                    argent = augmenterDe25Pourcent(argent);
                    fichier << argent << endl;
                    fichier.seekp(0, ios::beg);
                    cout << endl << endl;
                    break;

                default:
                    cout << "Cette action n'est pas disponible." << endl;
                    break;
                }

            }
            while (action != 1);
        }
    }
    else
    {
        cout << "ERREUR : Impossible d'ouvrir le fichier." << endl;
    }

    return 0;
}

Merci d'avance

  • Partager sur Facebook
  • Partager sur Twitter
Je n'aime pas l'aubergine !
31 octobre 2018 à 19:37:18

Je laisse tomber les réflexions sur tout ce qui ne va pas du point de vue C++.

Juste un truc, vous récupérez un "char" et vous le comparé à des entiers (1 et 2), vous auriez pas oublier la notion de code ASCII ?

  • Partager sur Facebook
  • Partager sur Twitter
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
31 octobre 2018 à 19:48:20

bacelar a écrit:

Je laisse tomber les réflexions sur tout ce qui ne va pas du point de vue C++.


Je n'ai pas compris ce que vous voulez dire

bacelar a écrit:

Juste un truc, vous récupérez un "char" et vous le comparé à des entiers (1 et 2), vous auriez pas oublier la notion de code ASCII ?


ça ne marche pas non plus avec int
  • Partager sur Facebook
  • Partager sur Twitter
Je n'aime pas l'aubergine !
31 octobre 2018 à 19:51:14

Tortafrate a écrit:

bacelar a écrit:

Je laisse tomber les réflexions sur tout ce qui ne va pas du point de vue C++.


Je n'ai pas compris ce que vous voulez dire

bacelar a écrit:

Juste un truc, vous récupérez un "char" et vous le comparé à des entiers (1 et 2), vous auriez pas oublier la notion de code ASCII ?


ça ne marche pas non plus avec int


Il voulais dire autre que le 'probleme de logique' il y a les problemes lier au c++ : using namespace std; etc ...
Pour ton probleme je crois que tu a pris son intervention a l'envers ..

getch() retourne un char or toi tu fait .. switch(){ case 1(ENTIER): ...
  • Partager sur Facebook
  • Partager sur Twitter
31 octobre 2018 à 20:00:48

Zérotisme a écrit:

Tortafrate a écrit:

bacelar a écrit:

Je laisse tomber les réflexions sur tout ce qui ne va pas du point de vue C++.


Je n'ai pas compris ce que vous voulez dire

bacelar a écrit:

Juste un truc, vous récupérez un "char" et vous le comparé à des entiers (1 et 2), vous auriez pas oublier la notion de code ASCII ?


ça ne marche pas non plus avec int


Il voulais dire autre que le 'probleme de logique' il y a les problemes lier au c++ : using namespace std; etc ...
Pour ton probleme je crois que tu a pris son intervention a l'envers ..

getch() retourne un char or toi tu fait .. switch(){ case 1(ENTIER): ...


Merci maintenant ça marche
  • Partager sur Facebook
  • Partager sur Twitter
Je n'aime pas l'aubergine !
31 octobre 2018 à 20:05:38

Tortafrate a écrit:

Zérotisme a écrit:

Tortafrate a écrit:

bacelar a écrit:

Je laisse tomber les réflexions sur tout ce qui ne va pas du point de vue C++.


Je n'ai pas compris ce que vous voulez dire

bacelar a écrit:

Juste un truc, vous récupérez un "char" et vous le comparé à des entiers (1 et 2), vous auriez pas oublier la notion de code ASCII ?


ça ne marche pas non plus avec int


Il voulais dire autre que le 'probleme de logique' il y a les problemes lier au c++ : using namespace std; etc ...
Pour ton probleme je crois que tu a pris son intervention a l'envers ..

getch() retourne un char or toi tu fait .. switch(){ case 1(ENTIER): ...


Merci maintenant ça marche


rattrape le vite !
  • Partager sur Facebook
  • Partager sur Twitter
31 octobre 2018 à 20:54:34

Salut,

Il faut juste se souvenir que '1' ne vaut pas 1, mais ...49 ...

Si tu récupère un char, tu dois utiliser les caractères représentés dans la table ASCII pour ton switch ... case (à savoir '1' et '2').

Si tu t'intéresse à la valeur numérique de ces caractères -- sous quelque forme que ce soit -- tu dois prendre leur indice dans la table ASCII à savoir ... 49 et 50 ;)

EDIT : Ceci dit, conio.h n'est absolument pas un fichier d'en-tête portable : il ne fonctionne que sous windows (et encore).  Et, pire de tout, ce n'est pas un fichier d'en-tête C++, mais un fichier d'en-tête C :p

-
Edité par koala01 31 octobre 2018 à 20:55:51

  • Partager sur Facebook
  • Partager sur Twitter
Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait