Boucle cin.get()

Résolu/Fermé
gl111 Messages postés 4 Date d'inscription dimanche 30 octobre 2016 Statut Membre Dernière intervention 10 novembre 2016 - Modifié par mamiemando le 15/12/2016 à 11:25
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 15 déc. 2016 à 11:28
Bonjour,

Mon programme a pour but de récupérer une suite de valeurs numériques avec une boucle
cin.get()
que l'utilisateur donne, ensuite de les stocker, et par la suite faire une multitude d'opérations avec.

Mais le truc c'est quand je mets dans mon programme par exemple "12", il ne ressort rien, vu qu'il sort de la boucle quand il atteint '\n'.

Comment puis-je faire qu'il prenne le "12" et que je puisse réutiliser le "12" dans une variable dans la boucle ?

Désolé je suis très mauvais pour m'exprimer...

Merci d'avance de votre aide


#include <cstdlib> 
#include <iostream> 
#include <iomanip> 
#include <limits> 
#include <cctype> 

using namespace std;


enum class Etats {ETAT_INITIAL, LECTURE_PREMIER_NOMBRE, FIN_LECTURE, LECTURE_NOMBRE_SUIVANT};


int main() {

    char serieNumerique;
    int etapes(0),conversionChar,premierNombreCalcul(0),secondNombreCalcul(0),compteur(1);
  
    
    cout<<" Entrez une chaine chaine numerique  (>=0) : ";
    cin.get(serieNumerique);
    
    while(serieNumerique != '\n'){
    
        switch((Etats)(etapes)){
            
            case Etats::ETAT_INITIAL : {
                if(not isspace(serieNumerique)){
                 etapes = 1;} else {break;}  
            }
            
            case Etats::LECTURE_PREMIER_NOMBRE : {
                
                if(iscntrl(serieNumerique)){ cout<<premierNombreCalcul<<endl;}
             
                if(not isspace(serieNumerique)){
                premierNombreCalcul *= 10;
                conversionChar = (int)serieNumerique - 48;
                premierNombreCalcul += conversionChar;  
                break;
                 } else { 
                    cout<<premierNombreCalcul<<endl;
                    etapes = 2;
                 }
      
            }
            
            case Etats::FIN_LECTURE : {
                
            }
            
            case Etats::LECTURE_NOMBRE_SUIVANT : {
    
               
                }
            
            
           
            default : break;
            
        }
        
        cin.get(serieNumerique);
        
    }
   
    system("PAUSE");

    return EXIT_SUCCESS;
}



EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

1 réponse

mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
15 déc. 2016 à 11:28
Bonjour,

En cherchant un peu sur google tu tombes par exemple sur :
https://stackoverflow.com/questions/2287121/how-to-read-groups-of-integers-from-a-file-line-by-line-in-c

... sachant que lire un fichier (std::ifstream) ou l'entrée standard (std::cin, qui est un std::istream) ne change rien à l'approche.

Bonne chance
0