[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