Boucle cin.get()

Résolu
gl111 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
mamiemando Messages postés 33725 Date d'inscription   Statut Modérateur Dernière intervention   - 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 33725 Date d'inscription   Statut Modérateur Dernière intervention   7 868
 
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