Ir ao conteúdo
  • Cadastre-se

DeadCold

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

Tudo que DeadCold postou

  1. DeadCold

    Pilhas em C

    Obrigado BlackScreen, já arrumei o erro, mas mesmo assim, me retorna lixo como memória, estou olhando o código e ainda vejo alguns errinhos, tanto que arrumei. no "if op == 6", meu scanf tá errado acho que meu problema é que preciso retornar 2 valores da minha função push, preciso retornar o valor que inseri, "val", e o "x" que seria como uma variável contadora, para poder andar pela pilha e controlar se houver Overflow ou Underflow. Mudei meu código e aparentemente tá funcionando aos poucos, nas funções os parâmetros são ponteiros, e quando chamo essas funções na main, uso o "&" para conseguir o valor correto da variavel passada. Ficou confuso, mas isso aí. Se conseguir progredir mais, vou postar o código aqui
  2. DeadCold

    Pilhas em C

    Olá gente, sou novo no fórum, criei uma conta aqui para tirar uma dúvida, pretendo postar mais. Estou estudando Estrutura de Dados em C na faculdade e preciso implementar uma pilha em C, comecei a fazer um código utilizando vetores, de início comecei a fazer com struct e ponteiros, mas o professor liberou para fazer com Vetor. Ele quer que seja criada uma calculadora RPN (notação polonesa reversa) usando o conceito de Pilha. Meu código está rodando, porém não funciona, o problema está na hora de inserção de valores na pilha, porém não sei o que é! Ao invés de me retornar o resultado da conta, e/ou inserir um número, simplesmente me retorna uma posição de memória e não o valor que inseri. #include <stdio.h> #include <stdlib.h> #define MAXPUSH 10 #define true 1 #define false 0 int pilha[MAXPUSH]; int push(int val, int x) { if (pilha[0] == NULL) { pilha[0] = val; x++; } if (x == MAXPUSH) { printf("Overflow!\n\n"); system("pause"); exit(1); } pilha[x]=val; x++; return x; } int pop(int x) { if(x < 0) { printf("Underflow!\n\n"); system("pause"); exit(1); } pilha[x] = NULL; x--; return x; } int main() { int status=1; int val, op, x; printf("Bem-vindo! Calculadora RPN usando conceito de Pilha\n"); printf("Informe uma opcao:\n"); while (status==1) { printf("\n\n[1] - Soma\n[2] - Subtracao\n[3] - Multiplicacao\n[4] - Divisão\n[5] - Potenciacao\n[6] - Inserir Numero\n[7] - Sair\n\n"); printf("Informe o codigo referente ao processo desejado: "); scanf("%d",&op); while (op!= 1 && op!= 2 && op!= 3 && op!=4 && op!=5 && op!=6 && op!=7) { system("cls"); printf("Informe uma opcao:\n"); printf("[1] - Soma\n[2] - Subtracao\n[3] - Multiplicacao\n[4] - Divisao\n[5] - Potenciacao\n[6] - Inserir Numero\n[7] - Sair\nOpcao desejada: "); scanf("%d",&op); } system("cls"); if (op==1) { if (x < 2) { printf("Impossivel realizar operacao!\n\n"); system("pause"); system("clear"); exit(1); } printf("Soma!"); val = pilha[x-1] + pilha[x]; pop(x); pop(x); push(val, x); printf("\n\nValor do resultado: %d",val); } if (op==2) { if (x < 2) { printf("Impossivel realizar operacao!\n\n"); system("pause"); system("clear"); exit(1); } printf("Subtracao!"); val = pilha[x-1] - pilha[x]; pop(x); pop(x); push(val, x); printf("\n\nValor do resultado: %d",val); } if (op==3) { if (x < 2) { printf("Impossivel realizar operacao!\n\n"); system("pause"); system("clear"); exit(1); } val = pilha[x-1] * pilha[x]; pop(x); pop(x); push(val, x); printf("\n\nValor do resultado: %d",val); } if (op==4) { if (x < 2) { printf("Impossivel realizar operacao!\n\n"); system("pause"); system("clear"); exit(1); } printf("Divisao!"); val = pilha[x-1] / pilha[x]; pop(x); pop(x); push(val, x); printf("\n\nValor do resultado: %d",val); } if (op==5) { if (x < 2) { printf("Impossivel realizar operacao!\n\n"); system("pause"); system("clear"); exit(1); } val = pilha[x-1] ^ pilha[x]; pop(x); pop(x); push(val, x); printf("\n\nValor do resultado: %d",val); } if (op==6) { printf("Inserir Numero!\n\nInsira um numero na pilha: "); fflush(stdin); scanf("&d",&val); push(val, x); printf("\n\n"); system("pause"); printf("\n\n"); } if (op==7) { printf("Sair!\n\n"); system("pause"); status = 0; } } return 0; system("pause"); }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!