Ваш браузер устарел. Рекомендуем обновить его до последней версии.





 


 



Delphi

 

 


Урок 11     Многомерные массивы и их обработка. Компонент поле ввода-редактирования строки символов

Пример 1     Построим приложение которое формирует и выводит на экран двумерный массив 10х20 из случайных чисел в диапазоне от 0 до 9. Здесь воспользуемся компонентами Button и Label. Помни, нумерация строк и столбцов начинается с нуля.

 

unit Unit4;

interface

uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Imaging.pngimage,
    Vcl.ExtCtrls;

type
    TForm4 = class(TForm)
        Button1: TButton;
        Label1: TLabel;
        Image1: TImage;
        procedure Button1Click(Sender: TObject);
    private
        { Private declarations }
    public
        { Public declarations }
    end;

var
    Form4: TForm4;
    // двумерный массив элементов целого типа
    a: array [0..9, 0..19] of integer;
    i, j: integer; // переменные целого типа

implementation

{$R *.dfm}

procedure TForm4.Button1Click(Sender: TObject);
begin
        image1.Visible := false; // скрыть изображение
        label1.Caption := ''; // очистка текста
        randomize; // рандомизация

    for i := 0 to 9 do // внешний цикл
    begin

        for j := 0 to 19 do // внутренний цикл
        begin
            a[i, j] := random(10); // случайное число
            // добавить в поле текста случайное число
            label1.Caption := label1.Caption + ' ' + inttostr (a[i, j]);
        end;

        // переход в новую строку
        label1.Caption := label1.Caption + #13;
    end;

end;

end.


 

Пример 2     Следующее приложение демонстрирует некоторые виды обработки элементов двумерного массива. Например, в массиве 10х20 из двухсот элементов подсчитать числа выпавших нулей, единиц, двоек и так далее.

 

unit Unit4;

interface

uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Imaging.pngimage,
    Vcl.ExtCtrls;

type
    TForm4 = class(TForm)
        Button1: TButton;
        Label1: TLabel;
        Image1: TImage;
        Label2: TLabel;
    procedure Button1Click(Sender: TObject);
private
        { Private declarations }
public
        { Public declarations }
end;

var
        Form4: TForm4;
        // двумерный массив элементов целого типа
        a: array [0..9, 0..19] of integer;
        i, j: integer; // переменные целого типа
        n0: integer; // число нулей
        n1: integer; // число единиц
        n2: integer; // ...
        n3: integer; //
        n4: integer; //
        n5: integer; //
        n6: integer; //
        n7: integer; //
        n8: integer; //
        n9: integer; // число девяток
implementation

{$R *.dfm}

procedure TForm4.Button1Click(Sender: TObject);
begin

    image1.Visible := false; // скрыть изображение
    label1.Caption := ''; // очистка текста label1
    label2.Caption := ''; // очистка текста label1
    randomize; // рандомизация
        n0 := 0;
        n1 := 0;
        n2 := 0;
        n3 := 0;
        n4 := 0;
        n5 := 0;
        n6 := 0;
        n7 := 0;
        n8 := 0;
        n9 := 0;

    for i := 0 to 9 do // внешний цикл
    begin

            for j := 0 to 19 do // внутренний цикл
            begin
                a[i, j] := random(10); // случайное число
                // добавить в поле текста случайное число
                label1.Caption := label1.Caption + ' ' + inttostr (a[i, j]);
                if a[i,j] = 0 then n0 := n0 + 1; // подсчет нулей
                if a[i,j] = 1 then n1 := n1 + 1; // подсчет единиц
                if a[i,j] = 2 then n2 := n2 + 1;
                if a[i,j] = 3 then n3 := n3 + 1;
                if a[i,j] = 4 then n4 := n4 + 1;
                if a[i,j] = 5 then n5 := n5 + 1;
                if a[i,j] = 6 then n6 := n6 + 1;
                if a[i,j] = 7 then n7 := n7 + 1;
                if a[i,j] = 8 then n8 := n8 + 1;
                if a[i,j] = 9 then n9 := n9 + 1; // подсчет девяток
            end;

                // переход в новую строку
                label1.Caption := label1.Caption + #13;
    end;

        // вывод на экран
        label2.Caption := label2.Caption + 'Число нулей = ' + inttostr (n0) + #13;
        label2.Caption := label2.Caption + 'Число единиц = ' + inttostr (n1) + #13;
        label2.Caption := label2.Caption + 'Число двоек = ' + inttostr (n2) + #13;
        label2.Caption := label2.Caption + 'Число троек = ' + inttostr (n3) + #13;
        label2.Caption := label2.Caption + 'Число четверок = ' + inttostr (n4) + #13;
        label2.Caption := label2.Caption + 'Число пятерок = ' + inttostr (n5) + #13;
        label2.Caption := label2.Caption + 'Число шестерок = ' + inttostr (n6) + #13;
        label2.Caption := label2.Caption + 'Число семерок = ' + inttostr (n7) + #13;
        label2.Caption := label2.Caption + 'Число восьмерок = ' + inttostr (n8) + #13;
        label2.Caption := label2.Caption + 'Число девяток = ' + inttostr (n9) + #13;
end;

end.


 

Пример 3     Программа в массиве 15х20 состоящем из случайных двухзначных чисел находит сумму всех элементов в пятой строке и число выпавших чисел 54 в третьем столбце. Здесь есть строка if (Условие1) and (Условие2) thenЛогическая операция and (логическое И), поставленная между двумя условиями, говорит о том, что должны выполняться сразу оба эти условия (должны быть истинными).

 

unit Unit9;

interface

uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Imaging.pngimage,
    Vcl.ExtCtrls;

type
    TForm9 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Image1: TImage;
    Label2: TLabel;
    Label3: TLabel;
procedure Button1Click(Sender: TObject);
    private
        { Private declarations }
    public
        { Public declarations }
end;

var
        Form9: TForm9;
    // двумерный массив элементов целого типа
    a: array [0..14, 0..19] of integer;
    i, j, s, p: integer; // переменные целого типа
implementation

{$R *.dfm}

procedure TForm9.Button1Click(Sender: TObject);
begin
    image1.Visible := false; // скрыть изображение
    label1.Caption := ''; // очистка текста
        randomize; // рандомизация
        s := 0;
        p := 0;

    for i := 0 to 14 do // внешний цикл
    begin

        for j := 0 to 19 do // внутренний цикл
        begin
            a[i, j] := random(90) + 10; // случайное число
            // добавить в поле текста случайное число
            label1.Caption := label1.Caption + ' ' + inttostr (a[i, j]);
            if (j = 3) and (a[i, j] = 54) then
            p := p + 1; // подсчет чисел 54 в третьем столбце
            if i = 5 then
            s := s + a[i, j]; // последовательное вычисление суммы в пятой строке
          end;

                label1.Caption := label1.Caption + #13; // переход в новую строку
                label2.Caption := 'Число 54 выпало в третьей строке ' + inttostr (p) + ' раз';
                label3.Caption := 'Сумма всех элементов в пятой строке = ' + inttostr (s);
    end;

end;

end.


 

Пример 4     Программа проводит сортировку по возрастанию в массиве 10х15 состоящем из случайных трехзначных чисел.

 

 

 

 

 


Flag Counter
Яндекс.Метрика
200stran.ru: показано число посетителей за сегодня, онлайн, из каждой страны и за всё время
Besucherzahler russain brides
счетчик посещений

Выбери лучшее!

allbest