Iniciar sesión

Ver la versión completa : [URGENTE] Duda c++ para tontos



pakoito
16/04/2008, 17:26
Estoy en mita de una practica y NPI de porque no me coge el CIN en este código.


#include <iostream.h>

void main(){
int num;
Lista l;
cout<<"Introduce el primer nodo: ";
cin>>num;
//AQUI MUERE EL PROGRAMA EN TIEMPO DE EJECUCION

l=Lista(num);
while (num > 0){
cout<<"Introduce el nodo (-1 para terminar): ";
cin>>num;
if (num>0){
l.annadir(num);
}

}
l.Listar();
}

Y la respuesta dle profesor ha sido "resuelvelo tu solo"

Yo flipo.

Ñuño Martínez
16/04/2008, 17:34
Pero qu&#233; hace, &#191;se para y ya est&#225;? &#191;Te deja teclear algo? &#191;Grita de dolor?

Pregunta tonta: aseg&#250;rate de que ha compilado sin errores y avisos.

< - >
Ahora que lo veo, te sobra una llave (?). N&#225;, olv&#237;dalo, que lo he copiado mal. Estoy en ello.

< - >
Vale, pues acabo de compilarlo y funciona, eso sí, sin lista:
#include <iostream.h>

int main (void){
int num;

cout<<"Introduce el primer nodo: ";
cin>>num;
//AQUI MUERE EL PROGRAMA EN TIEMPO DE EJECUCION

while (num > 0){
cout<<"Introduce el nodo (-1 para terminar): ";
cin>>num;
}
} Así que ni idea, tú.

pakoito
16/04/2008, 17:34
Encontrado, cin lee la l&#237;nea entera y como el cout no tien salto de linea...error.

kraff2
16/04/2008, 17:35
Yo no veo problema en el c&#243;digo, pero est&#225;s seguro que muere en esa l&#237;nea y no en:
l=Lista(num);

cambia esta ultima por cout << num << endl; y as&#237; compruebas que la entrada de datos est&#225; correcta.

edito que me habia colado y habia puesto cout << cin << endl ;)

Logann
16/04/2008, 17:36
nada nada

pakoito
16/04/2008, 17:39
ok, gracias a todos. Tengo la practica de la semana pasada suspensa solo por ese errorcillo.

kraff2
16/04/2008, 17:40
No es imprescindible, o no deber&#237;a serlo ya que si yo quiero que el usuario teclee tras los dos puntos no veo porque tengo que a&#241;adir un retorno de carro y que teclee en la l&#237;nea de abajo &#191;&#191;??

Es el usuario el que a&#241;adir&#225; el retorno de carro cuando pulse <enter> tras introducir el numero.

swapd0
16/04/2008, 23:51
Un apunte, cuando incluyas librerias de c++ (no de c) estas van sin ".h". Depende de las librerias que lleve el compilador te avisan. Ejemplos:

#include <iostream>
#include <fstream>
#include <vector>
#include <map>

...

pakoito
17/04/2008, 00:01
Bueno, ahora que tengo un rato analizo:

el error no venia del endline, sino de la linea siguiente al cin (l=Lista(num); ). Lo curioso es que si pon&#237;a un cout entre esas 2 l&#237;neas no se porqu&#233; no lo sacaba por pantalla.

Cuando he acabado la pr&#225;ctica me he dado cuenta de que tengo un fallo similar, tras sobrecargar (err&#243;neamente) el operador = he hecho una asignaci&#243;n y despu&#233;s un cout y pasaba de ambos pero no daba error en ning&#250;n sitio.

swapd0
17/04/2008, 01:51
No te olvides al final de poner un cout.flush(); para asegurarte que todo lo que has mandado aparezca en pantalla.