Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rafael Felippe

Separar expressao matematica

Recommended Posts

Olá pessoal... Preciso de ajuda, pois preciso digitar uma expressao matematica, tipo 2+2*9/4 e separar os elementos de modo que posso coloca-los separadamente em uma pilha ou em um vetor de dados, onde cada espaço da memoria fica com um elemento da expressao....abracos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você vai aceitar floats também? Tente explicar melhor como você quer que funcione.Pelo que você falou você pode fazer um loop e pode ir pegando um char de cada vez(scanf) e vai guardando em uma pilha(ou vetor) de algarismos e outra pilha(ou vetor) de operadores. Sem complicações.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você vai aceitar floats também? Tente explicar melhor como você quer que funcione.Pelo que você falou você pode fazer um loop e pode ir pegando um char de cada vez(scanf) e vai guardando em uma pilha(ou vetor) de algarismos e outra pilha(ou vetor) de operadores. Sem complicações.

Olá...entendi o que voce disse, fazer um loop com vários CIN para ir alocando os algarismos e operadores dentro das pilhas determinadas...nao testei ainda, mas tudo indica que resolve o problema sim, mas a intenção era digitar a expressão inteira e depois o programa fazer esta separacao..tipo jogo a expressao 2+2*9/8 em um unico CIN e depois colocar cada elemento na pilha correspondente....Outra solucao que imaginei era colocar a expressao em um vetor atraves de apenas um comando CIN e depois navegar o vetor e ir pegando os elementos, porém para isso seria necessário colocar cada elemento em uma posicao do vetor... e nao sei como fazer isto utilizando apenas um CIN, mas se nao me engano ja viu em algum lugar que é possivel.Walew pela ajuda...Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi muito bem a sua solução, mas eu acredito que você possa pegar tudo com um cin.getline(char*, int). O char* no caso vai ser a string em que você vai armazenar o que o usuário digitou, e o int vai ser o número de caracteres que você quer pegar."cin.getline" pega todos os caracteres, inclusive os espaços, até o caractere determinado. Quando você tiver tudo na string, você faz um laço que percorra a string e vá pegando os caracteres (e ignorando os espaços).Testa lá =PFlw.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi muito bem a sua solução, mas eu acredito que você possa pegar tudo com um cin.getline(char*, int). O char* no caso vai ser a string em que você vai armazenar o que o usuário digitou, e o int vai ser o número de caracteres que você quer pegar."cin.getline" pega todos os caracteres, inclusive os espaços, até o caractere determinado. Quando você tiver tudo na string, você faz um laço que percorra a string e vá pegando os caracteres (e ignorando os espaços).Testa lá =PFlw.

Se entrendi, o cin.getline é um comando que fará a leitura de toda a linha onde o usuário colocou a expressao...nisso a expressão será armazenada va variavel char* ( é realmente necessário o * ?, nao poderia ser uma variavael chamada exp, por exemplo? ). Ao INT cabe a função de informar quantos caracteres irão ser armazenado na variavel char*.Até ai tudo bem, a expressão foi armazenada, mas o que não entendi é como fazer para percorrer a string e manipular os elementos da string de forma separada

Compartilhar este post


Link para o post
Compartilhar em outros sites

O * é apenas para indicar que a função recebe o endereço. Quando você coloca uma string (arranjo de caracteres) em uma função, sem os '[]', você está mandando seu endereço. De uma maneira mais fácil, é cin.getline(string, int).Pro laço, acho que você pode fazer algo do tipo: separar os chars que são números (armazenar seus índices), e separar os chars que tem /'s, *'s, +'s e -'s.Aí... Bem eu não sei muito bem como você deve fazer não =P. Hoje eu tô meio sem tempo mas depois eu tento fazer alguma coisa, se ninguém tiver respondido. xDFoi mal aew ...Flw xD

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom essa parte do problema consegui resolvi, e agradeco ao pessoal que respondeu a este topico, pois auxiliaram na solucao... Eu criei uma string de 100 posicoes e utilizo o cin para inserir a expressao na string tido isso:char expr[100];int tamanho;cout<<"Digite a expessao a ser inserida";cin>>expr;tamanho=strlen (expr); // o strlen informa quantas posicoes foram ocupadas na string, sem contar o caracter nulo (\0)depois disso so utilizar um for para andar em cada elemento da string e pegar este elemente eusar um atoi para transforma em int... Agora este é omeu problema..tentei fazer isto e nao estoi cinseguindo..se alguem puder dar uma força agradeco...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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