IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

Appui de touche et boucle


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mai 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 9
    Points : 1
    Points
    1
    Par défaut Appui de touche et boucle
    Bonjour j'ai un petit probleme avec mon code je voudrais que lorsque je j'appuis sur les deux touches i+1 (hors si je maintient ces deux touches tant que i<70 alors il continue si i>70 il le stop) mais je voudrais que lorsque je lache c'est deux bouton I retourne a la valeur 0;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    #include <windows.h>
    #include <iostream>
     
     
    using namespace std;
     
    int i=0;
     
    int main()
    {
     
        {
            while (i<70)
            {
                if (GetAsyncKeyState(MK_RBUTTON) && GetAsyncKeyState(MK_LBUTTON) )
     
                {
            /// Action Ici
                    i++;
     
     
                }
                if (i>70)
                {
                    system("pause");
                    if (i>70)
                    {
                        i=0;
                    }
     
                }
                Sleep(0) ;
            }
     
     
        }
    }
    Merci D'avance

  2. #2
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    En même temps, c'est normal:

    Tu as une boucle, dont la condition pour rentrer dedans est "i est plus petit que 70".

    Et, dans cette boucle, alors que i+1 sera toujours au mieux égal à 70 (car, dans le meilleurs des cas, tu ne rentrera dans la boucle que si i vaut GRAND MAXIMUM... 69), tu essayes d'imposer une condition selon laquelle i vaut MINIMUM ...71, vu que tu testes si i est PLUS GRAND que 70

    "Cherchez l'erreur"
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mai 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    "tu essayes d'imposer une condition selon laquelle i vaut MINIMUM ...71, vu que tu testes si i est PLUS GRAND que 70" je ne comprend pas si je change pour i=70 alors le programme ne marche plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    .....if (i>70)
                {
                    system("pause");
                    if (i=70)
                    {
                        i=0;
                    }
     
                }
    ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
                }
                if (i>=70)
                {
                    system("pause");
                        i=0;
                    }
     
                }
                Sleep(0) ;
            }
     
     
        }
    Si I est > ou = a 70 fait sa (je ne vois pas ou est est l'erreur il commence a 0, +1 a chaque action est quand il arrive a 70 stop et réinitialise toi a 0

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mai 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Fixer bon maintenant je voudrais comme dit plus haut si je lache rbutton et Lbutton sa revien a 0 tous seul car a chaque fois je dois appuyer sur espace pour continuer je veux que se soit automatic
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    #include <windows.h>
    #include <iostream>
     
     
    using namespace std;
     
    int i=0;
    int y=70;
     
     
     
     
     
    int main()
    {
     
        {
            while (i<=70)
            {
                if (GetAsyncKeyState(MK_RBUTTON) && GetAsyncKeyState(MK_LBUTTON) )
     
                {
                    //code ici
                    i++;
     
     
                }
                if (i>=70)
                {
                    i= y-i;
                    system("pause");
     
                    }
     
                }
                Sleep(0) ;
            }
     
     
        }

  5. #5
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par upf01087 Voir le message
    "tu essayes d'imposer une condition selon laquelle i vaut MINIMUM ...71, vu que tu testes si i est PLUS GRAND que 70" je ne comprend pas si je change pour i=70 alors le programme ne marche plus
    Mais c'est parce que i=70 assigne la valeur 70 à la variable i. Cela ne permet pas, n'a jamais permis et ne permettra jamais (du moins en C++) de tester une égalité

    Pour tester l'égalité, il faut utiliser deux égal d'affilée : if(i == 70)
    Si I est > ou = a 70 fait sa (je ne vois pas ou est est l'erreur il commence a 0, +1 a chaque action est quand il arrive a 70 stop et réinitialise toi a 0
    Vérifie tes conditions!!! La condition pour permettre de rentrer dans la boucle est "tant que i est PLUS PETIT que 70" et dans le test GetAsyncKeyState, tu incrémente i de 1.

    Tu tournes les choses comme tu veux, i ne peut donc jamais être PLUS GRAND que 70, vu que, dés que la condition i < 70 n'est plus remplie (autrement dit, dés que i vaut 70 (ou plus) ), tu ne rentre plus dans la boucle, et le test GetAssyncKeyState ne sera plus effectué.

    Et, après ce test sur GetAsyncKeyState, tu fais un test dont la condition est "si i est PLUS GRAND que 70"... Ce qui est un test tout à fait différent de "si i est plus grand OU EGAL à 70"

    Tu as donc trois solutions:

    1- Tu peux considérer que, quoi qu'il arrive, lorsque l'on atteind la première ligne après l'accolade fermante de la boucle, i vaudra forcément 70:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int main(){
        int i=0;
        while(i < 70){
            if (GetAsyncKeyState(MK_RBUTTON) && GetAsyncKeyState(MK_LBUTTON) ){
                /// Action Ici
                i++;
            }
        }
        // i vaut forcément 70 ici : c'est GARANTI par la condition d'entrée dans la boucle
    }
    2- Tu pourrais envisager d'adapter la condition d'entrée dans la boucle, de manière à ce que la logique (qui provoquera l'incrémentation de i) "donne une chance" à ton test "si i est plus grand que 70" de donner la réponse truePour ce faire, il faudrait que l'on accepte de rentrer une dernière fois dans la boucle lorsque i est déjà égal à 70

    3- Tu peux, enfin, envisager de corriger ton test pour qu'il réponde true lors du dernier passage dans la boucle:

    Etant admis que le dernier passage se fait lorsque i vaut 69 et que le passage dans le test GetAssyncKeyState incrémente i de 1, le test doit donc s'assurer que... i est EGAL à 70

    D'un point de vue purement logique, les trois possibilités sont "correctes", mais la première semble très largement être non seulement plus simple à mettre en oeuvre, plus "logique", et surtout plus "efficace"... Qu'en pense tu
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mai 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    ahahahah


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    #include <windows.h>
    #include <iostream>
     
     
    using namespace std;
     
     
    bool Toggle =true;
    int i=0;
    int y=70;
     
     
     
     
     
    int main()
    {
     
        {
            while (i<=70)
            {
                if (GetAsyncKeyState(MK_RBUTTON) && GetAsyncKeyState(MK_LBUTTON) )
     
     
     
                {
             ///code ici
     
     
                    i++;
                    Sleep(0);
                }
     
                if (i==70)
     
                {
     
                    Sleep(1000);
                    i= i-y ;
     
                }
                Sleep(1);
                if (  i<70)
                {
                    bool Toggle= false ;
     
                }
                if (Toggle==false || i>35)
                {
     
                }
            }
            Sleep(0) ;
        }
        return 0;
    }

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mai 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    bon je suis un peu bloquer la je voudrais lui dire que quand j'appuie sur les deux touches i++ mais si je m’arrête et que i est different de 70 i----->0

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. BOUCLE FOR AIDE
    Par lia_13 dans le forum Général Python
    Réponses: 1
    Dernier message: 27/07/2013, 15h51
  2. Optimiser une boucle à l'aide d'instructions simd
    Par moomba dans le forum Débuter
    Réponses: 5
    Dernier message: 10/11/2012, 19h31
  3. un problem aide moi
    Par dima133 dans le forum Fortran
    Réponses: 1
    Dernier message: 27/04/2012, 08h03
  4. Lecture d'AVI en boucle à l'aide de DSPack
    Par Dirk-Pitt dans le forum Delphi
    Réponses: 0
    Dernier message: 20/07/2007, 11h56
  5. [LG]Problême Boucle
    Par pierrOPSG dans le forum Langage
    Réponses: 1
    Dernier message: 29/04/2004, 16h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo