Ir ao conteúdo
  • Cadastre-se

Ajuda em programa em C


ramon basilio

Posts recomendados

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!

 

Link para o comentário
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

Link para o comentário
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
Link para o comentário
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;
}
Link para o comentário
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.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!