![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите переделать маленький код с паскаля на делфи [D7]
artyoms © (2012-10-28 17:11:00)program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;
type Pere=array [byte] of byte;
var N,i,j:byte;
X:Pere;
Yes:boolean;
procedure Next(var X:Pere;var Yes:boolean);
var i:byte;
procedure Swap(var a,b:byte); {обмен переменных}
var c:byte;
begin c:=a;a:=b;b:=c end;
begin
i:=N-1;
{поиск i}
while (i>0)and(X[i]>X[i+1]) do dec(i);
if i>0 then
begin
j:=i+1;
{поиск j}
while (j<N)and(X[j+1]>X[i]) do inc(j);
Swap(X[i],X[j]);
for j:=i+1 to (N+i) div 2 do Swap(X[j],X[N-j+i+1]);
Yes:=true
end
else Yes:=false
end;
var a: array [1..4] of integer;
begin
a[1]:=2;
a[2]:=3;
a[3]:=4;
a[4]:=5;
write('N=');readln(N);
for i:=1 to N do X[i]:=i;
repeat
for i:=1 to N-1 do write(a[X[i]]);writeln;
Next(X,Yes)
until not Yes;
Readln;
end.
Собственно сам код, его нужно перенести на делфи где есть форма, добавить там кнопку по нажатию которой производились бы расчёты, write заменить на ShowMessage();
brother (2012-10-29 16:45:00) [1]имхо, для него это не обрывки, а незнание синтаксиса:
procedure TForm1.Button1Click(Sender: TObject);
a: array [1..4] of integer;
begin
O_o
icWasya (2012-10-29 09:51:00) [2]А теперь аккуратно перепиши всё, что у тебя получилось, правильно оформи отступы в блоках begin end, и внимательно посмотри, где начинаются и кончаются процедуры. А если постить код сюда, то обрамлять тегами
код. И не обрывки, а целиком.
artyoms (2012-10-28 17:50:00) [3]тут не важно как реализовать либо через 2 кнопки и листбокс, либо как хочу я в виде вывода сообщений (сколько вариантов перестановок столько и сообщений) по нажатию кнопки , массив а[i] задаётся так, потому что он экспериментальный (всё это уйдёт потом в другой проект.
procedure TForm1.Button1Click(Sender: TObject);
a: array [1..4] of integer;
begin
a[1]:=2;
a[2]:=3;
a[3]:=4;
a[4]:=5;
for i:=1 to 4 do X[i]:=i;
repeat
for i:=1 to 3 do ShowMessage(inttostr(a[X[i]]));
Next(X,Yes);
until not Yes;
end;
вот так у меня выглядит код обработки нажатия кнопки, ошибка что у меня, что если сделать как написали Вы останется та же
строка Next(X,Yes); красная, ошибка
MBo (2012-10-28 17:36:00) [4]Из меню File-New-Application создай новое приложение VCL (с формой).
Положи на неё пару кнопок и ListBox
1. Напиши функцию ArrayToString, которая формирует строку с содержимым массива
2. В обработчике первой кнопки выполняй сброс на начальную перестановку - задание A[i], лучше с помощью цикла for, а не как индусы, очистку ListBox, вывод массива
3. обработчик второй кнопки вызывает Next, вывод текущей перестановки
artyoms (2012-10-28 17:31:00) [5]я знаю что это прога на делфи) но она там не работает. Я перенёс процедуру туда, все глобальные переменные, в кнопку вставил код из тела проги (удалив readln и заменив writln на показать_сообщение, однако компилятор заругался - Next(X,Yes) не актуальные параметры
Rouse_ (2012-10-28 17:18:00) [6]Это программа на дельфи. Ты хочешь перевести программу с дельфи на дельфи и write заменить на ShowMessage?