Exercicio de pilha

faça um programa em c que leia um conjunto de valores e armazene os valores positivos em uma pilha e armazene os valores negativos em outra pilha. mostre a média dos valores positivos, e a soma dos negativos. Alguem pode me ajudar estou usando dev-c++.

no minimo tens que ter uma ideia
o que vc ja fez??

Se for assim, põe ja todos exercicios da faculdade aqui no guj :slight_smile: :smiley: .
tens que mostrar o teu raciocinio o resto nos te ajudamos, mas queres a papa toda feita. :smiley:

Eu posso te ajudar dizendo para você não usar o DevCpp. O dev é uma IDE antiga (1996), com um compilador pré-histórico. Ele tem alguns bugs que podem esconder de você parte das mensagens de erro e te prejudicar.

A alternativa ao DevCpp é o Code::Blocks. Sua última versão foi compilada em 2008 (recente pros padrões do cpp), com o depurador funcionando e muito mais estável. O compilador que o DevCpp e o Code::Blocks usam é o mesmo, chamado MinGW. Entretanto, no CodeBlocks existe uma versão beeem mais nova do MinGW. Com mensagens de erro mais claras, por exemplo.
http://www.codeblocks.org

Outra ótima opção é utilizar o Visual Studio Express, da Microsoft. Acho que é a melhor IDE hoje em dia. O compilador da MS também é muito bom. Você pode baixar o Visual aqui:
http://www.microsoft.com/express/Downloads/#2008-Visual-CPP

Quanto ao seu problema específico. Diz aí o que você já fez. Explique se seu professor deixa ou não você usar classes como o Vector. Ele provavelmente já te passou uma classe de pilha pronta (ou métodos) então, ponha aí o que ele já passou. Nós não faremos a lição de casa para você, mas podemos te ajudar a encontrar o caminho das pedras.

[code]#include <stdlib.h>

struct fila
{
int info;
struct fila *prox;
};
typedef struct fila Fila;

void init(Fila **f)
{
*f=NULL;
}

char isEmpty(Fila *f)
{
return f==NULL;
}

int top(Fila *f) // Topo da Fila
{
if (!isEmpty(f))
return f->info;
return -1;
}

void push(Fila **f, int x) // Insere na Fila
{
Fila *aux = (Fila *)malloc (sizeof(Fila));
aux->info=x;
aux->prox=*f;
*f = aux;
}

void pop(Fila **f, int *x) // Retira da Fila
{
Fila *aux;
if (!isEmpty(*f))
{
aux=*f;
*x=(*f)->info;
*f = (*f)->prox;
free(aux);
}
else *x = -1;
}

#include

#include

#include <tadPilha.h>

int main(void)

{

Pilha *p;

int num = 9;

init (&p);

push(&p,num);

printf("Ultimo: %d\n",top(p));

num = 10;

push(&p, num);

printf("Ultimo: %d\n",top(p));

num = 11;

push(&p,num);

printf("Ultimo: %d\n\n\n",top(p));

pop(&p, &num);

while (num != -1)

{

    printf("Numero: %d\n\n",num);

    pop(&p,&num);

}

system("PAUSE");

}

[/code]

Isso é um exercício q tenho aki, v se ajuda…

Po pessoal… fazendo de bandeja exercício de faculdade!

Se soubesse disso tinha colocado os meus aki pra vcs me darem digratis! :twisted:

Agora, sério, deixa o cara mostrar q pelo menos tentou!
É mto melhor perguntar como declarar uma variável em cpp do q pedir a resposta de mãos beijadas!

já consegui muito obrigaduuuuuuuuu

#include<conio.h>
#include<stdlib.h>
#include<stdio.h>
#define n 4

struct pilha {
int topo;
int valor[n];
};
void inserir(struct pilha *p , int v)
{
if ( p->topo==n)
printf(“pilha cheia”);
else
{
p->valor[p->topo]=v;
p->topo++;
}
}
void excluir (struct pilha *p)
{
if (p->topo==0)
printf(“pilha vazia”);
else
{
printf("%d excluido\n", p->valor[p->topo-1]);
p->topo–;
}
}

                  void mostrar_pilha ( struct pilha*p)
                  {
                       int i;
                       if (p->topo==0)
                       printf("pilha vazia");
                       else
                       {
                           for (i=p->topo-1;i>=0;i--)
                           printf("%d\n",p->valor [i]);
                           }
                           getch();
                           }
                           
                           void  pesquiza ( struct pilha*p,int v)
                           {
                                 int  i , x=0;
                                 if(p->topo==0)
                                 printf("pilha vazia");
                                 else
                                 {
                                  for (i=p->topo-1;i>=0;i--)
                                 {
                                 if (p->valor[i]==v)
                                 {
                                 printf("encontrado na posicao %d",i);
                                 x=1;
                                 }
                                 }
                                 }
                                 if(x==0) 
                                 printf("valor nao encontrado");
                                 }
                                 
                                 void soma(struct pilha *p)
                                 {
                                 int i ,somapilha=0;
                                 
                                 if(p->topo==0){
                                 printf("pilha vazia");
                                 }
                                 else
                                 {
                                     for (i=p->topo-1;i>=0;i--)
                                     {
                                     somapilha=somapilha+p->valor[i];
                                     }
                                     printf("a soma %d ",somapilha);
                                     }
                                 }                                                                                          
                                 main()
                                 {
                                  struct pilha p ;
                                  p.topo=0;
                                  int op,v;
                                  
                                  do{
                                      system("cls");
                                      printf("\n 1-inserir\n 2-excluir\n 3-mostrar \n 4 pesquiza \n 5 soma\n 6-sair \n");
                                      printf("digite sua opcao:");
                                      scanf("%d",&op);
                                      if(op==1)
                                      {
                                          printf("digite o valor: ");
                                          scanf("%d",&v);
                                          if (v%2==0) 
                                          {
                                              inserir(&p,v);
                                          }
                                      }
                                      else if (op==2)excluir(&p);
                                      else if(op==3)mostrar_pilha(&p);
                                      else if(op==4)
                                      {
                                             printf("digite o valor para pesquizar");
                                             scanf("%d",&v);
                                             pesquiza(&p,v);
                                      }
                                        
                                        else if(op==5)soma(&p);
                                        
                                        else
                                        
                                        
                                             printf ("opcao invalida");
                                             }                                                 
                                             while (op!=6);
                                             }