Ir para conteúdo

POWERED BY:

  • ×   Você colou conteúdo com formatação.   Remover formatação

      Only 75 emoji are allowed.

    ×   Your link has been automatically embedded.   Display as a link instead

    ×   Your previous content has been restored.   Clear editor

    ×   You cannot paste images directly. Upload or insert images from URL.

  • Conteúdo Similar

    • Por lucassilvaeq
      Alguém poderia me ajudar com essa questão ?
       
      Implemente um algoritmo utilizando a linguagem C, que leia um numero indeterminado de valores inteiros. 
      O valor 0 (zero) finaliza a entrada de dados. Para cada valor lido, determinar se ele e um número par ou ímpar. 
      Se o numero for par, então incluí-lo na FILA PAR; caso contrario, incluí-lo na FILA ÍMPAR. 
      Apos o término da entrada de dados, retirar um elemento de cada fila alternadamente (iniciando-se pela FILA ÍMPAR) ate que ambas as filas estejam vazias. Se o elemento retirado de uma das filas for um valor positivo, entao incluí-lo em uma PILHA; caso contrario, remover um elemento da PILHA. 
      Finalmente, imprimir o conteúdo da pilha.
    • Por hitz
      Olá, eu fiz uma calculadora em C usando pilha. O erro é que, quando eu utilizo uma divisão, ele retorna o último valor digitado e não o resultado correto.  Ex: 6/6 + 2 . Retorno: 2 
      #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct pilha{ char op; struct pilha * proximo; }Pilha; typedef struct pilhaN{ int op; struct pilhaN * proximo; }PilhaN; Pilha * posFixa=NULL; Pilha * posFixaInv=NULL; Pilha * temp=NULL; PilhaN * calculo=NULL; void calculaExpressao(); void empilhaN(PilhaN **pilha, int op); void empilha(Pilha **pilha, char op); void desempilhaN(PilhaN ** fPilha); void desempilha(Pilha ** fPilha); void transfereTempPos(); void imprime(Pilha *topo); void calcula(char operador); void inverte(); int main(){ char op; printf( "Digite a expressao: " ); scanf( "%c", &op ); while( op != '\n' ) { switch (op){ case '+': case '-': while((temp) && (temp->op != '(')){ transfereTempPos(); } empilha(&temp,op); break; case '*': case '/': while((temp) && (temp->op != '+') && (temp->op != '-') && (temp->op != '(')) { transfereTempPos(); } empilha(&temp,op); break; case ')': while((temp) && (temp->op != '(')){ transfereTempPos(); } if((temp) && (temp-> op == '(')){ Pilha *aux; aux = temp; temp = temp->proximo; free(aux); } break; case '(': empilha(&temp,op); break; default: empilha(&posFixa,op); break; } scanf( "%c", &op ); } while(temp){ transfereTempPos(); } imprime(posFixa); printf( "\n" ); calculaExpressao(); printf( "\n" ); } void empilha(Pilha ** fPilha, char op){ Pilha * aux; aux = ( Pilha *) malloc( sizeof( Pilha ) ); aux -> op = op; aux -> proximo = *fPilha; *fPilha = aux; } void empilhaN(PilhaN ** fPilha, int op){ PilhaN * aux; aux = ( PilhaN *) malloc( sizeof( PilhaN ) ); aux -> op = op; aux -> proximo = *fPilha; *fPilha = aux; } void desempilha(Pilha ** fPilha){ Pilha * aux; aux = *fPilha; *fPilha = (*fPilha)->proximo; free(aux); } void desempilhaN(PilhaN ** fPilha){ PilhaN * aux; aux = *fPilha; *fPilha = (*fPilha)->proximo; free(aux); } void transfereTempPos(){ Pilha *aux; aux = temp->proximo; temp->proximo = posFixa; posFixa = temp; temp = aux; } void imprime(Pilha *topo){ if( topo ) { imprime( topo -> proximo ); printf( "%c", topo -> op ); } } void calcula(char operador){ int a,b,c; a = calculo->op; desempilhaN(&calculo); b = calculo->op; desempilhaN(&calculo); switch (operador){ case '+': c = a + b; break; case '-': c = a - b; break; case '*': c = a * b; break; case '/': c = a / b; break; defalt: break; } empilhaN(&calculo,c); } void calculaExpressao(){ inverte(); while(posFixaInv){ switch (posFixaInv->op){ case '+': case '-': case '*': case '/': calcula(posFixaInv->op); break; default: empilhaN(&calculo,posFixaInv->op-48); break; } desempilha(&posFixaInv); } printf("%i",calculo->op); } void inverte(){ Pilha * aux; while(posFixa){ empilha(&posFixaInv,posFixa->op); desempilha(&posFixa); } }  
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.