Нахождение экстремумов
|
|
Death | Дата: Четверг, 27.10.2011, 05:58 | Сообщение # 1 |
Знакомый
Группа: Пользователи
Сообщений: 20
Статус: Offline
| Найдите номер m наибольшего среди произведений m П(X[k]^2), m=2,3,...,n. k=1
Пояснение: k- индекс, находящийся снизу; X-вектор, задающийся вводом; И на всякий случай еще это: если экстремальное значение повторяется, а надо найти его номер, считайте результатом номер первого порядка экстремума.
|
|
| |
Seqular | Дата: Пятница, 28.10.2011, 08:28 | Сообщение # 2 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: Offline
| Ну а что конкретно смущает? Задём массив X[1..n] Потом заводим переменную P: LongInt (думаю). И далее так: MAXm := 0; MAXp := 0; Code For m := 2 to n do Begin P := {Вычисление П[X{k}^2]} if (P > MAXp) then MAXm := m; End; Как-то так и находятся максимальные значения.
А вычисление П[X{k}^2] от 1 до m производим так:
Code P := 1; {единица нейтральна к умножению. Обязательно.} For i := 1 to m do Begin P := P * X[k] * X[k]; {т.е. умножаем на квадрат X[к]} End;
P.S. За мной перепроверяйте всё, могу перепутать. Но пока так.
Поддерживаю также проект сообщество молодых сисадминов
|
|
| |
Death | Дата: Пятница, 28.10.2011, 21:33 | Сообщение # 3 |
Знакомый
Группа: Пользователи
Сообщений: 20
Статус: Offline
| Смущают задачи. Проверим, обязательно. Благодарю
|
|
| |
Seqular | Дата: Пятница, 28.10.2011, 21:41 | Сообщение # 4 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: Offline
| Кстати, вначале MAXm := 1; и MAXp := первое найденное произведение. Потому как если все остальные будут меньше первого, нужно переменные как-то вывести!
Поддерживаю также проект сообщество молодых сисадминов
|
|
| |
Death | Дата: Понедельник, 21.11.2011, 05:05 | Сообщение # 5 |
Знакомый
Группа: Пользователи
Сообщений: 20
Статус: Offline
| Все равно не понятно. Не получается и все. Пробовал вот так - фигню выдает. Если вводить число элементов n=5, то maxm=5. Причем при разных вводимых значениях.
Code var n,k,m,maxm:integer; p,maxp: real; x:array [1..5] of real;
begin writeln('input n'); readln(n); writeln('input x of ',n,' elements'); for k:=1 to n do read(x[k]);
MAXm := 0; MAXp := 0; For m := 2 to n do Begin P:= 1; For k := 1 to m do Begin P := P * X[k] * X[k]; End; if (P > MAXp) then MAXm := m; End; writeln('maxm= ',maxm); readln end.
Сообщение отредактировал Death - Понедельник, 21.11.2011, 05:07 |
|
| |
Seqular | Дата: Понедельник, 21.11.2011, 18:06 | Сообщение # 6 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: Offline
| Нужно добавить переприсвоение MAXp. Иначе поиск максимального не имеет смысла.
Поддерживаю также проект сообщество молодых сисадминов
|
|
| |
Death | Дата: Вторник, 22.11.2011, 02:27 | Сообщение # 7 |
Знакомый
Группа: Пользователи
Сообщений: 20
Статус: Offline
| Не пойму в каком месте? И нужно ли MAXm := 1; и MAXp :=0?
|
|
| |
Seqular | Дата: Вторник, 22.11.2011, 08:51 | Сообщение # 8 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: Offline
| где MAXm := m там в этой же итерации MAXp := p; получается, в begin-end это заключить, оба оператора.
Поддерживаю также проект сообщество молодых сисадминов
|
|
| |
Death | Дата: Понедельник, 12.12.2011, 06:03 | Сообщение # 9 |
Знакомый
Группа: Пользователи
Сообщений: 20
Статус: Offline
| Попробовал вот так. Все равно не совсем понятно, в чем ошибка. Code var n{число элементов массива},k,{счетчик элементов массива}m,maxm:integer; p,maxp: real; x:array [1..5] of real;
begin writeln('input n'); readln(n); writeln('input x of ',n,' elements'); for k:=1 to n do read(x[k]);
MAXm := 0; MAXp := X[1]*X[1]; For m := 1 to n do Begin P:= 1;maxm:=0; For k := 2 to m do P :=P* X[k] * X[k]; if (P > MAXp) then begin MAXp := p; maxm:=k; End; p:=1;
end; writeln('maxm= ',maxm); readln; end. Добавлено (12.12.2011, 06:03) --------------------------------------------- Готово Code var n,k,m,maxm:integer; p,maxp: real; x:array [1..5] of real;
begin writeln('input n'); readln(n); writeln('input x of ',n,' elements'); for k:=1 to n do read(x[k]);
MAXm := 0; MAXp := X[1]*X[1]; For m := 2 to n do Begin P:= 1; For k := 1 to m do P :=P* X[k] * X[k]; if (P > MAXp) then begin MAXp := p; maxm:=k; End; end; writeln('maxm= ',maxm); readln; end.
|
|
| |
Seqular | Дата: Понедельник, 12.12.2011, 15:53 | Сообщение # 10 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: Offline
| Death, Молодец, если сам разобрался!
Поддерживаю также проект сообщество молодых сисадминов
|
|
| |
Death | Дата: Вторник, 13.12.2011, 02:15 | Сообщение # 11 |
Знакомый
Группа: Пользователи
Сообщений: 20
Статус: Offline
| Не сам
|
|
| |
Seqular | Дата: Вторник, 13.12.2011, 14:08 | Сообщение # 12 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: Offline
| Death, да не суть важно )) проблема решена. поэтому УРА!
Поддерживаю также проект сообщество молодых сисадминов
|
|
| |