![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ВОПРОСЫ АЛГОРИТМОВ!
crazy_corpse © (2006-07-14 15:09:00)ПРЕДЛОЖЕНИЕ:
Предлагаю в этом раздельчике писать свои задачи и решения для них, главным здесь будет являться алгоритм решения. Использование каких-то компонентов делфи и вопросы программирования в делфи будет обсуждаться только если это непосредственно может помочь при решении задачи
ПРИЧИНА:
В инете трудно искать алгоритмы некоторых задач, а если здесь начать собирать некоторое подобие задачника то это мне как кажеться будет ничего себе.
ПОЧЕМУ ЗДЕСЬ?
Да потому что тут то все мастера и "вертяться" )). Помогут подскажут.
Еще одним условие или как бы желанием будет улучшение алгоритмов этим мастерами. Надеюсь помогут.
crazy_corpse (2006-07-16 16:54:00) [1]Кстати может быть кто подскажет я из делфы код вынимаю ctrl-c сюда вставляю ctrl-v а коменты вон во что превращаються какой тут шрифт надод в делфе поставить чтоб так не было.
crazy_corpse (2006-07-16 16:53:00) [2]НЕ получились коментарии ну ладно если че я готов все объяснить
Последняя процедура:procedure TForm1.Button4Click(Sender: TObject);
const
dx=20;
dy=20;
lr=6;
var
//äëÿ ñîðòèðîâêè
i:integer;
min:real;
imin,s:integer;
temp_y:array [1..nmax] of real;
// ðèñîâàíèå
WI,HI:integer;
l,v:integer;
drx,dry:integer;
ky:array [1..nmax] of integer;
ymash:real;
//ãðàôèê
gx,gy:real;
px,py:longint;
y0:integer;
begin
memo1.Visible:=false;
for i:=1 to n do
temp_y[i]:=y[i];
////////////èùåì ìàêñèìóì/////////////////
for s:=1 to n-1 do begin
min:=temp_y[s];
imin:=s;
for i:=s+1 to n do
if temp_y[i]
crazy_corpse (2006-07-16 16:51:00) [3]Ладно забудем об этой задачке ее портировать на делфи все равно тупо. Вот еще одна задачка:
Написать в одном модуле алгоритм аппроксимации рядом Фурье и всю визуальную работу с ним, че то типа этого вот че я наваял.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons;
type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
Button1: TButton;
Button2: TButton;
Label2: TLabel;
Edit2: TEdit;
Button3: TButton;
Memo1: TMemo;
Button4: TButton;
Image1: TImage;
BitBtn1: TBitBtn;
Label3: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
const
nmax=100;// ìàêñèìàëüíîå êîëëè÷åñòâî òî÷åê
kmax=5;// ìàêñèìàëüíîå êîëëè÷åñòâî ãàðìîíèê
var
n:integer=1;//êîëëè÷åñòâî òî÷åê
k:integer=3;//êîëëè÷åñòâî ãàðìîíèê
y:array [1..nmax] of real; // ìàññèâ òî÷åê êîòîðûå íàäî àïïðîêñèìèðîâ 224;òü
a0:real;//ïåðâûé ÷ëåí ðÿäà
suma,sumb:array [1..kmax] of real;//îñòàëüíûå ÷ëåíû ðÿäà
sa,sb:array [1..kmax] of string;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
label1.Caption:='Ââåäèòå '+inttostr(n)+'-óþ òî÷êó (íå áîëåå '+inttostr(nmax)+' òî÷åê)';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
//ââîäèì òî÷êè â ìàññèâ åñëè èõ êîëè÷åñòâî íå ïðåâûøàåò ìàêñèìàëüíîãî
if n
Virgo_Style (2006-07-16 13:54:00) [4]вероятно, подразумевалось raise EOutOfRange.Create(...)
crazy_corpse (2006-07-16 13:36:00) [5]А вот с try.. except.. мне вот что не понятно MyError какого класса он мне выдает ее как неизвестную переменую.
crazy_corpse (2006-07-16 12:31:00) [6]Я не притворялся что это не для себя и в любом случае человек делает все исключительно только для своей пользы. Но не зависимо от этого хотелось бы услышать умные коментарии по алгоритмам. Эти задачи меня попросили решить в PASCAL, я решил там их еще много. Вот для себя то я и хочу узнать как бы это делать побыстрее да получше вот цель превалирующая. Но в то же время уверен что комуто это все таки пригодиться.
Footballer (2006-07-16 00:30:00) [7]crazy_corpse © (14.07.06 17:02) [12]
тут она че то по кругу начала того. В паскале проще в этом смысле
//че надо сделать?
А надовсего-навсего исправить опечатку!
> while (eps<0) or (eps<1) do begin
while (eps<0) or (eps >1) do begin
Footballer (2006-07-16 00:26:00) [8]Согласен с Virgo_Style © (14.07.06 20:18) [21]
> Не надо было притворяться, что это не для себя %-)
crazy_corpse (2006-07-16 00:08:00) [9][25] Галинка © (15.07.06 19:11)
вот это уже обнадеживает)) спасибо ПРОДОЛЖИМ?
Галинка (2006-07-15 19:11:00) [10]Примим правила игры (хотя может это и не правильно).
Проверку правильности ввода я бы сделала не по нажатию кнопки "Считать", а по выходу из самого Едита. т.е. в событии OnExit. и делается она элегантнее в защищенном блоке try ... except.... Типа такого:
procedure Form1.Edit1OnExit(...);
try
eps:=strtofloat(edit1.text);
if (eps<0) or (eps>1) then MyError=EOutOfRange;
except
on EConvertError do MessageBox(0,'Недопустимое знчение !','ОШИБКА',0);
on EOutOfRange do MessageBox(0,'Недопустимое знчение !','ОШИБКА',0);
end;
end;
TUser (2006-07-15 08:08:00) [11]crazy_corpse © (14.07.06 15:59) [6]
Введите некоторое количество вещественных чисел. Определить произведение минимального и максимального из них.
Да, это трудновато найти в интернете.
crazy_corpse © (14.07.06 15:59) [6]
Ну как мне кажеться числа надо вводить в массив и потом сортировать его. А как вам?
Мне так не кажется, т.к. проще и быстрее один раз пробежать по массиву, найдя минимум и максимум. Не за чем его сортировать. Но можешь заюзать один из сотен алгоритмов сортировки, если тебе так проще.
Мой совет автору - решил свои задачи, положи их под сукно на пару недель. Эту пару недель потрать на решение других задач, чуть посложнее. Потом вынимай из-под сукна и думаю - надо их постить на форум или нет.
Leonid Troyanovsky (2006-07-14 22:05:00) [12]
> Игорь Шевченко © (14.07.06 22:01) [22]
> В любом случае правила читать - оно неплохо.
And, в частном случае, графоманство - это плохо.
--
Regards, LVT.
Игорь Шевченко (2006-07-14 22:01:00) [13]В любом случае правила читать - оно неплохо.
Virgo_Style (2006-07-14 20:18:00) [14]Не надо было притворяться, что это не для себя %-)
P.S. Сортировать массив для того, чтобы выбрать минимальный и максимальный элемент??? У-у-у-у... Как все запущено %-)
crazy_corpse (2006-07-14 19:25:00) [15]Удалено модератором
Zeqfreed (2006-07-14 18:08:00) [16]Выражение «детский сад в другом месте» было бы как нельзя кстати… Просто мысли в слух, не обращайте внимание, продолжайте.
crazy_corpse (2006-07-14 17:47:00) [17]я конечно понимаю, что точно можно через обработчик события клавиатуры обработать но че то мне кажеться это мутырным так что давайте об этом поговорим.
crazy_corpse (2006-07-14 17:45:00) [18]где это?
Плохиш (2006-07-14 17:41:00) [19]В азбуке "Делфи за 21 секунду" всё хорошо расписано.
crazy_corpse (2006-07-14 17:37:00) [20]ну так может подскажите как правильно и без особых усилий проверить поподает ли число из edit в диапазон?
в паскале то пишу типа в этом цикле readln(eps) к примеру, а здесь так нельзя. Вот и посоветуйте начинающим как получше фисла в программу вводить!