Ir ao conteúdo

Posts recomendados

Postado

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
Postado
#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;
        }

}

 

Postado
12 minutos atrás, herbertbahia disse:

maior = INT_MIN, menor = INT_MAX

@herbertbahia boa noite, amigo. Qual a diferença entre atribuir os valores máximos e mínimos para conseguir rodas o código? Não entendi. A mudança no código foi apenas neste ponto.

  • Curtir 1
Postado
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
Postado

@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
Postado

 

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

Postado

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

Postado
        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

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!