[C con Clase] cout no imprime lo mismo cuando uso estructuras.
Miguel Eduardo Román Martínez
miguelerm en gmail.com
Vie Abr 29 08:10:47 CEST 2011
Buena noche compañeros, estoy haciendo unos ejemplos de estructuras y me
sucedió algo curioso:
y es que tengo un codigo algo como esto:
cout << "Ultimo valor ingresado: " << ultimoNodo->valor << endl; //imprime
el valor que ingreso
cout << "Desea ingresar otro numero? (s, n) ";
cin >> respuesta;
cout << "Otra vez el ultimo valor ingresado: " << ultimoNodo->valor << endl;
//imprime la direccion de memoria.
Como veran en el comentario el primer cout muesta el valor correcto pero el
segundo muestra otro valor, a pesar de que la instruccion es exactamente la
misma.
Adjunto el codigo fuente completo por si lo quieren analizar.
Seria excelente si alguien me pudiera ayudar a resolver este curioso
fenomeno :)
de ante mano muchas gracias.
Saludos,
Miguel.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20110429/805ab39d/attachment.html>
------------ próxima parte ------------
#include <iostream>
using namespace std;
struct Nodo
{
int valor;
struct Nodo *anterior;
};
Nodo *ultimoNodo;
bool isEmpthy()
{
if (ultimoNodo == NULL)
return true;
else
return false;
}
void push(int nuevoValor)
{
Nodo nuevoNodo = Nodo();
nuevoNodo.valor = nuevoValor;
if(isEmpthy())
nuevoNodo.anterior = NULL;
else
nuevoNodo.anterior = ultimoNodo;
ultimoNodo = &nuevoNodo;
}
int pop()
{
return ultimoNodo->valor;
}
int main()
{
char respuesta = 's';
while(respuesta != 'n' && respuesta != 'N')
{
int numeroIngresado = 0;
cout.flush();
cout << "Ingrese un numero: ";
cin >> numeroIngresado;
push(numeroIngresado);
cout << "Ultimo valor ingresado: " << ultimoNodo->valor << endl; //imprime el valor que ingreso
cout << "Desea ingresar otro numero? (s, n) ";
cin >> respuesta;
cout << "Otra vez el ultimo valor ingresado: " << ultimoNodo->valor << endl; //imprime la direccion de memoria.
}
cout << pop(); //imprime la direccion en memoria.
cin.get();
return 0;
}
Más información sobre la lista de distribución Cconclase