Ir ao conteúdo

C Estou com dificuldade para resolver este exercício com acumulador


Ir à solução Resolvido por devair1010,

Posts recomendados

Postado

Pessoal, estou escrevendo um código que leia valores positivos e sejam incorporados a um acumulador e encerre com a leitura do valor 0, mas quando digito 0 o programa continua a pedir valores e não encerra. Vou deixar também o enunciado da questão.

 

 Escreva um programa que leia uma série de inteiros positivos, encerrada com a leitura do valor 0. Todos os valores positivos lidos devem ser incorporados a um acumulador, de acordo com as seguintes regras:

- inicialmente, os valores lidos são somados ao acumulador;

 
#include <stdio.h>

main()
{
 int numero=0, soma=0, acumulador=0;

 printf("digite um numero inteiro: ", numero);
 scanf("%d", &numero);

 while (numero > 0)
 {
     printf("digite um numero inteiro: ", numero);
     scanf("%d", &numero);
      soma=soma + numero;
      acumulador=acumulador + numero;
for (numero<=-1; soma - numero; acumulador=soma)
    {
        printf("digite um numero inteiro: ", numero);
        scanf("%d", &numero);
        soma=soma - numero;
        acumulador=acumulador - numero;
if (numero = 0)
    {
    break;
    printf("o valor do acumulador e: %d", acumulador);
    scanf("%d", &acumulador);
}

}

 }



}

 

- após a primeira leitura do valor -1, os valores seguintes devem ser descontados do acumulador;

- a cada nova ocorrência do valor -1, alterna-se entre somar ou subtrair os seguintes (até nova leitura do valor -1) do acumulador. Concluída a série, com a leitura do valor 0, o conteúdo final do acumulador deve ser mostrado na tela.

  • Curtir 1
  • Solução
Postado

@Kaue Almeida     creio que usar o Loop do / while seria melhor , e evitando repetir três Vezes a mensagens e a Leitura , e seu código com algumas modificações poderia ser assim  :

#include <stdio.h>
#include <stdlib.h>
#define cls system("cls");
int main()
{
    int numero, operacao=1, acumulador=0;
    do{
        printf("digite um numero inteiro: ");
        scanf("%d", &numero);
        if(numero == -1)operacao *= -1;
        if( numero > 0 )
        {
            if( operacao > 0 )
                acumulador += numero;
            else
                acumulador -= numero;
        }
    }while( numero != 0 );
    cls
    printf("Valor Final do Acumulador -> %d\n",acumulador);
    return 16;
}

 

  • Curtir 2
  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 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...