Этейн была на минном поле, окруженная людьми, которые не могли оттуда уйти, и некоторые из них истекали кровью до смерти от тяжёлых ран. Их крики переворачивали ей душу. Говорят, что раненые солдаты зовут маму, но у клонов не было матери. Они звали своих братьев…
Во время бойни на Квиилуре
Карен Тревисс, "Истинное лицо"





Сколько глобус ни крути, там Fess-Style не найти...
Сайт Fess'a » Найти остаток и целую часть средн. геометрического - Форум
[ Новые сообщения · Участники · Правила форума · Поиск ]
Страница 1 из 11
Форум » Программирование » Паскаль » Найти остаток и целую часть средн. геометрического
Найти остаток и целую часть средн. геометрического
FessДата: Понедельник, 08.04.2013, 14:42 | Сообщение # 1

Добрый админ
Сообщений: 2338
Статус:
Программа, которая находит среднее геометрическое (это как среднее арифметическое, только вместо складывания чисел мы перемножаем их), затем разбивает средн. геометрическое на целую часть и остаток.

Код
Program Celoe_ostatok;
var  
x,y,z,cel:integer;
g,f:real;

begin
readln(x);  
readln(y);  
readln(z); {вводим 3 числа}

g:=x*y*z/3; {формула средн. геометр.}

writeln('--------');  
writeln('Формула: ',x,' * ',y,' * ',z,' / 3');

cel:=Trunc(g); {Выделяем целую часть}
f:=g - cel;

writeln('Среднее геометрическое: ', g:4:2);
writeln('Целая часть: ', cel);
writeln('Остаток: ', f:4:2);
end.


Прикрепления: 2484318.png(3Kb)
 
DarthVaderДата: Понедельник, 03.06.2013, 03:42 | Сообщение # 2

Авы нет

Группа: Удаленные





Оу, кажется вышла ошибочка. Среднее геометрическое - это корень n-ной степени из из произведения n чисел. А в коде просто произведение 3-х чисел делится на 3 (((
Вычислить среднее геометрическое 2 чисел - проще простого, это будет так: sqrt(a*b). А вот если три или больше... Тут надо возводить в произвольную степень...
С тремя числами, думаю, можно так:

Код
g:=exp((1/3)*ln(a*b*c));

По моему, такая штука должна работать. Я, правда, сам не знаю, каким образом (xD), но, по идее, такая команда возводит число в скобках функции ln в степень числа 1/3 (что равносильно извлечению кубического корня). Естественно, можно указывать любую степень и любое число. Сам я не проверял, как это работает)

Добавлено (03.06.2013, 03:42)
---------------------------------------------
Вообще, думаю, неплохо было бы обобщить программу на случай произвольного n (то бишь кол-ва чисел, из которых высчитывается ср. геометрическое). Ну, то есть, создать массив, считать n, потом заносить каждое число в a (использую цикл, естественно), потом их перемножить и посчитать exp((1/n)*ln(pr)), где pr - произведение чисел из массива. Могу написать код по-нормальному, если кто-нибудь попросит)

 
FessДата: Понедельник, 03.06.2013, 21:46 | Сообщение # 3

Добрый админ
Сообщений: 2338
Статус:
Цитата (DarthVader)
Оу, кажется вышла ошибочка. Среднее геометрическое - это корень n-ной степени из из произведения n чисел. А в коде просто произведение 3-х чисел делится на 3 (((

Позор моим математическим познаниям хД

Цитата (DarthVader)
Вообще, думаю, неплохо было бы обобщить программу на случай произвольного n (то бишь кол-ва чисел, из которых высчитывается ср. геометрическое). Ну, то есть, создать массив, считать n, потом заносить каждое число в a (использую цикл, естественно), потом их перемножить и посчитать exp((1/n)*ln(pr)), где pr - произведение чисел из массива. Могу написать код по-нормальному, если кто-нибудь попросит)

Уважаемый DarthVader, давай пиши! хД
Чтобы можно было прямо вставить красивый код и всё работало)))
 
DarthVaderДата: Вторник, 04.06.2013, 01:20 | Сообщение # 4

Авы нет

Группа: Удаленные





Код
VAR          a     : array [1..256] of real;
                ii, n  : integer;
                pr, g: real;

BEGIN
         readln (n);                    {количество чисел}
         for ii:=1 to n do readln (a[ii]);           {вводим n чисел}
         pr:=1;
         for ii:=1 to n do pr:=pr*a[ii];            {перемножаем их}
         g:=exp ((1/n)*ln(pr));                     {извлекаем корень n-ной степени}
         writeln ('Целая часть: ', trunc(g));    {выводим результаты}
         writeln ('Остаток: ', g-trunc(g));
         readln;
END.


Добавлено (04.06.2013, 00:36)
---------------------------------------------
Как то так xD

Добавлено (04.06.2013, 01:20)
---------------------------------------------
P.S. Вместо ii должно быть i.



Сообщение отредактировал DarthVader - Вторник, 04.06.2013, 01:19
 
Форум » Программирование » Паскаль » Найти остаток и целую часть средн. геометрического
Страница 1 из 11
Поиск: