Ir ao conteúdo
  • Cadastre-se

C++ Calcular média com valores não negativos entre 0 e 10


Posts recomendados

@devair1010

@AdrianoSiqueira

São dois exercícios, praticamente minha sala inteira não conseguiu fazer usando apenas os comandos que meu professor passou, tivemos que usar outros comandos, então vim aqui como um dos últimos recursos.

1. Faça um programa para calcular uma quantidade indefinida de médias no qual um usuário possa entrar apenas com notas entre 0 e 10. Se o usuário entrar com uma nota fora deste intervalo, o programa deve solicitar novamente essa nota até que o usuário entre com um valor válido.

2. Faça um programa que auxilie o professor a calcular a média de cada uma das classes que leciona. Sendo assim, a quantidade de notas entradas no programa é indeterminada. O programa deve entrar com as notas e quando o valor da nota digitada pelo professor for negativa (não existe nota negativa) o programa calcula e imprime a média das notas entradas anteriormente e termina sua execução. Além disso, o programa apenas computa notas no intervalo entre 0 e 10.

O que podemos usar:

Int, float, char, do, while, if, else, if else, printf, scanf, return, and, or, true, false e os operadores (==, !=, >, <, >=, <=, +, -, /, *, %), espero não ter esquecido nada, se esqueci de algo essencial para os exercícios, me desculpem.

Devair e Adriano já haviam o efetuado usado comandos que não podíamos usar, aqui estão os arquivos:

Exercício 1.txt Exercício 2.txt

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@AdrianoSiqueira To tentando dar um jeito, meu professor reclamou de break e mais alguns, acho que tirei todos menos o break do exercício 2.

Ex2.txt

adicionado 42 minutos depois

@AdrianoSiqueira Existe algum comando que substitui o break? Vou mandar hoje os exercícios prontos, se não houver, mando assim mesmo.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Lucca Rodrigues       você pode usar o comando goto , que dizem que está em desuso ,  mas funciona bem , para substituir o break ,  mas esse goto não está na lista que você informou que se pode usar ,  então o melhor seria você usar o while ou do / while para fazer o loop que pega as notas e ele se repetirá enquanto a nota entrada for maior que zero ,  então quando for menor que zero ele vai passar  pelo loop e fazer os comandos abaixo dele .  e seria melhor se você postasse o seu código aqui no fórum mesmo , para que outros que precisem de ajuda também use seu código como referencia  .

Link para o comentário
Compartilhar em outros sites

@Lucca Rodrigues Na linha 16 adiciona a condição de parada dentro do for:

for (quantidade = 0; entrada < 0; ++quantidade) { //Caso a quantidade seja 0

E remove o bloco else nas linhas 24 e 25, deixando apenas o if:

if (entrada >= 0) //Caso o valor seja maior que 0
    media += entrada; //Atribuição por adição

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@AdrianoSiqueira

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//Calcular média com valores entre 0 e 10, caso o valor seja maior que 10, o programa irá pedir novamente um número, caso seja menor que 0, o programa se encerra.
int main() {
    int quantidade;
    double entrada;
    double media;
    char situacao[10] = "";
    char repetir = 's';
//Até o momento, introduziram-se as variáveis
    do {
        entrada = 0; //Entrada recebe 0
        media = 0; //Média recebe 0

        for (quantidade = 0; entrada < 0; ++quantidade) { //Caso a quantidade seja 0
            do {
                printf("Nota [%i]: ", (quantidade + 1)); //Adiciona-se mais uma nota a espera de um valor
                scanf("%lf", &entrada);
            } while (entrada > 10); //enquanto o valor for maior que 0

            if (entrada >= 0) //Caso o valor seja maior que 0
                media += entrada; //Atribuição por adição
        }

        if (quantidade > 0) //Se a quantidade for maior que 0
            media /= quantidade; //Atribuição por divisão

        if (media >= 6)
            printf("\nAprovado\n"); //Média maior ou igual a 6, será aprovado
        else
            printf("\nReprovado\n"); //Média menor ou igual a 6, será reprovado

        printf("Media: %.2f \n", media); //Resultado da média

        printf("\nSe quiser efetuar outro calculo digite s, se nao quiser, digite n: ");
        scanf(" %c", &repetir); //Caso queira, ou não, calcular novamente
    } while(repetir == 's');

    return 0;
}

O que fiz errado?

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Eu errei, a lógica da condição de parada está invertida, também tinha um bug com a contagem da quantidade e removi a variável inútil e o import dela. Segue o código corrigido:

#include <stdio.h>
#include <stdlib.h>

int main() {
    int quantidade;

    double entrada;
    double media;

    char repetir = 's';

    do {
        entrada = 0;
        media = 0;

        for (quantidade = 0; entrada >= 0; ++quantidade) {
            do {
                printf("Nota [%i]: ", (quantidade + 1));
                scanf("%lf", &entrada);
            } while (entrada > 10);

            if (entrada >= 0)
                media += entrada;
            else
                --quantidade;
        }

        if (quantidade > 0)
            media /= quantidade;

        if (media >= 6)
            printf("\nAprovado\n");
        else
            printf("\nReprovado\n");

        printf("Media: %.2f \n", media);

        printf("\nSe quiser efetuar outro calculo digite s, se nao quiser, digite n: ");
        scanf(" %c", &repetir);
    } while(repetir == 's');

    return 0;
}

 

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

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...