Форум: "Основная";
Текущий архив: 2017.06.18;
Скачать: [xml.tar.bz2];
ВнизПомогите переделать маленький код с паскаля на делфи Найти похожие ветки
← →
artyoms © (2012-10-28 17:11) [0]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();
← →
Rouse_ © (2012-10-28 17:18) [1]Это программа на дельфи. Ты хочешь перевести программу с дельфи на дельфи и write заменить на ShowMessage?
← →
artyoms © (2012-10-28 17:31) [2]я знаю что это прога на делфи) но она там не работает. Я перенёс процедуру туда, все глобальные переменные, в кнопку вставил код из тела проги (удалив readln и заменив writln на показать_сообщение, однако компилятор заругался - Next(X,Yes) не актуальные параметры
← →
MBo © (2012-10-28 17:36) [3]Из меню File-New-Application создай новое приложение VCL (с формой).
Положи на неё пару кнопок и ListBox
1. Напиши функцию ArrayToString, которая формирует строку с содержимым массива
2. В обработчике первой кнопки выполняй сброс на начальную перестановку - задание A[i], лучше с помощью цикла for, а не как индусы, очистку ListBox, вывод массива
3. обработчик второй кнопки вызывает Next, вывод текущей перестановки
← →
artyoms © (2012-10-28 17:50) [4]тут не важно как реализовать либо через 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); красная, ошибка
← →
icWasya © (2012-10-29 09:51) [5]А теперь аккуратно перепиши всё, что у тебя получилось, правильно оформи отступы в блоках begin end, и внимательно посмотри, где начинаются и кончаются процедуры. А если постить код сюда, то обрамлять тегами
код
. И не обрывки, а целиком.
← →
brother © (2012-10-29 16:45) [6]имхо, для него это не обрывки, а незнание синтаксиса:
procedure TForm1.Button1Click(Sender: TObject);
a: array [1..4] of integer;
begin
O_o
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2017.06.18;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.001 c