Задача. Даны два действительных числа. Найти среднее арифметическое этих чисел и среднее геометрическое их модулей.
Тесты
Первое число | Второе число | Среднее арифметическое | Среднее геометрическое |
156 | 82 | 119 | 113.102 |
-1158 | 2569 | 705.5 | 1724.79 |
256.3 | 289.5 | 272.9 | 272.395 |
9854.08 | -493 | 4680.54 | 2204.1 |
-544.59 | -12 | -278.295 | 80.8398 |
Алгоритм решения
- Так как в постановке задачи не указан диапазон чисел, то рациональнее всего использовать тип данных long double, охватывающий наибольшее количество возможных вариантов входных данных.
- Нам необходимо найти среднее арифметическое чисел, которое представляет собой сумму всех зафиксированных значений, делённую на их количество. Для нашей задачи формула приобретает следующий вид: [latex]A=\frac{a+b}{2}[/latex].
- Для нахождения среднего геометрического модулей двух чисел воспользуемся формулой [latex] G=\sqrt{\left|x_1\times x_2 \right|} [/latex].
Здесь находится код в ideone.com
Код программы:
1 2 3 4 5 6 7 8 9 10 11 |
#include <iostream> #include <cmath> using namespace std; int main() { long double a, b; cin >> a >> b; cout << (a + b) / 2 << endl; //среднее арифметическое чисел cout << sqrt(abs(a * b)) << endl; //среднее геометрическое модулей чисел return 0; } |
— Для смены знака достаточно написать —a.
— Вы очень странно записали формулу для среднего геометрического. Степень корня зависит от количества чисел. Или напишите общий случай, или только для двух чисел. Сейчас это какой-то странный гибрид — чисел n, а корень квадратный.
— Нет смысла менять знак каждого из сомножителей. Достаточно сменить знак произведения. Используйте для этого функцию abs().
Спасибо большое, Игорь Евгеньевич. Отредактировала алгоритм решения и код согласно вашим замечаниям.
Всё хорошо. Зачтено.