lire au clavier [c++]

Voir le sujet précédent Voir le sujet suivant Aller en bas

resolu lire au clavier [c++]

Message  didi le Jeu 08 Déc 2011, 17:31

bonsoir

dans ma class Joueur j'ai une method string choisirUnePosition(char maxLigne,char maxColonne);
qui demande au joueur console jusqu'à ce que une position valide : format '1a' par example

Code:
string  Joueur::choisirUnePosition(char maxLigne,char maxColonne) {
      string pos ="";
      char str[2];
   do {
      cout << "\nVeuillez entrer la ligne et le colonne format commme  1a\n " ;
      if(cin >> str)   {
         cout << "\nMerci pour votre Position " << str ;
      } else {
         cout << "** information incorrecte \n";
         cin.clear();
         cin.getline(str,2,'\n');
      }

   } while((str[0] < '1' && str[0] > maxLigne) || (str[1] < 'a' && str[1] > maxColonne));
      pos = pos+str[0]+str[1];
   return pos;

}

mais quand je test dans la main ça ne fonctionne pas bien
il ne test pas le condition (par example : si la maxLine = '4' est je rentre 9 il ne boucle pas Sad )


Code:

int main() {
   Joueur j(OthelloOutils::BLANC);
   cout << "\nLa position est est : " << j.choisirUnePosition('4','g');

   return 0;
}

quand je rentre la position comme 9w
il affiche



La position est est : 9w

merci d'avance


Dernière édition par didi le Jeu 08 Déc 2011, 18:02, édité 1 fois

didi

Nombre de messages : 215
Prénom : Dinesh
Statut : Smile
Date d'inscription : 21/01/2009

Revenir en haut Aller en bas

resolu Re: lire au clavier [c++]

Message  aro le Jeu 08 Déc 2011, 17:43

didi a écrit: il ne test pas le condition (par example : si la maxLine = '4' est je rentre 9 il ne boucle pas Sad )
Didi, comment veux-tu que la condition soit vraie ? Tu testes si une valeur est plus petite que la valeur minimum ET plus grande que la valeur maximum.

aro

Nombre de messages : 557
Prénom : Anne
Statut : Prof
Date d'inscription : 06/09/2008

Revenir en haut Aller en bas

resolu Re: lire au clavier [c++]

Message  didi le Jeu 08 Déc 2011, 18:02

aro a écrit:
didi a écrit: il ne test pas le condition (par example : si la maxLine = '4' est je rentre 9 il ne boucle pas Sad )
Didi, comment veux-tu que la condition soit vraie ? Tu testes si une valeur est plus petite que la valeur minimum ET plus grande que la valeur maximum.

Laughing Smile

Merci madame

didi

Nombre de messages : 215
Prénom : Dinesh
Statut : Smile
Date d'inscription : 21/01/2009

Revenir en haut Aller en bas

resolu Re: lire au clavier [c++]

Message  Florent le Ven 16 Déc 2011, 15:21

Bonjour,

J'ai aussi un problème pour lire au clavier, je lis une chaine de caractère pour lire les 2 positions lignes et colonnes j'aimerais donc 2 int (je convertis en lettre dans mes methodes...)

Comment faire pour convertir ma chaine String clavier; en entier?

Quelque chose du genre l = clavier[0]; et c= clavier[1]; et quelles exceptions faut il gérer quand l'user rentre des lettres?

Merci de votre aide car je ne trouve rien dans les notes et sur le web il y a trop de méthodes différentes

Florent

Nombre de messages : 93
Prénom : Florent
Date d'inscription : 02/02/2010

Revenir en haut Aller en bas

resolu Re: lire au clavier [c++]

Message  galaeron le Ven 16 Déc 2011, 17:42

Je comprends pas bien le soucis ... Voici néanmoins quelques pistes ...
  1. Si c'est pour convertir un string en int ...
    Code:
    istringstream stream(temp);
  2. Si c'est pour convertir un char en int essaye de regarder du coter de la table ascii
    Code:
    tmp=(int)(x-65);


NB : Ceci ne sont que des propositions et pas la vérité absolue ...

PS : Il y a des choses à faire AVANT ET APRES ça !

galaeron

Nombre de messages : 113
Age : 28
Prénom : Arthur
Statut : 3IR12
Date d'inscription : 29/06/2011

Revenir en haut Aller en bas

resolu Re: lire au clavier [c++]

Message  Florent le Sam 17 Déc 2011, 13:45

Merci de ta réponse

j'aimerais simplement spliter en 2 mon string pour recuperer 2 int j'ai essayer avec la methode ascii

Code:

      cin >> clavier;

      cout << clavier[0] <<clavier [1];

      l=(int)(clavier[0]-65);
      c=(int)(clavier[1]-65);

mais il m'affiche des nombres qui ne correspondent pas si j'entre 44 il me sort -13-13

J'aimerais aussi pouvoir gérer l'exception si l'utilisateur rentre des lettres ou autres qui ne sont pas des int mais je ne sais pas ce sont lesquels

Florent

Nombre de messages : 93
Prénom : Florent
Date d'inscription : 02/02/2010

Revenir en haut Aller en bas

resolu Re: lire au clavier [c++]

Message  bigmax le Sam 17 Déc 2011, 14:57

Attention de ne pas oublier que avec l'option de vouloir récupérer un string pour la position, la façon dont tu essayes de le faire sera mauvaise si le joueur veut rentrer une valeur de ligne >10.
Je suppose que ta variable clavier est de type string.. Alors tu dois vérifier:
1. SI clavier.size() < 2 || clavier.size() > 3 -> chaine non valide
2. SI clavier.size() == 2 ALORS
SI clavier.at(0) < 0 || clavier.at(0) > nbLigneDuTableau -> Ligne non valide
SI..
3. SI clavier.size() == 3 ALORS

Voilà la piste de départ.. après faut pas oublier que la méthode at(0) va ici te retourner le code ascii du 1er caractère de ta chaine donc faudra avoir une méthode qui te transforme un char en int.. Regarde la table ascii et tu vas voir tout de suite que clavier[0]-65 devrait plutôt ressembler à clavier[0]-48
J'aimerais aussi pouvoir gérer l'exception si l'utilisateur rentre des lettres ou autres qui ne sont pas des int mais je ne sais pas ce sont lesquels
Le plus facile c'est de demander à l'utilisateur de rentrer une ligne puis une colonne c'est moins beau mais le traitement est bien plus simple.

Bon courage!

Edit : J'ai supposé que tu demandes à l'utilisateur ceci -> Entre la position : 1a ou 5c ou 10f...

bigmax

Nombre de messages : 132
Age : 27
Prénom : Gilles
Statut : 3ème Réseaux
Date d'inscription : 17/11/2007

Revenir en haut Aller en bas

resolu Re: lire au clavier [c++]

Message  nvs le Sam 17 Déc 2011, 17:30

j'ai déposé sur poESI un code pour lire un entier au clavier.






Surprised

_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

resolu Re: lire au clavier [c++]

Message  galaeron le Dim 18 Déc 2011, 16:21

(Dans la lecture que je t'ai linké en *hide*, tu as les réponses à toutes tes questions cela dit ...)

galaeron

Nombre de messages : 113
Age : 28
Prénom : Arthur
Statut : 3IR12
Date d'inscription : 29/06/2011

Revenir en haut Aller en bas

resolu Re: lire au clavier [c++]

Message  Florent le Dim 18 Déc 2011, 16:34

Merci pour ces aides si je ne m'en sors pas avec tout ça Smile

Florent

Nombre de messages : 93
Prénom : Florent
Date d'inscription : 02/02/2010

Revenir en haut Aller en bas

resolu Re: lire au clavier [c++]

Message  nvs le Dim 18 Déc 2011, 18:33

galaeron a écrit:(Dans la lecture que je t'ai linké en *hide*, tu as les réponses à toutes tes questions cela dit ...)
je confirme Smile







Very Happy

_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

resolu Re: lire au clavier [c++]

Message  Florent le Dim 18 Déc 2011, 23:00

nvs a écrit:
galaeron a écrit:(Dans la lecture que je t'ai linké en *hide*, tu as les réponses à toutes tes questions cela dit ...)
je confirme Smile







Very Happy

En effet mais tu as édité ton message je crois car je ne l'avais pas vu la première fois mais merci page très utile!

Florent

Nombre de messages : 93
Prénom : Florent
Date d'inscription : 02/02/2010

Revenir en haut Aller en bas

resolu Re: lire au clavier [c++]

Message  Maethy le Dim 18 Déc 2011, 23:22

Peut on réutiliser une partie du code de lecture d'entier posté sur poESI dans le projet ?

Maethy

Nombre de messages : 2
Age : 29
Prénom : Jean-Sébastien
Date d'inscription : 23/09/2010

Revenir en haut Aller en bas

resolu Re: lire au clavier [c++]

Message  galaeron le Dim 18 Déc 2011, 23:29

@ Florent
Non, non je ne l'ai pas édité!
@ Maethy
J'imagine que oui, sinon il ne le donnerait pas ! Mais j'imagine aussi qu'une compréhension est de rigueur avant la copie =)

galaeron

Nombre de messages : 113
Age : 28
Prénom : Arthur
Statut : 3IR12
Date d'inscription : 29/06/2011

Revenir en haut Aller en bas

resolu Re: lire au clavier [c++]

Message  nvs le Lun 19 Déc 2011, 10:48

Maethy a écrit:Peut on réutiliser une partie du code de lecture d'entier posté sur poESI dans le projet ?
évidemment. de manière plus générale, je ne vois pas comment, ni pourquoi, on pourrait interdire, pour un projet, de réutiliser du code puisé à quelle que source que se soit. l'important c'est de bien comprendre tout le code remis Smile







santa

_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

resolu Re: lire au clavier [c++]

Message  Contenu sponsorisé Aujourd'hui à 14:31


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum