Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: nevfuck en 17 Octubre 2010, 22:22 PM

Título: duda pilas
Publicado por: nevfuck en 17 Octubre 2010, 22:22 PM
hola foro tengo una duda:

Código (cpp) [Seleccionar]
#include <iostream.h>
#include <windows.h>
#include <conio.h>

struct Nodo
{
int Dato;
Nodo *sig;
};

class Pila
{
private:
Nodo *inicio;
public:
//constructor
Pila()
{
inicio=NULL;
}
   void Sacar()
{
Nodo *r, *ant;
r = inicio;

if(r!=NULL)
{

do
{
ant=r;
if (r->sig!=NULL)
{
r = r->sig;
}
}while(r->sig!=NULL);
if(ant == r)
{
inicio=NULL;
}
delete r;
ant->sig=NULL;
}
}


-------------------------------------------------------

void suma

para sumar la pila insertada, en este caso tengo insertado
el 7,9,5 el resultado es 21, tengo que recorrer de nuevo la pila (como en el caso void mostrar)
el problema viene cuando tengo que sumar, ya le busque solo y nole encuentro...



--------------------------------------------------------



Código (cpp) [Seleccionar]
void Mostrar()
{
Nodo *recorrer;
recorrer = inicio;

if (recorrer!=NULL)
{
do
{
cout << recorrer->Dato << endl;
recorrer = recorrer->sig;
}while(recorrer->sig!=NULL);
cout << recorrer->Dato << endl;
}
else
{
cout << "Pila vacia" << endl;
}
}
   
    void Insertar(int num)
{

Nodo *nuevo;
nuevo = new Nodo;
nuevo->Dato=num;
nuevo->sig=NULL;

if(inicio==NULL)
{
inicio=nuevo;
}
else
{
if (inicio->sig==NULL)
{
inicio->sig = nuevo;
}
else
{
Nodo *aux;
aux=inicio;

while(aux->sig!=NULL)
{
aux=aux->sig;
}
aux->sig=nuevo;
}
}

}
};







  void main (void)
  {
int op;
Pila numeros;




do
{
system("cls");
cout << "<------(((MENU)))----->" << endl;
cout << "1.- Insertar pila" << endl;
cout << "2.- Sacar numero de la pila" << endl;
cout << "3.- Mostrar pila" << endl;
cout<<"4.- suma la pila"<<endl;
cout << "elige una opcion: ";
cin >> op;

system("cls");
switch(op)
{
case 1:
cout<<"numeros insertados"<<endl;
numeros.Insertar(7);
        numeros.Insertar(9);
       numeros.Insertar(5);

break;
case 2:
   cout << "Numero eliminado" << endl;
numeros.Sacar();
break;
case 3:
numeros.Mostrar();
break;

       case 4:
   numeros.Sumar();
   
break;

default:
cout << "Adios!!!"<< endl;
}

getch();

}while(op>=1 && op<=3);

}
Título: Re: duda pilas
Publicado por: Gerik en 18 Octubre 2010, 05:13 AM
Código (cpp) [Seleccionar]
int Sumar()
   {Nodo *recorrer;
    recorrer = inicio;
    if(recorrer!=NULL)
     {do
       {a+=recorrer->Dato;
       recorrer = recorrer->sig;
       }
       while(recorrer->sig!=NULL);
       a+=recorrer->Dato;
    }else
     {cout << "Pila vacia" << endl;}
     return a;}

En el main declaras la funcion sumar pero no la has implementado, solo era modificar dos lineas y yap :D :D :D :D :D