Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2017.06.18;
Скачать: CL | DM;

Вниз

Помогите переделать маленький код с паскаля на делфи   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.005 c
2-1443892079
QAZ
2015-10-03 20:07
2017.06.18
несуществующий файл каторый существует


2-1444135290
lewka
2015-10-06 15:41
2017.06.18
Формат ячейки в Excel


2-1443954338
Валя
2015-10-04 13:25
2017.06.18
рисование линий


8-1235834183
sco
2009-02-28 18:16
2017.06.18
TCanvas и отрисовка #2 =)


1-1351429903
artyoms
2012-10-28 17:11
2017.06.18
Помогите переделать маленький код с паскаля на делфи