Ir ao conteúdo
  • Cadastre-se

C++ Lançamentos de nota em C++


kampa896

Posts recomendados

Boa noite, pessoal. Desculpem as dúvidas básicas, mas estou começando o curso na área de TI, sem nenhum conhecimento prévio.

Tenho que realizar um programa que leia a quantidade de notas que o usuário definir, sendo que no final, mostro o cálculo da média, e a maior e menor nota, caso houver mais de uma nota lançada. Meu código está rodando alguma coisa errada, mas não consigo encontrar o erro.

#include <iostream>
#include <locale>

using namespace std;

int main(){

    setlocale(LC_ALL, "");

    int total = 0;
    float nota, soma = 0, media, maior = 0, menor = 0;
    char continua = 'S';

    do{
        total++;

        cout << "\nDigite a nota " << total << ": ";
        cin >> nota;
        soma = soma + nota;
        media = soma / total;

        if(nota > maior){
            nota = maior;
        }
        else if(nota < menor){
            nota = menor;
        }

        cout << "\nDeseja continuar (S/N)? ";
        cin >> continua;

        }while(continua == 'S' || continua == 's');

        if(total == 1){
            cout << "\nNota " << total << ": " << nota;
            cout << "\nMédia: " << nota;
        }
        else{
            cout << "\nMédia: " << media;
            cout << "\nMaior nota: " << maior;
            cout << "\nMenor nota: " << menor;
        }

        return 0;
}

 

lancamento_notas.png

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

#include <iostream>
#include <locale>
#include <limits.h>

using namespace std;

int main(){

    setlocale(LC_ALL, "");

    int total = 0;
    float nota, soma = 0, media, maior = INT_MIN, menor = INT_MAX;
    char continua = 'S';

    do{
        total++;

        cout << "\nDigite a nota " << total << ": ";
        cin >> nota;
        soma = soma + nota;
        media = soma / total;

        if(nota > maior)
            maior = nota;
        
        if(nota < menor)
            menor = nota;

        cout << "\nDeseja continuar (S/N)? ";
        cin >> continua;

        }while(continua == 'S' || continua == 's');

        if(total == 1){
            cout << "\nNota " << total << ": " << nota;
            cout << "\nMédia: " << nota;
        }
        else{
            cout << "\nMédia: " << media;
            cout << "\nMaior nota: " << maior;
            cout << "\nMenor nota: " << menor;
        }

}

 

Link para o comentário
Compartilhar em outros sites

32 minutos atrás, kampa896 disse:

float nota, soma = 0, media, maior = 0, menor = 0;

se a variavel menor ser inicializada em 0 e depois voce comparar com algumas notas,  para 0 ser menor só se a nota fosse negativa. então a logica é inicializar com um valor alto nela.

já a variavel maior é o inverso.

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

@herbertbahia entendi as partes dos valores, meu amigo. Mas não sei se você deu uma olhada na imagem da tela do computador, meu comando onde pergunto se o usuário deseja continuar não está sendo executado. Você conseguiu achar algum erro?

adicionado 4 minutos depois

Já encontrei o erro, amigo. Muito obrigado pela atenção, ainda mais essa hora.

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

 

4 minutos atrás, kampa896 disse:

na imagem da tela do computador, meu comando onde pergunto se o usuário deseja continuar não está sendo executado.

parece estar tudo normal.

adicionado 2 minutos depois

@kampa896 entendir agora voce deve usar "." para flutuantes não "," ex: 9.5

Link para o comentário
Compartilhar em outros sites

@herbertbahia isso mesmo, meu amigo. Foi o ponto que eu tinha visto. Porém olha o resultado do código, mesmo com a correção do ponto.

Digite a nota 1: 5.7

Deseja continuar (S/N)? n

Nota: 2.14748e+09
Média: 2.14748e+09
Process returned 0 (0x0)   execution time : 7.310 s
Press any key to continue.

Fiz o código com a correção dos limites igual você ensinou.

Link para o comentário
Compartilhar em outros sites

        if(nota > maior){
            nota = maior;
        }
        else if(nota < menor){
            nota = menor;
        }

Estão errados, não é nota que deve receber maior (ou menor), é o contrário, maior (ou menor) deve receber o valor da nota.

adicionado 5 minutos depois

 

3 horas atrás, herbertbahia disse:

float nota, soma = 0, media, maior = INT_MIN, menor = INT_MAX;

 

 

Não faz sentido usar valores máximos e mínimos do tipo int para variáveis float, se vai usar esse método é melhor usar os valores máximo e mínimo do tipo float.

 

 

@kampa896 De qualquer maneira recomendo usar a primeira nota digitada como valores maior e menor iniciais.

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

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

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!