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

Calculadora - Subtração Usando for


princknoby

Pergunta

Olá galera, minha primeira vez aqui no fórum.
Sou iniciante em programação, iniciei em linguagem C, já fiz alguns programas bem básicos. 
Achei eles fáceis e resolvi propor um desafio a mim mesmo: Desenvolver uma calculadora simples. 
Pode ser algo extremamente bobo e simples pra quem já programa, mas eu estou quebrando a cabeça com isso.

Primeiro, resolvi fazer uma calculadora, em que por o usuário escolha quantos numeros irá participar da operação escolhida
Ex: O usuário escolhe a opção de soma, logo em seguida, pergunto a ele quantos numeros ele deseja somar, e em seguida, peço pra que digite os numero, e eu os somo e apresento o resultado.

O código da parte de soma ficou o seguinte: 

Adição:

case 1: {
        printf ("Digite com quantos numeros voce desejar trabalhar:");
        scanf("%d", &valor);
        for (i=1; i<=valor; i++)
        {
            printf ("Digite o %dº valor: ", i);
            scanf ("%d", &x);
            resultado=resultado+x;
        }
    {
        printf ("A soma desses valores é: %d\n\n\n", resultado);
        system("pause"); /*Para que o resultado fique na tela 
                          ate que o usuario pressione alguma tecla
                          para que não volte direto ao menu*/
    }
        break;
    }


     

 Então passei para subtração, mas não faço ideia de como realizar a operação de subtração com o for, pois não vou armazenar cada numero digitado em um variável diferente, pois não sei quantos números o usuário irá digitar, como por exemplo se eu soubesse que seria dois, retiraria o for, solicitaria os dois números, armazenaria cada um em uma variável e depois faria a subtração dela. 
Mas com o for não consigo fazer isso, então não faço ideia de como fazer isso, já tentei de tudo que consigo imaginar, nunca consigo retornar o resultado correto! 
Alguém poderia me dar uma sugestão?

Ah, e o código da operação de substração até o momento está assim:

Subtração:

case 2: {
        printf ("Digite com quantos numeros voce desejar trabalhar:");
        scanf("%d", &valor);
        for (i=1; i<=valor; i++) {
            printf ("Digite o %dº valor:", i);
            scanf ("%d", &x);
            resultado=
        }
            {
            printf ("A subtracao entre desses valores é: %d\n", resultado);
            system("pause");
        }
            break;
    }


  


Peço desculpas pelo tamanho do tópico, não consegui maneira mais simplificada de explicar o meu problema 

 

Editado por princknoby
formatação
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

@princknobyOlá!

A ideia é a mesma, você vai usar o sinal de subtração no mesmo local que usou o de adição na operação anterior. Lembre-se de zerar o resultado a cada resposta. Ou seja, depois de exibir o resultado atribua 0 , porque se não os dados da operação anterior vão influenciar na atual.

 

OK! 

Link para o comentário
Compartilhar em outros sites

  • 0

@britivaldo Olá, obrigado pela sugestão, mas infelizmente não funcionou.

Hoje meu professor iniciou vetor, então tive a ideia de tentar realizar a operação utilizando vetores, consegui fazer. 
Mas, após fazer o código, a solução ficou MUITO clara em minha mente, e percebi que não precisava usar vetores, então realizei a operação de subtração com um novo código bem mais simples. 
Vou deixa os dois códigos aqui. 
O código sem usar vetor, eu comentei ele praticamente inteiro! Para caso alguém algum dia se encontre na mesma situação que eu, venha a ter uma explicação de uma maneira de como resolver esse "problema" para alguns. 

 

Código com vetor: 

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h>
	int main ()
{
    int *x, i, sub=0, n;
    printf ("Digite N:");
    scanf ("%d", &n);
    x = (int *)malloc(n * sizeof(int));
    printf ("Digite um numero:");
    scanf ("%d", &x[0]);
	    for (i=1; i < n; i++)
    {
        printf ("Digite um numero:");
        scanf ("%d", &x[i]);
	        sub=x[0] - x[i];
         x[0]=sub;
	    }
	    printf ("\nO resultado da sub é:%d\n", sub);
    
    system ("pause");
    return 0;
}

 

 

Código sem simples (sem usar vetores) - COMENTADO

#include <stdio.h>
#include <stdlib.h> 
	int main ()  
{    
    int i, x, y, sub, n; /*i é o contador, x é o valor que o usuario ira digitar e y também, vai ficar mais fácil de entender mais a frente, sub é a operação de subtração, e n
    é quantos numeros a pessoa irá traabalhar */
	    printf ("Digite com quantos numeros voce deseja trabalhar:"); // que é o nosso n
    scanf ("%d", &n); //armazenamos em n
    if (( n != 0) && (n > 1)) // se N for diferente de zero iremos executar o seguinte bloco de comandos
                              // e maior que 1, pois caso por 1, o resultado sera o proprio valor digitado para a operação
    {
    {
        printf ("Digite o 1 numero:"); /* pedimos que o usuario digite o primeiro nro antes do laço para atribuirmos um valor inicial a operação de subtraçaõ */
        scanf ("%d", &x); // armazenamos esse primeiro numero em x
    }
	    for (i=1; i < n; i++) // o contador inica em 1 e vai até n-1 e incrementa 1, e encerra quando o contador for >= (maior ou igual) a n
    {
        printf ("Digite o %d valor: ", i+1); /*colamos i + 1 pois queremos o segundo valor, o primeiro já foi digitado
                                   então queremos o segundo, porém i=1, então para imprimirmos "2" colocamos i+1 */
        scanf ("%d", &y); /*armazenamos os valores digitados no laço, em outra variavel, no caso, e y */
        sub=x-y; /* aqui está o ponto crucial, sub=x(valor digitado fora do laço) + y(valor digitado dentro do laço)
                    ou seja, temos um valor inicial para a subtração. Ex: x=2 e y=3; sub=x+y -> sub=2 - 3 -> sub = -1 */
	        x=sub; /*outro ponto importante do programa, devemos atribuir x=sub, ou seja, x vai atribuir o resultado da operação
                 que demos de exemplo, ou seja, x vai atribuir o valor (-1), então na próxima operação teremos:
                 colocando y=2 -> sub=-1 (novo valor de x) - 2(valor de y) sub=-3; então x vai atribuir -3 caso o laço se repita */
    }
{
    printf ("O resultado da subtracao é: %d\n\n", sub); /* esse comando dispensa explicações né? rsrs */ 
                                                        /* apenas uma resalva, demos usar o printf fora do for
                                                           caso contrário, ele irá imprimir o valor da substração
                                                           todas as vezes que o laço se repetir, e não é isso que queremos,
                                                           queremos apenas o resultado final na subtração dos N's números */
	
}
}
	else if ( n == 1) 
{    printf ("Digite o valor que deseja subtrair: ");
    scanf ("%d", &x);
    printf ("O resultado da subtracao é: %d pois temos %d - 0 que é ele mesmo\n\n", x, x); // o proprio valor digitado pelo usuario
}
	else {
    printf ("Você escolheu realizar a opreracao com 0 numeros!\n\n\n");/* se o usuario atribuir n=0 significa que
                                                                              que ele não realizara nenhuma operação
                                                                              então encerramos o programa */
    exit (0);
}
	    system ("pause");
    return 0;
}
Editado por princknoby
Correções, novo código
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...