[C con Clase] Problema con cin
Davidson, Steven
srd4121 en njit.edu
Mie Jun 19 02:22:55 CEST 2013
Hola Óscar,
2013/6/18 Oscar Aparicio Holgado <pelucheloko en hotmail.com>
> Hola Steven
>
> Sigue sin ir, se termina la ejecución del programa después del segundo
> cout.
>
>
Es verdad. Se me olvidó comentarte que los caracteres siguen estando dentro
del canal de entrada. Tendrás que sacarlos.
Puedes usar 'ignore()'; esto es,
cin.ignore();
Te pego el código entero por si acaso.
>
>
Te comento acerca de algunas cosas que vi en tu código fuente.
#include "std_lib_facilities.h"
>
> int main()
> try
>
Debería ser:
int main()
{
try
{
...
}
return 0;
}
{
> vector<int> a;
> int numero;
> cout << "Entra numeros (usa | para parar de meter numeros) ";
> while (cin >> numero) a.push_back(numero);
>
> cin.clear();
>
>
A continuación invocarías 'ignore()'.
cout << "Entra cuantos numeros de los introducidos quieres sumar. ";
> int cuantos;
> cin >> cuantos;
>
> if (cuantos > a.size()) error ("Has escogido más números de los que
> has introducido");
>
>
Deberías usar el mismo de 'vector' para representar la cantidad. Esto es,
vector<int>::size_type cuantos;
Supongo que creaste la función 'error()' en alguna parte previa.
// funcion1(cuantos);
> for(int i = 0; i < cuantos; ++i)
> {
> cout << a[i] << ", ";
>
Esto funcionará, pero el operador [] sobrecargado no producirá una
excepción. Te interesa usar la función miembro 'at()' si quieres capturar
excepciones generadas por ella.
}
>
> return 0;
> }
>
> catch (exception& e) {
> cerr << "error: " << e.what() << '\n';
> return 1;
> }
> catch (...) {
> cerr << "Oops: unknown exception!\n";
>
Acostúmbrate a usar 'endl' en lugar de usar el carácter, '\n'.
return 2;
> }
>
>
Espero que esto te sirva.
Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20130618/1b213575/attachment-0001.html>
Más información sobre la lista de distribución Cconclase