Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/55: Рейтинг темы: голосов - 55, средняя оценка - 4.87
..:::BesT:::..
8 / 8 / 5
Регистрация: 19.03.2009
Сообщений: 195
1

Среднее геометрическое

02.11.2010, 00:11. Показов 9978. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задание:
Найти среднее геометрическое отлицательных нечетных элементов массива.

Вообщем нужно исправить эту программу, чтобы работала по заданию и правильно считала.
Среднее геометрическое: всё умноженное, а потом корень n-ной степени

Вот что-то написал, но уверен, что недописал и формула возможно не правильная, т.к. пересчитывал и не получил нужный результат.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
uses wincrt;
var
   a:array[1..100] of integer;
   i,kol,n:integer;
   otv:real;
begin
write('Ââåäèòå êîëè÷åñòâî ýëåìåíòîâ: ');
readln(n);
writeln('Ìàññèâ');
randomize;
for i:=1 to n do
 begin
  a[i]:=random(9);
  write(a[i]:3);
end;
otv:=exp(1/n*ln(a[i]));
writeln;
writeln('OTVET: ',otv:5:3);
end.
Добавлено через 1 минуту
Тут точно считает не нечетные, а все.
Нужно, чтобы работало с нечетными.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.11.2010, 00:11
Ответы с готовыми решениями:

Найти среднее арифметическое этих чисел и среднее геометрическое их модулей
Даны два действительных числа. Найти среднее арифметическое этих чисел и среднее геометрическое их...

Вычислить среднее арифметическое кубов / среднее геометрическое модулей двух данных чисел
даны 2 числа написать программу для вычесления среднего арифймитического кубов этих чисел, и...

Найдите среднее арифметическое и среднее геометрическое
Даны два действительных положительных числа.Найдите среднее арифметическое и среднее геометрическое...

Вычислить среднее арифметическое и среднее геометрическое
While Дано вещественное число E(>0). Последовательность вещественных чисел Ак определяется...

12
Неадекват и грубиян
310 / 297 / 301
Регистрация: 22.02.2010
Сообщений: 647
02.11.2010, 00:49 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var a:array[1..20]of integer;
    i,k:integer; sg:real;
begin
randomize;
sg:=1; k:=0;
for i:=1 to 20 do
begin
     a[i]:=random(20)-10;
     if (a[i]<0)and(odd(a[i])) then
     begin
          sg:=sg*a[i];
          inc(k);
     end;
end;
sg:=power(sg,1/k);
writeln(sg);
end.
1
..:::BesT:::..
8 / 8 / 5
Регистрация: 19.03.2009
Сообщений: 195
02.11.2010, 19:07  [ТС] 3
Вот переделал, но есть НЕДОЧЕТЫ, которые я не понимаю как ИСПРАВИТЬ.
А именно:
Например, у меня сгенерировало числа:
5 2 3 0 1
Программа считает так:
- Выбирает положительные (5 2 3 1)
- Отсеивает четные (5 3 1)
- И вычисляет следующим образом
--> корень 5 степени из (5x3x1)
В итоге: 1,718771928...

Когда должно быть:
--> корень 3 степени из (5x3x1) // 3 степени (!), так как элементов у нас, после отсеивания, 3.
Поэтому ПРАВИЛЬНЫЙ ответ: 2,466212074...

Помогите сделать, чтобы в
Pascal
1
kol
было ПРАВИЛЬНОЕ значение СТЕПЕНИ.
Сколько сижу - не пойму как.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
uses wincrt;
var a:array[1..100]of integer;
    i,n,kol:integer;
    p,geom:real;
begin
write('Ââåäèòå êîëè÷åñòâî ýëåìåíòîâ: ');
readln(n);
writeln('Ìàññèâ');
randomize;
for i:=1 to n do
begin
     a[i]:=random(20);
     write(a[i]:3);
end;
p:=1;
for i:=1 to n do
begin
if (a[i]>0) and (odd(a[i])) then
P:=p*a[i];
inc(kol);
geom:=exp(ln(p)*(1/kol));
end;
writeln;
write('Srednee geometricheskoe: ',geom:3:5);
end.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
02.11.2010, 19:11 4
Выбирает положительные (5 2 3 1)//по условию отрицательные
- Отсеивает четные (5 3 1)
- И вычисляет следующим образом
--> корень 5 степени из (5x3x1)//с какого 5 степень если чисел 3?
1
..:::BesT:::..
8 / 8 / 5
Регистрация: 19.03.2009
Сообщений: 195
02.11.2010, 19:14  [ТС] 5
я проверял и пересчитывал в ручную,
да, в программе даже после отсеивания считает степень стольки элементов, сколько мы вводим для генерирования
0
..:::BesT:::..
8 / 8 / 5
Регистрация: 19.03.2009
Сообщений: 195
02.11.2010, 19:17  [ТС] 6
а то, что по условию отрицательные - я знаю.
но вот это видать в условии ошибка, ведь невозможно считать среднее геометрическое из отрицательных елементов?
разве если этих елементов будет четное кол-во (т.к. минус на минус = плюс) и тогда корень извлечется.
но чтобы это реализовать у меня не хватит мозгов(
поэтому решил поменять на положительные
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
02.11.2010, 19:22 7
Цитата Сообщение от Best-pm07 Посмотреть сообщение
ведь невозможно считать среднее геометрическое из отрицательных елементов?
Если только одни отрицательные, то можно.
Например -3 -1 -5 ср.геом.= -2,466 -5 -6 ср.геом.=5,477

Добавлено через 2 минуты
Цитата Сообщение от Best-pm07 Посмотреть сообщение
да, в программе даже после отсеивания считает степень стольки элементов, сколько мы вводим для генерирования
Так считай сколько элементов выбрано и корень этой степени извлекай.
1
..:::BesT:::..
8 / 8 / 5
Регистрация: 19.03.2009
Сообщений: 195
02.11.2010, 19:28  [ТС] 8
это сложно сделать для отрицательных, нужно именно определить, где какая степень и сколько знаков, чтобы считало отрицательные - и опять же устранить проблему со степенью корня.

со знаками разобрался, вот в реализации, все равно я не понимаю, почему оно не в той степени считает...

если есть возможность скажите что добавить\изменить в коде, чтобы все заработало правильно (если возможно с отрицательными)
зараннее спасибо

Добавлено через 1 минуту
вот этого я и понять не могу - как считать, чтолько отсеяно.
вот над этим и сидел)

саму реализацию кол-ва отсеянных не понимаю.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
02.11.2010, 19:39 9
Цитата Сообщение от Best-pm07 Посмотреть сообщение
это сложно сделать для отрицательных, нужно именно определить, где какая степень и сколько знаков, чтобы считало отрицательные - и опять же устранить проблему со степенью корня.
Степень определяется количеством выбранных отрицательных чисел, если оно четное, то sg:=exp(ln(p)/k);
если нечетное, то sg:=-exp(ln(abs(p))/k);

Добавлено через 3 минуты
Примитивная задача, а написал уже целый роман. Потому что не знаешь ничего и слушать не хочешь, шибка умный.
Вот как нужно считать для положительных
Pascal
1
2
3
4
5
6
7
8
p:=1;kol:=0;
for i:=1 to n do
if (a[i]>0) and (odd(a[i])) then
 begin
  P:=p*a[i];
  inc(kol);
 end; 
geom:=exp(ln(p)*(1/kol));
1
..:::BesT:::..
8 / 8 / 5
Регистрация: 19.03.2009
Сообщений: 195
02.11.2010, 22:56  [ТС] 10
Так считай сколько элементов выбрано и корень этой степени извлекай.
Это главное, чего я прошу.
Я не пойму как это сделать((
И код, который вы написали последним такой же как и выше написанный мною (разве что kol:=0, что ничего не изменяет, по моему мнению).
написал целый роман дабы легче можно было меня понять, вы ведь поняли о чем я, но напиисали совсем не то, что я хотел услышать.

Возможно, кто-нибудь и форумчан сможет мне подсказать как сделать дальше?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
02.11.2010, 23:02 11
Цитата Сообщение от Best-pm07 Посмотреть сообщение
И код, который вы написали последним такой же как и выше написанный мною
Ерунду не мели, посмотри как расставлены опероторские скобки у тебя и у меня. Вместо того чтобы рыдать, давно бы уже проверил.
Вот твоя чушь
Pascal
1
2
3
4
5
6
7
for i:=1 to n do
  begin
   if (a[i]>0) and (odd(a[i])) then
   P:=p*a[i];
   inc(kol);
   geom:=exp(ln(p)*(1/kol));
 end;
А вот как нужно
Pascal
1
2
3
4
5
6
for i:=1 to n do
if (a[i]>0) and (odd(a[i])) then
 begin
  P:=p*a[i];
  inc(kol);
 end;
Сравни как скобки стоят.
1
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
02.11.2010, 23:02 12
Цитата Сообщение от Best-pm07 Посмотреть сообщение
И код, который вы написали последним такой же как и выше написанный мною
Ерунду не мели, посмотри как расставлены опероторские скобки у тебя и у меня. Вместо того чтобы рыдать, давно бы уже проверил.
Вот твоя чушь
Pascal
1
2
3
4
5
6
7
for i:=1 to n do
  begin
   if (a[i]>0) and (odd(a[i])) then
   P:=p*a[i];
   inc(kol);
   geom:=exp(ln(p)*(1/kol));
 end;
А вот как нужно
Pascal
1
2
3
4
5
6
for i:=1 to n do
if (a[i]>0) and (odd(a[i])) then
 begin
  P:=p*a[i];
  inc(kol);
 end;
Сравни как скобки стоят.
1
..:::BesT:::..
8 / 8 / 5
Регистрация: 19.03.2009
Сообщений: 195
02.11.2010, 23:26  [ТС] 13
Все спасибо, я очень не внимательный.
0
02.11.2010, 23:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.11.2010, 23:26
Помогаю со студенческими работами здесь

Среднее геометрическое
Знайти середнє геометричне число всіх цілих додатних чисел менших 10.

Среднее геометрическое
Помогите плиз с заданием, весь день не могу понять как сделать. Без использования формулы суммы...

Среднее геометрическое и арифметическое
Помогите пожалуйста написать процедуру которая вычисляет среднее геометрическое и арифметическое...

Среднее геометрическое чисел 1…N (N<10).
помогите решить плз Вычислить среднее геометрическое чисел 1…N (N&lt;10) Заранее благодарен.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru