Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
2-1443954338
Валя
2015-10-04 13:25
2017.06.18
рисование линий


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


2-1443892079
QAZ
2015-10-03 20:07
2017.06.18
несуществующий файл каторый существует


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


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский