CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

boucle infinie ?? c++

N_Cortex
N_Cortex
Niveau 7
24 juillet 2005 à 16:51:04

Dans mon programme c++, j´ai fait ça :

while ( perso.travail ! = 1 && perso.travail ! = 2 && perso.travail ! = 3 && perso.travail ! = 4)
{
cout < < " Selectionnez votre travail en inscrivant le numéro : 1-Chevalier 2-Magicien 3-Mercenaire 4-Archer " < < endl;
cin > > perso.travail;
}

Quand je tape 1,2,3 ou 4, ça fonctionne très bien et ça passe a la suite. Avec un chiffre autre que 1,2,3 ou 4, il me redemande la question, mais si je met une lettre, il part en boucle infinie, puisque perso.travail est int. Mais comment empecher ça ?

fracart
fracart
Niveau 5
24 juillet 2005 à 18:08:28

tu mets une condition a la saisie?

Quintoff
Quintoff
Niveau 10
24 juillet 2005 à 18:24:49

J´essayerais de convertir la variable en int avec de stoquer.

Exemple :

Quintoff
Quintoff
Niveau 10
24 juillet 2005 à 18:26:57

Oups voila la suite :) :

while ( perso.travail ! = 1 && perso.travail ! = 2 && perso.travail ! = 3 && perso.travail ! = 4)
{
cout < < " Selectionnez votre travail en inscrivant le numéro : 1-Chevalier 2-Magicien 3-Mercenaire 4-Archer" < < endl;
char temp;
cin > > temp;
perso.travail = int(temps)
}

Mais le problème c´est que je je sais pas si un char qui stocke 1 vaut 1 en valeur entière convertie etc...

Ni sur de ma méthode. Enfin eessaye toujours.

N_Cortex
N_Cortex
Niveau 7
24 juillet 2005 à 18:47:19

Mais ça risque pas de changer grand chose puisque c´est le fait de mettre un lettre dans le int qui créer une boucle infinie. Hors avec ta méthode, si je met une lettre dans le char, il la mettra aussi dans le int, non ?

Quintoff
Quintoff
Niveau 10
24 juillet 2005 à 18:51:23

Non puisque tu le convertit => int(temp)

N_Cortex
N_Cortex
Niveau 7
24 juillet 2005 à 19:04:50

Mais si il y a une lettre dans temp, après la conversion, int sera vide ?

Quintoff
Quintoff
Niveau 10
24 juillet 2005 à 19:33:18

Euh je crois pas. Ca correspondra a un nombre de 0 à 256 ou -128 à 128 normalement.

N_Cortex
N_Cortex
Niveau 7
24 juillet 2005 à 21:06:16

Ah ok, ça va faire un nombre aléatoire... Bon ba ça peut effectivement être ma solution, mais si jamais le nombre tombe sur 1, 2, 3 ou 4... je fais comment ?

fracart
fracart
Niveau 5
24 juillet 2005 à 22:56:35

ce serait pas mieux de faire comme ca :
( dsl je maitrise pa le C++)

entier i
i < - 0

tant que ( i < 1) et ( i > 4) faire
ecrire ( ´Veuillez choisir´)
lire ( i)
fin tant que

perso.travail < - i

fracart
fracart
Niveau 5
24 juillet 2005 à 22:57:25

lol, il mets des espaces dans mes fleches

Quintoff
Quintoff
Niveau 10
24 juillet 2005 à 23:33:22

Non c´est pas toi les espaces c´est le forum.
Sinon le problème est le même, si c´est une lettre => resultat inattendu.

N_Cortex ça ne fait pas un nombre aléatoire, mais la valeur numérique du caractère. Et je crois que int(1) = 1, int(2) = 2, . .. mais as sur. Essaye toujours :)

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment