Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите переделать маленький код с паскаля на делфи [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?


Наверх

Титульная страница Поиск, карта сайта Написать письмо