Ir ao conteúdo

Posts recomendados

Postado

Preciso de um programa que calcule a média de cada uma das classes que um professor leciona, 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 o programa calcula e imprime a média das notas entradas anteriormente e termina sua execução, o programa só deve computar notas no intervalo entre 0 e 10.

Este é meu código, por hora:

 

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


int main()

{
    float nota;
    float media;
    float decisão;
    float qnota;
    int contador;


    setlocale(LC_ALL, "");
    do {
    nota=0;
    media=0;
    contador=1;
    printf("Quantas notas você deseja calcular?\n");
    scanf("%f", &qnota);
    do{

   printf("Coloque a nota %i\n", contador);
    scanf("%f", &nota);
    media=nota+media;
    contador=contador+1;
    }while(qnota+1>contador);

    media=(media)/qnota;
    printf("A média do aluno é: %0.2f\n", media);

        if (media<=59){
        printf("Reprovado\n");
    }
    else {
        printf("Aprovado\n");
    }

    printf("Se quiser efetuar outro calculo digite 1, se não quiser, digite 0.\n");
    scanf("%f", &decisão);

    } while(decisão>0);

    return 0;
}

 

Não cheguei no resultado esperado, acho que da pra continuar a montar o programa a partir do código acima.

Postado

Seria algo assim?

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

int main() {
    int quantidade;

    double entrada;
    double media;

    char situacao[10] = "";
    char repetir = 's';

    do {
        // Reseta as variáveis a cada ciclo
        entrada = 0;
        media = 0;

        system("cls");

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

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

        if (quantidade > 0)
            media /= quantidade;

        if (media >= 6)
            strcpy(situacao, "Aprovado");
        else
            strcpy(situacao, "Reprovado");

        printf("------------------------------ \n");
        printf("   Média: %.2f \n", media);
        printf("Situação: %s \n", situacao);
        printf("------------------------------ \n");

        printf("Repetir [ S / N ]: ");
        scanf(" %c", &repetir);
    } while(repetir == 's');

    return 0;
}

Observações:

1- O for está trabalhando com uma variável externa à sua declaração, isso é útil porque assim podemos acessar essa variável fora do laço.

2- Repare que o segundo argumento do for foi omitido, isso porque a condição de parada não é numérica.

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

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!