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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2019, 03:30   #1
seriy_volk 228
Новичок
Джуниор
 
Регистрация: 23.10.2019
Сообщений: 3
Лампочка Delphi 7, задача с массивами

Всем доброго времени суток! Помогите, пожалуйста, не работает подпрограмма сортировки.

Условие задачи: Даны векторы A, B, C, D. Построить матрицу P, строками которой соответственно являются векторы A, B, C, D, предварительно упорядоченные в порядке убывания. Упорядочение вектора в порядке убывания оформить в виде подпрограммы. Исходные данные:
A={0.5; 1.8; 2.35; 4.1};
B={0.15; -0.1; 2.8; 1};
C={3.3; 4.1; -1.5; 0.1};
D={2.25; 3.8; 0.45; -4.1}.

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, StdCtrls, OleCtnrs, AxCtrls, OleCtrls, VCF1;

type
matr=array [1..4,1..4] of real;
  arr=array [1..4] of real;
  TForm1 = class(TForm)
    F1Book1: TF1Book;
    OleContainer1: TOleContainer;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    procedure N3Click(Sender: TObject);
    procedure N1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  v:matr;
  a,b,c,d:arr;
  const
  n=4;

implementation

{$R *.dfm}

procedure sort(x:arr);
var i,j:integer; buf:real;
begin
for i:=1 to n do
    for j:=1 to n-i do
            if (x[j] > x[j+1]) then
                 begin
                    buf := x[j];
                    x[j] := x[j+1];
                    x[j+1] := buf;
                end;
end;

procedure TForm1.N3Click(Sender: TObject);
begin
close
end;

procedure TForm1.N1Click(Sender: TObject);
var i:integer; f:textfile;
begin
label1.caption:='A=  ';
label2.caption:='B=  ';
label3.caption:='C=  ';
label4.caption:='D=  ';
reset(F,'x.txt');
for i:=1 to 4 do read(F,a[i]);
for i:=1 to 4 do read(F,b[i]);
for i:=1 to 4 do read(F,c[i]);
for i:=1 to 4 do read(F,d[i]);
sort(a);sort(b);sort(c);sort(d);
for i:=1 to 4 do begin label1.caption:=label1.caption+floattostr(a[i])+'  ';
label2.caption:=label2.caption+floattostr(b[i])+'  ';
label3.caption:=label3.caption+floattostr(c[i])+'  ';
label4.caption:=label4.caption+floattostr(d[i])+'  ';
end;
n2.Enabled:=true;
end;



end.
seriy_volk 228 вне форума Ответить с цитированием
Старый 24.12.2019, 08:50   #2
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Код:
procedure sort(x:arr);
Что-бы результат возвращался нужно переменную объявить как var, иначе вы будете работать с локальной копией без возврата результата.
Код:
procedure sort(var x:arr);
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача с массивами grooveone Паскаль, Turbo Pascal, PascalABC.NET 3 12.02.2014 22:23
Задача с массивами (Delphi) DiZeLSaN Помощь студентам 7 20.01.2014 08:46
Задача с массивами Лиза_ Паскаль, Turbo Pascal, PascalABC.NET 2 17.11.2012 18:36
Задача с массивами investr Паскаль, Turbo Pascal, PascalABC.NET 1 30.11.2011 21:43
Задача с массивами 11twin11 Общие вопросы C/C++ 2 09.02.2009 23:27