Ir ao conteúdo
  • Cadastre-se
ramon basilio

Ajuda em programa em C

Recommended Posts

Bom dia a todos

Preciso fazer um programa que faça o seguinte:

É uma calculadora

Primeiro eu ponho um numero real que indicará quantos operadores vai ter na minha operação, por exemplo:

 

3 > NUMERO QUE INDICA QUANTOS OPERADORES POSSUI MINHA OPERAÇÃO

3+2+1

 

4

4-1-3+9

 

2

2+9

 

Se eu fizer numa string a operação (ex: 4-1-3+9) , existe alguma meio de separar os sinais de operação (+ e -) dos numeros, e depois contas os numeros?

 

Desde ja agradeço a todos!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem que fazer simultaneamente;

usando getchar() para pegar os sinais

usando scanf() para pegar os números

e um loop para controlar quantas vezes getchar() e scanf() vão se repetir;

 

exemplo:

4 - 1 - 3 + 9

(depois da quantidade de operandos, vem a operação)

aqui por exemplo será:

       4x scanf() e

(4 -1)x getchar()

 

scanf()::4

getchar():: -

scanf()::1

getchar():: -

scanf()::3

getchar():: +

scanf()::9

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade o que precisava fazer seria o seguinte:

 

 
Entrada
A entrada é composta de vários conjuntos de testes. A primeira linha de um conjunto de testes
contém um número inteiro m (1 ≤ m ≤ 100), indicando o número de operandos da expressão
a ser avaliada. A segunda linha de um conjunto de testes contém a expressão aritmética a ser
avaliada, no seguinte formato:
 
x1 s1 x2 s2 ... Xm-1 sm-1 Xm
 
onde
• Xi, 1 ≤ i ≤ m, é um operando (0 ≤ Xi ≤ 100);
• sj, 1 ≤ j <m, é um operador, representado pelos símbolos '+’ ou '-’;
• não há espaços em branco entre operandos e operadores.
 
O final da entrada é indicado pelo valor m = 0.
 
Exemplo de Entrada
3
3+7-22
3
5-10-77
10
1+2+3+4+5+6+7+8+9+10
0
 
Saída
Para cada conjunto de testes da entrada seu programa deve produzir três linhas. A primeira
linha deve conter um identificador da expressão, no formato "Teste n", onde n é numerado a
partir de 1. Na segunda linha deve aparecer o resultado encontrado pelo seu programa. A
terceira linha deve ser deixada em branco. A grafia mostrada no Exemplo de Saída, abaixo,
deve ser seguida rigorosamente.
 
Exemplo de Saída
Teste 1
-12
Teste 2
-82
Teste 3
55
(esta saída corresponde ao exemplo de entrada acima)
 
Restrições
1 ≤ m ≤ 100, 0 ≤ Xi ≤ 100 para todo 1 ≤ i ≤ m

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifica se deu certo ae;

 

#include <stdio.h>
#include <stdlib.h>
 
int main (){
 
int numeros[100];
char operadores[100];
int i,n,cont,resp;
bool funcionando = true;
char l;
cont=0;
while (funcionando == true){
    printf("\nINFORME QUANTOS NUMEROS TERA SUA OPERACAO: ");
    scanf("%d",&n);
    while (n<0 || n>100){
        printf("\nN TEM QUE ESTAR ENTRE 0 E 100, DIGITE NOVAMENTE: ");
        scanf("%d",&n);
        setbuf(stdin,NULL);
    }
    for (i=0;i<n;i++){
    printf("\nINFORME O NUMERO DE SUA OPERACAO: ");
    scanf("%d",&numeros);
    setbuf(stdin,NULL);
    if (i<n-1){
    printf("\nINFORME O OPERADOR DE SUA OPERACAO: (+ ou -)");
    scanf("%c",&operadores);
    setbuf(stdin,NULL);
    }
    }
    resp=0;
    for (i=0;i<n;i++){
    if (i==0){
        resp=numeros;
    }
    if (operadores=='+'){
        resp=resp + numeros[i+1];
    }
    if (operadores=='-'){ {
        resp = resp - numeros[i+1];
    }
 
    }
    }
    cont=cont+1;
    printf("\nTEXTE %d",cont);
    printf("\n %d",resp);
    printf("\n\n");
 
 
 
 
}
return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

você deve criar um condição que trate possíveis espaços entre os operadores , (tratamento de bugs faz parte da progração)

algo com

 

se char for igual a espaço 

repetir char novamente até ser diferente de espaço

desta forma o um operador ou um numero será lido pela escâner

e os espaços serão devidamente ignorados nas operações.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×