[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.html>


Más información sobre la lista de distribución Cconclase