Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2014, 13:05   #1
ALEXandr20333
Пользователь
 
Регистрация: 12.02.2014
Сообщений: 76
По умолчанию Найти максимальный из его локальных минимумов в массиве (Delphi)

Дан массив размера N. Найти максимальный из его локальных минимумов (локальный минимум -это элемент, который меньше любого из своих соседей).
ALEXandr20333 вне форума Ответить с цитированием
Старый 12.02.2014, 13:24   #2
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Код:
for i:=1 to n-1 do
if (arr[i] < arr[i-1]) and (arr[i] < arr[i+1]) and (arr[min_i] < arr[i]) then min_i:=i;
writeln(arr[min_i]);
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 12.02.2014, 15:32   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Vanta11a, извините, а в вашем случае массив как объявлен?
Дело в том, что если массив индексируется от 1 (как я предполагаю, судя по n-1), то, вот это:
Цитата:
Код:
if (arr[i] < arr[i-1]) ...
неверно! Это выход за пределы массива...

ну и желательно в примере показать, что min_i должен быть обязательно проиницилизирован ДО цикла!


p.s. не знаю, как в понятии "локальный минимум" трактуются крайние элементы (первый и последний элементы массива), которые имеют по одному "соседу".
Если игноруются, то достаточно цикл for начать от 2-го элемента массива...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.02.2014, 11:08   #4
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Цитата:
извините, а в вашем случае массив как объявлен?
Код:
arr:array [0..n] of real;
Да, я игнорирую первый(нулевой) и последний элементы массива в переборе.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 13.02.2014, 13:11   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Vanta11a Посмотреть сообщение
Код:
arr:array [0..n] of real;
ясно.
ну, формально, это не совсем соответствует заданию:
Цитата:
Дан массив размера N.
У Вас размер массива N+1 получается.
Но это легко поправить (если в этом вообще есть необходимость).

Цитата:
Сообщение от Vanta11a Посмотреть сообщение
Да, я игнорирую первый(нулевой) и последний элементы массива в переборе.
Понятно. А это Вы сами так решили или знаете, что это так? Лень гуглить, поэтому и спрашиваю...
Я бы тоже так же поступил, раз у крайних элементов нет всех соседей, то они не могут претендовать на высокое звание локальных минимумов!
Но, на самом деле, может быть, наука по другому считает!


p.s. а автор топика, между тем, ещё тему создал: Найти максимальный из его локальных минимумов
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.02.2014, 14:09   #6
ALEXandr20333
Пользователь
 
Регистрация: 12.02.2014
Сообщений: 76
По умолчанию что надо кинуть на форму

помогите переделать код в делфи (и что надо кинуть на форму)
Код:
var
i:integer; // счетчик в цикле 
min:integer; // максимальный из локальных минимумов 
N:integer;
a: array [1..10] of integer;
bol:boolean; //флаг нахождения первого локального минимума 
begin
// ввод данных 
writeln('Введите N (N<=10)');
readln(N);
// ручной ввод значений массива 
for i:=1 to n do
begin
write('a[',i,']=');
readln(A[i]);
end;
min:=0; // начальное значение переменной 
bol:=false; // начальное значение переменной 
for i:=2 to n-1 do
begin
if (a[i]//проверка элемента на локальный минимум 
begin
// если локальный минимум не первый и приэтом больше максимального локального минимума 
if bol and (minthen min:=a[i];
if (not bol) then //если локальный минимум первый 
begin min:=a[i]; bol:=true; end;
end;
end;
end;
// вывод результата 
writeln('максимальный из локальных минимумов = ',min);
end.

Последний раз редактировалось Stilet; 13.02.2014 в 14:22.
ALEXandr20333 вне форума Ответить с цитированием
Старый 13.02.2014, 14:31   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от ALEXandr20333 Посмотреть сообщение
помогите переделать код в делфи (и что надо кинуть на форму)
А зачем Вам на форму что-то кидать?!
Создайте в Delphi консольный проект, вставьте туда этот свой код, получите КОНСОЛЬНОЕ приложение.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Максимум локальных минимумов Bloody Mary Паскаль, Turbo Pascal, PascalABC.NET 0 29.11.2012 14:57
В двумерном массиве найти минимальный максимальный элемент в строке\столбце Proskurina Паскаль, Turbo Pascal, PascalABC.NET 6 08.09.2012 21:14
В двумерном массиве найти минимальный максимальный элемент в строке\столбце Proskurina Помощь студентам 3 08.09.2012 11:07
Создать функцию Max, которая находит в заданном целочисленном массиве максимальный элемень и возвращает его. массив передается в к devs Помощь студентам 2 21.12.2011 11:40