Вторник, 07.01.2025
Pascal 4 All
[ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]

 

  • Страница 1 из 1
  • 1
Модератор форума: Seqular, Pavel  

Нахождение экстремумов
DeathДата: Четверг, 27.10.2011, 05:58 | Сообщение # 1
Знакомый
Группа: Пользователи
Сообщений: 20
Репутация: 2
Замечания: 0%
Статус: Offline
Найдите номер m наибольшего среди произведений
m
П(X[k]^2), m=2,3,...,n.
k=1

Пояснение:
k- индекс, находящийся снизу;
X-вектор, задающийся вводом;
И на всякий случай еще это:
если экстремальное значение повторяется, а надо найти его номер, считайте результатом номер первого порядка экстремума.
 
SeqularДата: Пятница, 28.10.2011, 08:28 | Сообщение # 2
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: 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. За мной перепроверяйте всё, могу перепутать. Но пока так. tongue


Поддерживаю также проект сообщество молодых сисадминов
 
DeathДата: Пятница, 28.10.2011, 21:33 | Сообщение # 3
Знакомый
Группа: Пользователи
Сообщений: 20
Репутация: 2
Замечания: 0%
Статус: Offline
Смущают задачи. Проверим, обязательно. Благодарю smile
 
SeqularДата: Пятница, 28.10.2011, 21:41 | Сообщение # 4
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Кстати, вначале MAXm := 1; и MAXp := первое найденное произведение. Потому как если все остальные будут меньше первого, нужно переменные как-то вывести!

Поддерживаю также проект сообщество молодых сисадминов
 
DeathДата: Понедельник, 21.11.2011, 05:05 | Сообщение # 5
Знакомый
Группа: Пользователи
Сообщений: 20
Репутация: 2
Замечания: 0%
Статус: 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
Репутация: 35
Статус: Offline
Нужно добавить переприсвоение MAXp. Иначе поиск максимального не имеет смысла.

Поддерживаю также проект сообщество молодых сисадминов
 
DeathДата: Вторник, 22.11.2011, 02:27 | Сообщение # 7
Знакомый
Группа: Пользователи
Сообщений: 20
Репутация: 2
Замечания: 0%
Статус: Offline
Не пойму в каком месте? И нужно ли MAXm := 1; и MAXp :=0?
 
SeqularДата: Вторник, 22.11.2011, 08:51 | Сообщение # 8
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
где MAXm := m там в этой же итерации MAXp := p; получается, в begin-end это заключить, оба оператора.

Поддерживаю также проект сообщество молодых сисадминов
 
DeathДата: Понедельник, 12.12.2011, 06:03 | Сообщение # 9
Знакомый
Группа: Пользователи
Сообщений: 20
Репутация: 2
Замечания: 0%
Статус: 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
Репутация: 35
Статус: Offline
Death, Молодец, если сам разобрался!

Поддерживаю также проект сообщество молодых сисадминов
 
DeathДата: Вторник, 13.12.2011, 02:15 | Сообщение # 11
Знакомый
Группа: Пользователи
Сообщений: 20
Репутация: 2
Замечания: 0%
Статус: Offline
Не сам biggrin
 
SeqularДата: Вторник, 13.12.2011, 14:08 | Сообщение # 12
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Death, да не суть важно )) проблема решена. поэтому УРА!

Поддерживаю также проект сообщество молодых сисадминов
 
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2025
Используются технологии uCoz
javascript:;" rel="nofollow" onclick="loginPopupForm(); return false;