Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 08.05.2010, 13:55   #1
кристина19
 
Регистрация: 08.05.2010
Сообщений: 8
Вопрос как вывести на экран локальные минимумы в среде delphi ?

Здравствуйте. Мне по программированию дали задачи. Вычислить среднее арифметическое элементов массива, после этого найти и вывести на экран все локальные минимумы данного массива. С первой задачей я справилась, а как вторую делать не доходит. Может кто знает или объяснит хотя бы ? Просто предмет появился впервые, у меня физико-математическое образование, так что delphi даётся тяжеловато ) заранее спасибо.

что такое локальный минимум я знаю ( в моём одномерном массиве - это элемент меньший двух своих соседей по бокам). за ссылки на полезную теорию или минимальные объяснения также буду благодарна =)
кристина19 вне форума Ответить с цитированием
Старый 08.05.2010, 14:13   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,103
По умолчанию

Цитата:
что такое локальный минимум я знаю ( в моём одномерном массиве - это элемент меньший двух своих соседей по бокам).
Так в чем проблема? Готов алгоритм... Берем 3 элемента, если средний меньший - лок. минимум. Сдвигаемся на одну позицию, повторяем. Отдельно подумать над первым и последним.
p51x вне форума Ответить с цитированием
Старый 08.05.2010, 14:15   #3
кристина19
 
Регистрация: 08.05.2010
Сообщений: 8
По умолчанию

ок. спасибо ) когда будет готов полный вариант, выложу сюда. вместе посмотрим )
кристина19 вне форума Ответить с цитированием
Старый 08.05.2010, 15:54   #4
кристина19
 
Регистрация: 08.05.2010
Сообщений: 8
По умолчанию

так, ну вот я и вернулась ) прога работает , но с ошибкой. она мне почему-то выводить лишь один один лок.минимум, когда я явно задала элементы массива так, чтобы их было 2. ну и номер элемента выводит равным самому элементу.

например :

42 25 34 11 12

лок. минимум : 11

номер элемента : 11

это мне комп выводит. прога работает как-то не до конца.


вот мой код ( копирну всю прогу) :


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls;

type
TForm1 = class(TForm)
Label1: TLabel;
StringGrid1: TStringGrid;
Button1: TButton;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

const

SIZE=5;

var

a : array[1..SIZE] of integer; // массив целых чисел
i: integer; // индекс
lokM: integer;// локальный минимум

begin

// ввод массива

// считаем, что если ячейка пустая, то соответствующий

// ей элемент массива равен нулю

for i:= 2 to SIZE do

if Length(StringGrid1.Cells[i-1, 0]) <>0

then a[i] := StrToInt(StringGrid1.Cells[i-1,0])

else a[i] := 0;

// обработка массива

for i :=1 to SIZE do

if (a[i] < a[i-1]) and (a[i] < a[i + 1]) then lokM:=a[i];

// вывод результата

Label2.Caption := 'Локальный минимум: ' + IntToStr(lokM) + #13+'номер элемента:' + FloatToStr(lokM);

end;
end.
кристина19 вне форума Ответить с цитированием
Старый 08.05.2010, 16:29   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,103
По умолчанию

Код:
'номер элемента:' + FloatToStr(lokM);
Что сказали то и выводит.

Код:
Label2.Caption :=
Вы перезатираете последним найденным локальным минимумом.

Заюзайте Мемо иличто-то подобное.
p51x вне форума Ответить с цитированием
Старый 08.05.2010, 16:36   #6
кристина19
 
Регистрация: 08.05.2010
Сообщений: 8
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Код:
'номер элемента:' + FloatToStr(lokM);
Что сказали то и выводит.

Код:
Label2.Caption :=
Вы перезатираете последним найденным локальным минимумом.

Заюзайте Мемо иличто-то подобное.

не поняла про мемо. а можно как-то иначе ?
кристина19 вне форума Ответить с цитированием
Старый 08.05.2010, 16:36   #7
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,234
По умолчанию

Код:
Label2.Caption := Label2.Caption + 'Локальный минимум: ' + IntToStr(lokM) + #13+'номер элемента:' + FloatToStr(lokM);
Alter вне форума Ответить с цитированием
Старый 08.05.2010, 16:40   #8
кристина19
 
Регистрация: 08.05.2010
Сообщений: 8
По умолчанию

Alter, программа в итоге всё равно выводит лишь последний локальный минимум.
кристина19 вне форума Ответить с цитированием
Старый 08.05.2010, 17:35   #9
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию странно.....что только последний))

скопипасть ещё раз код ( как он теперь выглядит ) и выложи исходник. Попробуем разобраться.
против абортов=за + жизнь;.фкн вгу;_______________________мойблг
vedro-compota вне форума Ответить с цитированием
Старый 08.05.2010, 17:46   #10
Fuadik
Пользователь
 
Регистрация: 22.01.2010
Сообщений: 37
По умолчанию Локальный минимум

Поместите на форму ListBox и Button.
#
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
c: string;
begin
ListBox1.Clear;
for i:=2 to kol_vo-1 do
begin
if ((m[i]<m[i-1]) and (m[i]<m[i+1])) then
begin
c:=FloatToStr(m[i]);
ListBox1.Items.Add(c);
end;

end;
end;
#

m, kol_vo массив и кол-во элементов в массиве соответственно
Fuadik вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме от 7000 рублей в месяц



Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вывести на экран \n в С++ nicklan Общие вопросы C/C++ 4 30.03.2010 16:02
как вывести текст на экран (TASM) Аlex Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 05.03.2010 19:53
Delphi. вывести на экран таблицу world12_tk Помощь студентам 2 18.10.2009 16:26
Как вывести на экран... (Делфи)!!! DjVidan Помощь студентам 14 09.03.2009 16:31
Локальные минимумы и их номера. f4rr3l Паскаль, Turbo Pascal, PascalABC.NET 5 06.01.2009 21:51


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Скидки на курсы GeekBrains 40%, выбирайте программу для себя