Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2016, 18:27   #1
yana1996
Пользователь
 
Регистрация: 02.12.2015
Сообщений: 38
По умолчанию Работа с подпрограммами

Пожалуйста помогите переделать Код под Графический интерфейс ...
Зарание спасибо !!!

Код:
const nmax=100;
type mas=array[1..nmax] of real;
procedure Vvod(var a:mas;var n:integer;c:char);
var i:integer;
begin
repeat
write('Размер массива ',c,' до ',nmax,' n=');
readln(n);
until n in [1..nmax];
for i:=1 to n do
a[i]:=10*random;
clrscr;
end;
procedure Vyvod(a:mas;n:integer;c:string);
var i:integer;
begin
writeln(c);
for i:=1 to n do
write(a[i]:5:2);
writeln;
end;
procedure Hill(var a:mas;n:integer);
var i,j,k,imn,p:integer;
     x:real;
begin
k:=n div 2; //количество перестановок
for i:=1 to k do
 begin
  imn:=i; //найдем 1 минимальный в еще не отсортированных
  for j:=i+1 to n-i+1 do
  if a[j]<a[imn] then imn:=j;
  x:=a[imn];//нашли
  for p:=imn downto i+1 do //здвинем на него часть массива впереди
  a[p]:=a[p-1];
  a[i]:=x;//вставим элемент на место в первой части массива
  imn:=i+1;//ищем второй минимальный
  for j:=i+1 to n-i+1 do
  if a[j]<a[imn] then imn:=j;
  x:=a[imn];//нашли
  for p:=imn to n-i do //сдвинем на него часть массива впереди
  a[p]:=a[p+1];
  a[n-i+1]:=x;//вставим на место во второй части массива
 end;
end;
var a,b,c:mas;
    na,nb,nc:integer;
begin
randomize;
Vvod(a,na,'A');
Vvod(b,nb,'B');
Vvod(c,nc,'C');
Vyvod(a,na,'Исходный массив А');
Hill(a,na);
Vyvod(a,na,'Отсортированный массив А');
Vyvod(b,nb,'Исходный массив B');
Hill(b,nb);
Vyvod(b,nb,'Отсортированный массив B');
Vyvod(c,nc,'Исходный массив C');
Hill(c,nc);
Vyvod(c,nc,'Отсортированный массив C');
end.
yana1996 вне форума Ответить с цитированием
Старый 26.03.2016, 14:42   #2
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,981
По умолчанию

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    Memo1: TMemo;
    Memo2: TMemo;
    Memo3: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

const nmax=100;
type mas=array[1..nmax] of real;

procedure Vvod(var a:mas;n:integer);
var i:integer;
begin
   for i:=1 to n do
      a[i]:=10*random;
end;

procedure Vyvod(a:mas;n:integer;c:string;Memo:TMemo);
var i:integer;
begin
   Memo.Lines.Add('');
   Memo.Lines.Add(c);
   for i:=1 to n do
      Memo.Lines.Add(FloatToStr(a[i]));
end;

procedure Hill(var a:mas;n:integer);
var i,j,k,imn,p:integer;
     x:real;
begin
k:=n div 2; //количество перестановок
for i:=1 to k do
 begin
  imn:=i; //найдем 1 минимальный в еще не отсортированных
  for j:=i+1 to n-i+1 do
  if a[j]<a[imn] then imn:=j;
  x:=a[imn];//нашли
  for p:=imn downto i+1 do //здвинем на него часть массива впереди
  a[p]:=a[p-1];
  a[i]:=x;//вставим элемент на место в первой части массива
  imn:=i+1;//ищем второй минимальный
  for j:=i+1 to n-i+1 do
  if a[j]<a[imn] then imn:=j;
  x:=a[imn];//нашли
  for p:=imn to n-i do //сдвинем на него часть массива впереди
  a[p]:=a[p+1];
  a[n-i+1]:=x;//вставим на место во второй части массива
 end;
end;




procedure TForm1.Button1Click(Sender: TObject);
var a,b,c:mas;
    na,nb,nc:integer;
begin
   randomize;
   na:=StrToInt(Edit1.Text);
   nb:=StrToInt(Edit2.Text);
   nc:=StrToInt(Edit3.Text);
   Vvod(a,na);
   Vvod(b,nb);
   Vvod(c,nc);
   Vyvod(a,na,'Исходный массив А',Memo1);
   Hill(a,na);
   Vyvod(a,na,'Отсортированный массив А',Memo1);
   Vyvod(b,nb,'Исходный массив B',Memo2);
   Hill(b,nb);
   Vyvod(b,nb,'Отсортированный массив B',Memo2);
   Vyvod(c,nc,'Исходный массив C',Memo3);
   Hill(c,nc);
   Vyvod(c,nc,'Отсортированный массив C',Memo3);
end;

end.
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с подпрограммами Евгения17 Помощь студентам 2 13.08.2012 18:41
Работа с подпрограммами Karina_Vamp Помощь студентам 3 01.03.2011 20:49
Подпрограммами DrDre9991 Паскаль, Turbo Pascal, PascalABC.NET 1 12.09.2010 07:26
работа с прерываниями, подпрограммами, строками в ассемблере. Марияzzz Помощь студентам 0 30.04.2010 16:08
работа с подпрограммами в защищенном режиме x86 =termi= Помощь студентам 1 19.01.2010 12:22