TADS IFGoiano-Urutaí
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Procurar
 
 

Resultados por:
 


Rechercher Pesquisa avançada

Últimos assuntos
» Dowloand de Videos youtube Sem Permissão adminstrador
Notação Polonesa Reversa (infixa) EmptySeg Jan 02, 2023 2:13 pm por juk

» Cypecad 2019
Notação Polonesa Reversa (infixa) EmptySeg Jan 02, 2023 1:41 pm por juk

» Atualizando é instalando o IExplorer 11 no windows 7
Notação Polonesa Reversa (infixa) EmptyTer Ago 30, 2022 10:54 pm por juk

» COMO HABILITAR INTERNET EXPLORER NO WINDOWS 10
Notação Polonesa Reversa (infixa) EmptySex Abr 29, 2022 6:43 pm por juk

» Usando o Monitor de Recursos do sistema para identificar processos Associados.
Notação Polonesa Reversa (infixa) EmptyQua Abr 06, 2022 10:19 am por juk

» Fazendo backup do anydesk
Notação Polonesa Reversa (infixa) EmptyTer Abr 05, 2022 7:30 pm por juk

» Recuperando Favoritos, senhas apos formatar o navegador (Mozilla Firefox ou Chrome)
Notação Polonesa Reversa (infixa) EmptyTer Abr 05, 2022 7:28 pm por juk

» Comando para tentar recuperar o windows
Notação Polonesa Reversa (infixa) EmptyQua Out 27, 2021 5:52 pm por juk

» NGROK para divulgação de site remoto
Notação Polonesa Reversa (infixa) EmptyTer Set 29, 2020 9:40 am por juk

Quem está conectado?
2 usuários online :: 0 registrados, 0 invisíveis e 2 visitantes

Nenhum

[ Ver toda a lista ]


O recorde de usuários online foi de 192 em Ter Out 26, 2021 6:07 am

Notação Polonesa Reversa (infixa)

Ir para baixo

Notação Polonesa Reversa (infixa) Empty Notação Polonesa Reversa (infixa)

Mensagem  juk Qua Jan 30, 2013 3:48 pm

Vamos Começar o desenvolvimento dessa maldita calculadora !! afro
Vamos entender primeiramente....
Introdução

O projeto consiste em calcular uma expressão aritmética utilizando duas estruturas de dados, fila e pilha. Inicialmente lemos uma expressão aritmética valida como exemplo temos A+(B/C + D^E) – F , em seguida devemos colocar cada elemento em uma fila que chamamos que representara a expressão em sua notação infixa, depois devemos converter essa fila infixa para uma fila que guarde a representação pósfixa da expressão. E com a expressão posfixa conseguimos calcular o resultado.

Exemplos de notação

Infixa Pósfixa

1) A A

2) A + B AB+

3) A – B * C ^ D + E / F ABCD^*-EF/+

4) C – A / E + B CAE/-B+

5) A + (B * C) / (K + G) ABC*KG+/+

A logica para converter de infixa para pósfixa

1)Iniciar uma pilha vazia
2)Realizar uma busca na fila infixa :
3)Se encontrar um operador (+, – , * , / , ^)
4)Se a pilha não estiver vazia e existir um operador com prioridade maior do que o encontrado na busca, desempilhe o operador e coloque na fila pósfixa.
5)Empilhe o operador encontrado.
Se encontrar um parentese de abertura empilhe
6)Ao encontrar um parentese de fechamento desempilhe um operador e coloque na fila pósfixa ate encontrar o parentrese de fechamento.
7)Ao final desempilhe os elementos da pilha colocando na fila pósfixa

A tabela de prioridade dos operadores
Operador Prioridade
+ 1
-1
*2
/2
^ 3

Primeira tentativa ....
Código:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void leitura ()
{
char expre[10];
int n;
int i;
         
       printf("Digite a Expresão:");
        scanf(" %[^\n]",expre);
        n = strlen(expre);
        printf("Lidos %d\n",n);
        for (i=0; i<n; i++)
        {
      if(expre[2] == '+')
      {
         printf("%c + %c=",expre[0],expre[1]);
         printf("%d\n",(expre[0]- 48) + (expre[1] - 48));
         break;
      }
      if(expre[2] == '-')
      {
         printf("%c - %c=",expre[0],expre[1]);
         printf("%d\n",(expre[0] - 48) - (expre[1] - 48));
         break;
      }
      if(expre[2] == '/')
      {
         printf("%c / %c=",expre[0],expre[1]);
         printf("%d\n",(expre[0] -48) / (expre[1] - 48));
         break;
      }
      if(expre[2] == '*')
      {
         printf("%c * %c=",expre[0],expre[1]);
         printf("%d\n",(expre[0] - 48) * (expre[1] - 48));
         break;
      }
   }
}

int main()
{
   printf("Notacao Polonesa Reversa que calcula digitos de 0 -9 \n");
   leitura ();
   getchar();
   getchar();
   main();
   return(0);
}
Nessa primeira tentativa conseguimos ler 2 algarismos e um operador
juk
juk

Mensagens : 262
Data de inscrição : 02/04/2012

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos