<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>Hola Steven<div><br></div><div>Sigue sin ir, se termina la ejecución del programa después del segundo cout.</div><div><br></div><div>Te pego el código entero por si acaso.</div><div><br></div><div><font face="Courier New">#include "std_lib_facilities.h"</font></div><div><font face="Courier New"><br></font></div><div><div><font face="Courier New">int main()</font></div><div><font face="Courier New">try</font></div><div><font face="Courier New">{</font></div><div><font face="Courier New">    vector<int> a;</font></div><div><font face="Courier New">    int numero;</font></div><div><font face="Courier New">    cout << "Entra numeros (usa | para parar de meter numeros) ";</font></div><div><font face="Courier New">    while (cin >> numero) a.push_back(numero);</font></div><div><font face="Courier New"><br></font></div><div><font face="Courier New">    cin.clear();</font></div><div><font face="Courier New"><br></font></div><div><font face="Courier New">    cout << "Entra cuantos numeros de los introducidos quieres sumar. ";</font></div><div><font face="Courier New">    int cuantos;</font></div><div><font face="Courier New">    cin >> cuantos;</font></div><div><font face="Courier New"><br></font></div><div><font face="Courier New">    if (cuantos > a.size()) error ("Has escogido más números de los que has introducido");</font></div><div><font face="Courier New"><br></font></div><div><font face="Courier New">//    funcion1(cuantos);</font></div><div><font face="Courier New">    for(int i = 0; i < cuantos; ++i)</font></div><div><font face="Courier New">    {</font></div><div><font face="Courier New">        cout << a[i] << ", ";</font></div><div><font face="Courier New">    }</font></div><div><font face="Courier New"><br></font></div><div><font face="Courier New">    return 0;</font></div><div><font face="Courier New">}</font></div><div><font face="Courier New"><br></font></div><div><font face="Courier New">catch (exception& e) {</font></div><div><font face="Courier New">    cerr << "error: " << e.what() << '\n';</font></div><div><font face="Courier New">    return 1;</font></div><div><font face="Courier New">}</font></div><div><font face="Courier New">catch (...) {</font></div><div><font face="Courier New">    cerr << "Oops: unknown exception!\n";</font></div><div><font face="Courier New">    return 2;</font></div><div><font face="Courier New">}</font></div></div><div><br></div><div>Un saludo.<br><br><div><hr id="stopSpelling">Date: Tue, 18 Jun 2013 15:55:53 -0400<br>From: srd4121@njit.edu<br>To: cconclase@listas.conclase.net<br>Subject: Re: [C con Clase] Problema con cin<br><br><div dir="ltr">Hola Óscar,<div class="ecxgmail_extra"><br><div class="ecxgmail_quote">2013/6/18 Oscar Aparicio Holgado <span dir="ltr"><<a href="mailto:pelucheloko@hotmail.com" target="_blank">pelucheloko@hotmail.com</a>></span><br>
<blockquote class="ecxgmail_quote" style="border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex;">


<div><div dir="ltr">Hola que tal.<div><br></div><div>Tengo este trozo de código:</div><div><br></div><div><div><font face="Courier New">vector<int> a;</font></div><div><font face="Courier New">    int numero;</font></div>
<div><font face="Courier New">    cout << "Entra numeros (usa | para parar de meter numeros) ";</font></div><div><font face="Courier New">    while (cin >> numero) a.push_back(numero);</font></div><div>
<font face="Courier New"><br></font></div><div><font face="Courier New">    cout << "Entra cuantos numeros de los introducidos quieres sumar. ";</font></div><div><font face="Courier New">    int cuantos;</font></div>
<div><font face="Courier New">    cin >> cuantos;</font></div></div><div><font face="Courier New"><br></font></div><div><div>La cosa es que cuando le doy a ejecutar después de introducir el caracter | para cortar el while de la cuarta línea directamente termina y ya no se para en el cin segundo del código, ¿por qué? ¿cómo puedo solucionarlo?</div>
<div><br></div><div></div></div></div></div></blockquote></div></div><div class="ecxgmail_extra"><br></div><div class="ecxgmail_extra">Se sale del bucle 'while' porque el canal, 'cin', está en un estado de fallo (o fracaso). Esto se implementa en el objeto 'cin' activando un banderín interno.</div>
<div class="ecxgmail_extra"><br></div><div class="ecxgmail_extra">Lo que tienes que hacer es despejar este banderín de fallo. Invoca la función miembro 'clear()'; esto es,</div><div class="ecxgmail_extra">
<br></div><div class="ecxgmail_extra">while( cin >> numero )</div><div class="ecxgmail_extra">  a.push_back( numero );<br></div><div class="ecxgmail_extra"><br></div><div class="ecxgmail_extra">cin.clear();</div>
<div class="ecxgmail_extra"><br></div><div class="ecxgmail_extra"><br></div><div class="ecxgmail_extra">Espero haber aclarado la duda.</div><div class="ecxgmail_extra"><br></div><div class="ecxgmail_extra">Steven</div>
<div class="ecxgmail_extra"><br></div></div>
<br>_______________________________________________
Lista de correo Cconclase Cconclase@listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ</div></div>                                     </div></body>
</html>