Introducir varios datos en una misma linea C++

publicado por: Anonymous

Hola me gustaria resolver este problema de la siguiente forma de manera que pueda introducir todos los datos necesarios en la misma linea y con espacios.

int personas = 0, velocidades = 0;

cout << "Introduce la cantidad de personas y las velocidades de cada uno: ";
cin >> personas >> velocidades;

(este código obviamente no funciona, asigna siempre el primer valor para segunda variable)

Ejemplo de la entrada que quiero:
5 10 40 20 11 16

Salida (utilizaría un algoritmo para averiguar el mayor):
40

solución

Bueno la solucion que se me ocurre es la siguiente:

Dejo comentadas las lineas importantes para que comprendas lo que hice

#include <string>
#include <algorithm>
#include <iostream>
#include <sstream>
#include <iterator>
#include <vector>
using namespace std;

template <class Container>
void split(const std::string& str, Container& cont)
{
    std::istringstream iss(str);
    std::copy(std::istream_iterator<std::string>(iss), std::istream_iterator<std::string>(), std::back_inserter(cont));
}
int main(int argc, char** argv) {
    string stringIng; // Cadena ingresada
    cout << "Introduce la cantidad de personas y las velocidades de cada uno: ";
    getline(cin, stringIng); // Con esto se pide el ingreso de los datos pero como string

    std::vector<std::string> arrPartido; // Declaramos el array de datos que ingresarán
    split(stringIng, arrPartido); // partimos la cadena ingresada que contiene los datos de personas y velocidades

    int personas = atoi(arrPartido[0].c_str()); // La primera posición se asume que será el número de personas
    int velocidades[personas - 1]; // Declaramos las velocidades

    for(int i = 0; i < personas; i += 1) { // Convertimos y llenamos el array de velocidades
        velocidades[i] = atoi(arrPartido[i + 1].c_str());
    }


    // Muestro los valores obtenidos
    cout << "Personas: "<< personas << endl;
    cout << "Velocidades" << endl;
    for(int i = 0; i < personas; i += 1) {
        cout << velocidades[i] << endl;
    }

    return 0;
}

Con el array velocidades es con la que tendrias que trabajar para sacar el mayor y lo que necesites.

Ésta es la salida que obtuve:

Consola

Bueno no soy un experto en C++ pero éste es el código con el que puedo colaborarte espero te sirva 😉 Saludos.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *