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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2014, 10:33   #1
Liliya1993
Пользователь
 
Регистрация: 07.12.2014
Сообщений: 10
Восклицание lazarus переместить элементы массива

Здравствуйте, помогите пожалуйста с задачкой.. я написала, но не правильно мне она выводит, не могу понять в чем проблема(( Задача: "Записать элементы массива X = (x1,x2,... ,x15), сдвинув его элементы влево на четыре позиции, в массив Y = (y1,y2,... ,y15). При этом четыре элемента, стоящие в начале массива X, перемещаются в конец: (y1,y2,... ,y15) = (x5,x6,... ,x15,x1,x2,x3,x4). Поменять местами минимальный и максимальный элемент массива Y ." посмотрите пожалуйста код, что в нем не так?(
Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
var i,j, n : byte ; X: array [1..20] of integer; max,min, t:integer;
begin
n:=StrToInt(InputBox('Ввод элементов массива','Размер массива n=',' '));
For i:=1 to n do begin
x[i]:= StrToInt(InputBox('Ввод элементов массива','Введите'+IntToStr(i)+'элемент',' '));
Edit1.Text:=Edit1.Text+IntToStr(x[i])+' '; end;
t:=x[1];
for i:=1 to n-1 do
x[i]:=x[i+4];
x[n]:=t;
For j:=1 to n do
 Edit2.Text:=Edit2.Text+IntToStr(x[j])+' ';
 max:=0;
For i:=1 to n do
 If (x[i]>max) then max:=x[i];
min:=20;
For i:=1 to n do
 If (x[i]<min) then min:=x[i];
 Label3. Caption:= 'Минимальный элемент = '+IntToStr (min) ;
 Label4. Caption:= 'Максимальный элемент = '+IntToStr (max);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

end.
        


for i:=1 to n do
begin
t:=x[1];
x[i]:=x[i+4];
x[n]:=t;
end;

Последний раз редактировалось Stilet; 24.12.2014 в 10:53.
Liliya1993 вне форума Ответить с цитированием
Старый 24.12.2014, 11:04   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Предлагаю делать так:
Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type
  TArray=array of integer;

  { TForm1 }

  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
    function punch(arr:TArray;n:integer):TArray;
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
var a,b:TArray;  i:integer;
begin
  SetLength(a,10);
  for i:=Low(a) to High(a) do a[i]:=i;
  b:=punch(a,4);
  for i:=Low(a) to High(a) do
   Memo1.Lines.Append(format('%10d%10d',[a[i],b[i]]));
  SetLength(a,0); SetLength(b,0);
end;

function TForm1.punch(arr: TArray; n: integer): TArray;
var j,i:integer;
begin
 SetLength(Result,Length(arr)); j:=0;
 for i:=n to High(arr) do begin Result[j]:=arr[i]; inc(j); end;
 for i:=Low(arr) to n-1 do begin Result[j]:=arr[i]; inc(j); end;
end;

end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.12.2014, 11:21   #3
Liliya1993
Пользователь
 
Регистрация: 07.12.2014
Сообщений: 10
По умолчанию

Я не могу форму под код создать) Вы не могли бы мне скинуть архив с программой, буду вам очень благодарна))

он не выводит массивы в memo1(((

Последний раз редактировалось Stilet; 24.12.2014 в 11:55.
Liliya1993 вне форума Ответить с цитированием
Старый 24.12.2014, 11:56   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А как же ты свой код сделала?
Если не можешь вставить правильно программу в обработчик создания формы - бери ее тело и вставляй в обработчик клика кнопки, как у тебя.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти минимальный и максимальный элементы массива Х и поменять их в массиве местами. Элементы массива вычисляются по формуле Xi=(( Милашечка Помощь студентам 0 26.05.2013 13:01
Дан одномерный массив. Переместить максимальные элементы в конец, сдвинув остальные элементы влево Alexbmgn Помощь студентам 2 18.12.2011 17:17
Элементы матрицы. Все ненулевые элементы массива D(k) расположить в начале массива E(k) и подсчитать их к Вася Маклауд Помощь студентам 0 03.04.2011 17:21
1.Найти в матрице первую строку, все элементы которой отрицательны 2.отсортировать элементы массива по в w0lf16 Помощь студентам 2 22.11.2009 15:47