Japanese Relaxation Ответов: 2

Можете ли вы проверить мой код 1 предупреждение


avg = double(num1 + num2 + num3) / 3.0; this line


Что я уже пробовал:

#include <iomanip>

// funtion prototype
double calcAverage(int, int, int);

double getTestScore();

using namespace std;

int main()
{
	//declare variables
	int score1 = 0;
	int score2 = 0;
	int score3 = 0;

	double average = 0.0;

	//get input items
	cout << "First test score: ";
	cin >> score1;
	cout << "Second test score: ";
	cin >> score2;
	cout << "Third test score: ";
	cin >> score3;

	//call function to calculate 
	average = calcAverage(score1, score2, score3);
	cout << "Average: " << average << endl;
	return 0;
} //end of main function


//function definitions

double calcAverage(int num1, int num2, int num3)
{
	double avg = 0.0;

	avg = double(num1 + num2 + num3) / 3.0;

	return avg;
}

double getTestScore()
{
	return 0.0;
}

CHill60

Что это за предупреждение?

2 Ответов

Рейтинг:
8

OriginalGriff

Попробуй:

double calcAverage(int num1, int num2, int num3)
{
	double avg = 0.0;
	avg = (double)(num1 + num2 + num3) / 3.0;
	return avg;
}

Скобки вокруг типа данных (например double) попросите компилятор преобразовать значение в этот тип: таким образом, три целых числа суммируются, преобразуются в точку с плавающей запятой, а затем делятся.
Лучшей версией была бы:
double calcAverage(int num1, int num2, int num3)
{
	return (double)(num1 + num2 + num3) / 3;
}
Так как целочисленная константа "3" будет автоматически "обновлена" до плавающей точки в любом случае, и вам не нужно; нужно хранить промежуточное значение.

Но было бы намного лучше определить функцию, чтобы она принимала переменное число параметров, а не просто фиксировала ее на трех: Переменное число аргументов в C++[^]
Таким образом, вы можете вызвать один и тот же проверенный рабочий код для любого количества значений.


Japanese Relaxation

большое спасибо что это сработало

OriginalGriff

Всегда пожалуйста!

Рейтинг:
17

Member 14976586

О чем говорит ваше предупреждение ?

Вы можете попробовать с

(double)
вместо
double
(Я пытаюсь угадать содержание вашего предупреждения).

ЦИРКОНИЙ
Злотц