es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué mi bucle while no está detectando las entradas de cin?

#include 
#include 
using namespace std;


int main() {
    vector inputs;
    int x;
    cout << "Ingrese valores:";
    cin >> x;

    while(cin>>x)
        inputs.insert(inputs.end(),{x});


    for(int i=0; i

He intentado muchos métodos para tratar de hacer que mi bucle while detecte las entradas, pero cuando se ejecuta y pongo los valores, no imprime el contenido del vector.

Primero he intentado separar inputs.insert(inputs.end(),{x}); del bucle while y simplemente hacer:

#include 
#include 
using namespace std;


int main() {
    vector inputs;
    int x;
    cout << "Ingrese valores:";
    cin >> x;

    while(cin>>x)
        x;

    inputs.insert(inputs.end(),{x});

    for(int i=0; i

Eso tampoco funciona. También he intentado quitar los corchetes, pero ese tampoco es el problema. El bucle while no debería romperse si lo único que estoy escribiendo son números enteros. Sé que si fuera una cadena, detectaría los espacios y luego se detendría.

Me disculpo si esta es una publicación repetitiva, pero realmente traté de buscar problemas similares y no puedo entender qué está sucediendo.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que el problema puede estar con la instrucción cin >> x antes del bucle while. Si ingresas un valor antes de que comience el bucle while, se almacena en x pero nunca se agrega al vector inputs. Así que cuando comienza el bucle while y ingresas más valores, se agregan al vector inputs pero el primer valor que ingresaste no está incluido.

    Una forma de solucionar esto sería agregar el valor inicial al vector antes de que comience el bucle while, así:

    #include <iostream>
    #include <vector>
    using namespace std;
    
    int main() {
        vector<int> inputs;
        int x;
        cout << "Ingrese valores:";
        cin >> x;
    
        inputs.push_back(x); // agregar valor inicial al vector
    
        while(cin >> x) {
            inputs.push_back(x);
        }
    
        for(int i=0; i<inputs.size(); i++) {
            cout << inputs[i] << endl;
        }
    
        return 0;
    }
    

    en esta versión, se agrega el valor inicial al vector antes de que comience el bucle while, y luego el bucle while agrega cualquier valor adicional ingresado por el usuario. i++)=”” {=”” cout=”” <<=”” inputs[i]=”” <<=”” endl;=”” }=”” return=”” 0;=”” }=”” “`=”” en=”” esta=”” versión,=”” se=”” agrega=”” el=”” valor=”” inicial=”” al=”” vector=”” antes=”” de=”” que=”” comience=”” el=”” bucle=”” while,=”” y=”” luego=”” el=”” bucle=”” while=”” agrega=”” cualquier=”” valor=”” adicional=”” ingresado=”” por=”” el=””></inputs.size(); i++) {
    cout << inputs[i] << endl;
    }

    return 0;
    

    }
    “`

    en esta versión, se agrega el valor inicial al vector antes de que comience el bucle while, y luego el bucle while agrega cualquier valor adicional ingresado por el usuario.>

Comments are closed.