Ir ao conteúdo

C Linguagem C While Repetição como Usar?


Ir à solução Resolvido por Lucca Rodrigues,

Posts recomendados

Postado

Pessoal Boa Noite! Sou Novo no Fórum gostaria de saber como resolver este algoritmo usando a Estrutura de Repetição While(estou com muita duvida) 5) Ler um número e imprimir todos os pares entre 2 e o número lido. Imprimir a soma
dos pares, o produto dos ímpares e divisíveis por 9 e a média de todos os números do
intervalo. Validar para que não seja realizada divisão por zero. Pois fiz o Código assim: 

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main()
{
    int num, c = 0, soma = 0, i = 0;

    do

    scanf("%d", &num);

    while(num == 0);

    while(c < num && c+2 < num && soma >= c)
    {
                printf("\n %d \n", c = c+2);
                        
        printf("\n %d \n", soma = (c+1));
                
    }

        
    


    return 0;
}

 

  • Obrigado 1
Postado

@RodolfoM Bom... Ainda falta bastante coisa em seu programa.

Ainda falta:

- imprimir todos os pares entre 2 e o número lido;

- Imprimir a soma dos pares;

- Imprimir o produto dos ímpares e divisíveis por 9;

- Imprimir a média de todos os números do intervalo.

O que já ta feito:

- Ler um número;

- Validar para que não seja realizada divisão por zero.

O resto você apenas tentou fazer.

 

Você pode fazer o seguinte:

Usar um laço for para incrementar uma variável (chamarei de c) inicializada com 0 até atingir o valor da variável num. Daí você trabalharia dentro desse laço:

Se c % 2 == 0, então é par. Some todos os pares à uma variável para imprimir depois, esta será a soma dos pares. Aproveite e já imprima o primeiro critério de impressão (os números pares entre 2 e o número lido) logo dentro do laço para não precisar armazenar em um vetor e imprimir posteriormente.

Se c % 2 != 0, então é ímpar, e se c % 9 == 0, então é divisível por 9. Combine essas 2 condições e caso o número passar no teste, efetue o produto dele por uma variável (inicializada com 1) que será impressa depois, esta será o produto dos ímpares e divisíveis por 9.

Por fim, Some cada um dos números à uma variável para dividir pela variável num posteriormente e imprimir, esta será a média.

 

Um laço for é mais adequado nesse caso, tendo em vista que você pode colocar somente a condição para a repetição na estrutura de repetição while. De qualquer forma, você pode adaptar isso mais tarde se quiser.

  • Curtir 2
Postado
Em 22/07/2020 às 00:34, Lucca Rodrigues disse:

@RodolfoM Bom... Ainda falta bastante coisa em seu programa.

Ainda falta:

- imprimir todos os pares entre 2 e o número lido;

- Imprimir a soma dos pares;

- Imprimir o produto dos ímpares e divisíveis por 9;

- Imprimir a média de todos os números do intervalo.

O que já ta feito:

- Ler um número;

- Validar para que não seja realizada divisão por zero.

O resto você apenas tentou fazer.

 

Você pode fazer o seguinte:

Usar um laço for para incrementar uma variável (chamarei de c) inicializada com 0 até atingir o valor da variável num. Daí você trabalharia dentro desse laço:

Se c % 2 == 0, então é par. Some todos os pares à uma variável para imprimir depois, esta será a soma dos pares. Aproveite e já imprima o primeiro critério de impressão (os números pares entre 2 e o número lido) logo dentro do laço para não precisar armazenar em um vetor e imprimir posteriormente.

Se c % 2 != 0, então é ímpar, e se c % 9 == 0, então é divisível por 9. Combine essas 2 condições e caso o número passar no teste, efetue o produto dele por uma variável (inicializada com 1) que será impressa depois, esta será o produto dos ímpares e divisíveis por 9.

Por fim, Some cada um dos números à uma variável para dividir pela variável num posteriormente e imprimir, esta será a média.

 

Um laço for é mais adequado nesse caso, tendo em vista que você pode colocar somente a condição para a repetição na estrutura de repetição while. De qualquer forma, você pode adaptar isso mais tarde se quiser.

/*5) Ler um número e imprimir todos os pares entre 2 e o número lido. Imprimir a soma
dos pares, o produto dos ímpares e divisíveis por 9 e a média de todos os números do
intervalo. Validar para que não seja realizada divisão por zero.*/
#include <stdio.h>
#include <stdlib.h>

int main()
{
	int num, c = 0, soma, p=0, media;

    do

	scanf("%d", &num);

    while(num == 0);

	do
    {

            printf("\n %d \n",c=c+2);
            getchar();
          
            if(c%2==0)
            {
                    printf("\n %d \n", soma = c+c);
            }
            else if(c%2!=0 && c%9 == 0)
            {
                    printf("\n %d \n", p = p*c);// produto
            }


    }
    while(c>=2 && c<num);
	system("pause");
	return 0;
}

Tentei fazer de outra forma consegui uma parte que foi mostrar os números de 2 ate o declarado na variável. Tentei fazer a soma deu certo dos pares, porém quando coloquei a segunda condição parece que anulou a primeira.

  • Solução
Postado

@RodolfoM Continua faltando o que já faltava anteriormente.

Alguns erros:

- Não da pra entender nada do que está sendo impresso em seu programa. Só números estão sendo impressos, e não da pra adivinhar o que são esses números:

image.png.19d5626074963bb837fbe26fba8c425f.png

- Eu tinha dito que era pra incrementar c inicializado com 0 até atingir o valor de num, você não fez isso.

- Usou a estrutura de repetição do while. Nesse caso, um laço for é melhor.

- Não imprima nada no loop, só os números pares. Você só vai imprimir o resto quando sair do loop.

- A variável que representa a média é do tipo int em seu programa, e já que existe a possibilidade de não ser do tipo inteiro, deveria ser do tipo float ou double.

- "soma = c+c" não fará com que sejam somados os números pares à variável soma, na verdade, será atribuído à ela c+c. Deveria ser algo como: soma += c, que é o mesmo de soma = soma + c. Você fez errado para a variável soma dos pares, mas certo para a variável produto dos ímpares e divisíveis por 9: p = p*c.

- Faltou calcular a média e imprimir os números pares.

 

Pra facilitar a vida, c pode ser inicializado com 1.

Isso aqui poderia ser algo parecido com o que você está tentando fazer:

#include <stdio.h>
#include <locale.h>

int main()
{
    int num, c, somapar = 0, prodimpar = 1;
    float media;
    
    printf("Insira um número: ");
    do{
	    scanf("%d", &num);
    }while(num == 0);
    
    printf("\nPares:\n");
    for(c = 1; c <= num; c++){
        if(c % 2 == 0){
            // Imprimindo números pares
            printf("%d\n", c);
            // Soma dos pares
            somapar += c;
        }else {
            if(c % 9 == 0){
                // Produto dos ímpares e divisíveis por 9
                prodimpar *= c;
            }
        }
        media += c;
    }
    printf("\nSoma dos pares: %d", somapar);
    printf("\n\nProduto dos ímpares e divisíveis por 9: %d", prodimpar);
    // Média
    media /= num;
    printf("\n\nMédia de todos os números: %.2f", media);
    return 0;
}
  • Curtir 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...

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

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!