Ir para conteúdo
Fórum Script Brasil
  • 0

Explode


vini_loock

Pergunta

Bom dia galera.

Eu estou precisando de alguma function que faça algo parecido com o explode do php, só que eu não sei qual será o separador, e preciso usa-lo depois.

Ex:

No meu programa eu peço para que a pessoa digite um 'conta' com a seguinte sintaxe:

2+2

Eu preciso separar esses numeros pelo sinal '+', só que pode ser qualquer outro operador(+, -, /, *) e depois eu preciso efetuar o calculo que tenha sido digitado.

Resumidamente:

Preciso que a pessoa digite 5-3, e o programa me retorne 2.

Quais seriam as possibilidades?

Vlw.

Vinicius

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Acho que o seu maior problema será resolver. Mesmo depois de montado, você vai ter precedência de operações para resolver e tudo mais...

Leia sobre infix, prefix e postfix. Não estou com ele aqui agora, mas tenho um código exemplo que fiz de uma "calculadora".

Possuía suporte para parênteses e etc., mas não está muito comentado.

Quando eu puder posto para você.

Abraços.

Link para o comentário
Compartilhar em outros sites

  • 0

Aqui está: http://www.mediafire.com/?9xg4dbj0dcwtx5z

O binário é um executável para linux.

Arquivos importantes:

stack.c/h - implementa uma stack (bem precária)

expr_tree.c/h - faz a conversão infix -> postfix

solver.c/h - resolve a expressão postfix

mem.h - faz um "gerenciamento de memória" básico

Uso (o uso da aspas é "opcional"):

calc 2 + 2

4.000000

calc "2 + 2"

4.000000

calc "2 / 3 + 6"

6.666667

Abraços.

Link para o comentário
Compartilhar em outros sites

  • 0

faz o seguinte

a pessoa digita exemplo 5 + 6

o codigo primeiro pega o numero 5 depois verifica o que ele tem que fazer + certo então ele verifica atravez de um vetor de char o sinal + depois indentifica o segundo valor 6 ai ele faz o trabalho de somar mais ou menos isso

char calculo[3]

calculo[0] ficaria o 5

calculo[1] ficaria o +

calculo[2] ficaria o 6

ao os valores do vetor 0 e 2 passaria para uma int

int valor1 = (int)calculo[0];
int valor2 = (int)calculo[2];

if(strcmp(+, calculo[1]))
{
 int calculor = valor1 + valor2
}

if(strcmp(/, calculo[1]))
{
 int calculor = valor1 / valor2
}

...

isso e so uma ideia de como você pode fazer para numeros grande você tera que fazer diferente tera que indentificar o + e indentificar os numeros

acho que e mais ou menos isso que você queria não ?

Editado por ce1o2e
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

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

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...