Char com expressão matematica

1. Char com expressão matematica

Daniel
daniel_dias

(usa Slackware)

Enviado em 16/08/2011 - 20:35h

Galera, seguite: eu queria saber como, em c, eu posso resolver uma expressão matemática que esta em um char e colocar o resultado em um int.
por exemplo se eu tenho um char com o conteudo "1+1" e quero atribuir a resposta(2 eu acho kkkk) em uma variavel int.
É um desafio e tanto, ma ajudem por favor!!


  


2. Re: Char com expressão matematica

Mauricio Souza Klein
Hebang

(usa Arch Linux)

Enviado em 16/08/2011 - 23:27h

Olá!

Não achei um método padrão que faça isso para você, mas nesse link tem um pequeno algoritmo que faz o que você quer:

http://stackoverflow.com/questions/6205615/problem-arithmetic-expression-by-string-operation-in-c

Alias, isso eh fácil de resolver. Apenas envolve um parseamento de char*, quebrando ela em pedaços e "descobrindo" que operação precisa ser feita.

Espero ter ajudado!


3. Re: Char com expressão matematica

Elder Marco
eldermarco

(usa Fedora)

Enviado em 17/08/2011 - 10:57h

Bom, é "parsear" a string ou, caso necessite de coisas mais sofisticadas, você pode usar a libmatheval:

http://www.gnu.org/s/libmatheval/

Eu já cheguei a usar ela em um programa meu.


4. Re: Char com expressão matematica

Joao
stack_of

(usa Slackware)

Enviado em 17/08/2011 - 12:27h

Algo mais simples. O caracter '1' menos '0' resulta em um inteiro 1.

main(){

int i;
i = '1' - '0';
return(i)

A função vai retornar o inteiro 1.


5. Re: Char com expressão matematica

Joao
stack_of

(usa Slackware)

Enviado em 17/08/2011 - 12:36h

O character '0' ocupa a 48ª posição na tabela ascii. o Character '1' a 49ª, '2' a 50ª e assim por diate até '9'.
O operador subtração faz a conversão, pega o inteiro 49 e subtrai 48, retornando o inteiro 1.
Basta passar a cadeia de caracteres para um arranjo (vetor) e criar uma função que itere sobre o vetor fazendo a conversão.


6. Re: Char com expressão matematica

Mauricio Souza Klein
Hebang

(usa Arch Linux)

Enviado em 17/08/2011 - 12:41h

Na verdade, essa solução funciona apenas para valores na casa das unidades.
Dezenas não são definidas "puramente" na tabela ascii.

Além do mais, ess solução só seria válida para adição e subtração. Na divisão teriamos valores divergentes, devido aos valores correspondentes em ascii.

Acredito que aquela API postada anteriormente seria a melhor solução para você.


7. Re: Char com expressão matematica

Daniel
daniel_dias

(usa Slackware)

Enviado em 13/09/2011 - 19:59h

Olha, eu tentei mais não achei um jeito de implementar o algoritimo sitado, então criei o meu:

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

int main()
{
char s[10];
int a, b, d, e, res;
fgets(s, 10, stdin);
for (a=0;(s[a]=getchar())!='\n';a++);
for (b=a;b>=0;b--)
{
if (s[b]=='+')
{
d = s[b-1];
e = s[b+1];
res = d+e;
}
if (s[b]=='-')
{
d = s[b-1];
e = s[b+1];
res = d-e;
}
}
printf("%d\n", res);
return 0;
}
---------------------------------------------------------------------------

Nao funcionou, deu falha de segmentação, alguem pode dizer porque?






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts