elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ayuda con estructuras de datos "pilas"
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ayuda con estructuras de datos "pilas"  (Leído 6,252 veces)
josue_tux

Desconectado Desconectado

Mensajes: 45


Ver Perfil
ayuda con estructuras de datos "pilas"
« en: 11 Marzo 2011, 05:51 am »

hola , tengo una duda mi enunciado de mi problema es el siguiente: "Dados los elementos 1 ,- 2 , -3 ,4 ,5 ,7 realice una pila que sume los elementos positivos y los elementos negativos. Nota: usar memoria dinamica y no teclear datos en su programa"

la salida de impresion me da lo siguiente

Los elementos de la pila:

 1 ,- 2 , -3 ,4 ,5 ,7

la suma de los  positivos: 16 lo correcto seria 17
la suma de los negativos: -5

pero como pueden ver no me suma el primer elemento que es uno, no se que sera espero me puedan corregir si he errado, aqui les pongo el codigo.




aqui esta mi codigo:

Código:

#include<stdio.h>
#include<stdlib.h>
struct Pila
{
   int Dato;
   struct Pila *Siguiente;
};
void Push(struct Pila **,int);
 int Pop(struct Pila **);
void ImprimePila(struct Pila *);
int main(void)
{
  struct Pila *PtrPila;
  PtrPila=NULL;
  Push(&PtrPila, 7);  Push(&PtrPila, 5);  Push(&PtrPila, 4);
  Push(&PtrPila,-3);  Push(&PtrPila,-2);  Push(&PtrPila, 1);
  ImprimePila(PtrPila);
  getchar();
  return 0;
}

void Push(struct Pila **Tope, int valor)
{
  struct Pila *Nuevo;
  Nuevo = (struct Pila *) malloc( sizeof(struct Pila) );
  if(Nuevo!=NULL)
    {
     Nuevo -> Dato = valor;
     Nuevo -> Siguiente = *Tope;
     *Tope=Nuevo;
   }
  else
     printf("No hay memoria suficiente.\n");
}
int Pop(struct Pila **Tope)
{
   struct Pila *Temporal;
   int ValorPop;
   Temporal= *Tope;
   ValorPop=(*Tope)->Dato;
   *Tope=(*Tope)->Siguiente;
   free(Temporal);
   return ValorPop;
}
void ImprimePila(struct Pila *Actual)
{
    int suma=0, negativo=0;
    if(Actual==NULL)
      {
printf("La pila esta vacia.\n"); }
    else
      {
  printf("Los elementos de la pila:\n");
  while(Actual!=NULL)
       {
  printf(" %d ",Actual->Dato);
  Actual=Actual->Siguiente;
  if(Actual->Dato >=0)
     suma+=Actual->Dato ;
  else
     negativo+=Actual -> Dato;
      }
      printf("\nLa suma de los positivos: %d", suma);
      printf("\nLa suma de los negativos: %d", negativo);


 }

}



En línea

4rkn63l

Desconectado Desconectado

Mensajes: 199



Ver Perfil
Re: ayuda con estructuras de datos "pilas"
« Respuesta #1 en: 11 Marzo 2011, 07:07 am »

 
Código
  1. while(Actual!=NULL)
  2.       {
  3.  printf(" %d ",Actual->Dato);
  4.  Actual=Actual->Siguiente;  // <--------Aqui esta el error
  5.  if(Actual->Dato >=0)
  6.     suma+=Actual->Dato ;
  7.  else
  8.     negativo+=Actual -> Dato;
  9.      }
  10.  
Avanzas el puntero al siguiente elemento, que seria el segundo, por lo que cuando se ejecuta la instruccion suma+=Actual->Dato o negativo+=Actual -> Dato, el puntero de la pila ya no esta apuntando al primer elemento sino al segundo..ahi ocurre el "salto".

lo correcto seria asi:

Código
  1. while(Actual!=NULL)
  2.       {
  3.  printf(" %d ",Actual->Dato);
  4.  if(Actual->Dato >=0)
  5.     suma+=Actual->Dato ;
  6.  else
  7.     negativo+=Actual -> Dato;
  8.                 Actual=Actual->Siguiente; //ahora si podes avanzar al siguente
  9.      }
  10.  


« Última modificación: 11 Marzo 2011, 07:08 am por 4rkn63l » En línea

josue_tux

Desconectado Desconectado

Mensajes: 45


Ver Perfil
Re: ayuda con estructuras de datos "pilas"
« Respuesta #2 en: 14 Marzo 2011, 05:55 am »

hey muchas gracias....
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Ayuda] modificar "start page" en "internet explorer" con "batch"
Scripting
taton 7 12,784 Último mensaje 20 Septiembre 2006, 01:45 am
por taton
ayuda con las pilas dinamicas
Programación C/C++
BalthierKs 1 1,673 Último mensaje 25 Abril 2012, 00:36 am
por david_BS
ayuda con software swing pilas
Java
jimytron 0 1,439 Último mensaje 30 Abril 2012, 18:58 pm
por jimytron
Estructuras dinámicas de datos" listas"
.NET (C#, VB.NET, ASP)
rafaelo 3 2,583 Último mensaje 22 Octubre 2015, 06:35 am
por Draven Schwielicht
[ayuda] Arreglos dentro de estructuras ("no arreglo de estructurar")
Programación C/C++
Thena_a 2 822 Último mensaje 4 Diciembre 2016, 20:25 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines