• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

DsB

Média

4 mensagens neste tópico

Bom dia, estou a dar os primeiros passos em c++ mas estou com algumas dificuldades em perceber como isto funciona por isso preciso da ajuda da comunidade.

Tenho Eclipse + CDT + MinGw(Compilador)

Fiz uma pequena aplicação para calcular Médias mas o resultado é estranho quando uso os seguintes valores(10+10+20+20+15+16.5)/6, o resultado final desta expressão é 16.3!!! e deveria ser 15.25, não faço ideia onde está o erro, segue o código para melhor análise:

#include <iostream>

using namespace std;

double calcularMedia(int sentinel);

int main(){

double media=0.0;

cout << "Bem vindo à calculadora de médias." << endl;

media=calcularMedia(-1);
cout << "A média é: " << media << endl;

return 0;
}

//Função que permite calcular a média

double calcularMedia(int sentinel){

double valores=0,valor=0;
int num=0;

cout << "Introduza nota(Para terminar -1):" << endl;
cin >> valor;

while(true){

	cout << "Introduza nota(Para terminar " << sentinel << "):" << endl;
	cin >> valor;

	if (valor==sentinel) break;

	valores+=valor;
	num++;

	}

	return (double)valores/num;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não estas a contar o primeiro valor :)

Tenta:

double calcularMedia(int sentinel){

  double valores=0,valor=0;

  int num=1;

  cout << "Introduza nota(Para terminar -1):" << endl;

Ou tira o input que está fora do loop, visto ser esse o principal problema.

  cin >> valores;

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem visto, podia ficar aqui horas e mais horas coisa tão básica, obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

São coisas que acontecem :)

De qualquer das formas, quando ficares encalhado num erro desses que consigas, pega numa folha de papel (ou usa a memória, em casos mais simples) e vai executando o algoritmo no papel, anotando o valor das variáveis. Pelo menos a mim costuma-me ajudar a apanhar esses pequenos erros

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora