Инфоурок Информатика ПрезентацииПрезентация Массивы в Delphi

Презентация Массивы в Delphi

Скачать материал

Выберите документ из архива для просмотра:

Выбранный для просмотра документ ввод массива(дробные).docx

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Презентация Массивы в Delphi"

Методические разработки к Вашему уроку:

Получите новую специальность за 2 месяца

Музыковед

Получите профессию

Няня

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Выбранный для просмотра документ Ввод массива.docx

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Презентация Массивы в Delphi"

Получите профессию

HR-менеджер

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Выбранный для просмотра документ Вывод массива.docx

 

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Презентация Массивы в Delphi"

Получите профессию

Технолог-калькулятор общественного питания

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Выбранный для просмотра документ Двумерные массивы.docx

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Презентация Массивы в Delphi"

Получите профессию

Копирайтер

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Выбранный для просмотра документ Использование МЕМО.docx

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Презентация Массивы в Delphi"

Получите профессию

Интернет-маркетолог

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Выбранный для просмотра документ Метод бинарного поиска.docx

Метод бинарного поиска

На практике довольно часто производиться поиск в массиве, элементы которого упорядочены по некоторому критерию (такие массивы называются упорядоченными). Например массив фамилий, как правило, упорядочен по алфавиту, массив данных о погоде- по данным наблюдений. В случае, если массив упорядочен, то применяют другие, более эффективные по сравнению с методом простого перебора алгоритмы, один из которых- метод бинарного поиска.

Пусть есть упорядоченный по возрастанию массив целых чисел. Нужно определить, содержит ли этот массив некоторое число (образец).

Метод (алгоритм) бинарного поиска реализуется следующим оброзом:

  1. Сначала образец сравнивается со средним (по номеру) элементом массива (рис.5.10,а).

·         Если образец равен среднему элементу , то задача решена.

·         Если образец больше среднего элемента, то это значит, что искомый элемент расположен ниже среднего элемента (между элементами с номерами sred+1 и niz), и за новое значение verh принимается sred+1, а значение niz не меняется (рис.5.10,б).

·         Если образец меньше среднего элемента, то это значит, что искомый элемент расположен выше среднего элемента (между элементами с номерами verh и sred-1), и за новое значение niz принимается sred-1, а значение verh не меняется (рис.5.10,в).

 

Рис. 5.10. Выбор среднего элемента массива при бинарном поиске

 

Вычислить номер среднего эл-та массива,Образец равен среднему эл-ту?
 

 

 

 

 

 

 

 

 


                                                                                   ДА

 

 

 


Образец меньше среднего эл-та?                        

                                 ДА                          НЕТ

Niz:=sred-1,Verh:=sred+1,Verh>niz
 

 

 

 

 

 

 

 

 

 

 


НЕТ

 

 

 

 

 

 


Рис. 5,11. Алгоритм бинарного поиска в упорядоченном по возрастанию массиве

 

  1. После того как определена часть массива, в которой может находиться искомый элемент, по формуле (niz-verh)/2+verh вычисляется новое значение sred и поиск продолжается.

Алгоритм бинарного поиска, блок-схем которого представлена на рис. 5.11, заканчивает свою работу, если искомый элемент найден или если перед выполнением очередного цикла поиска обнаруживается, значение verh больше, чем niz.

Вид диалога окна программы Бинарный поиск в массиве приведен на рис. 5.12. Поле метки Label3 используется для вывода результатов поиска и протокола поиска. Протокол поиска выводится, если установлен флажок Выводить протокол. Протокол содержит значения переменных verh, niz, sred. Эта информация, выводимая во время поиска, полезна для понимания сути алгоритма.

Рис. 5.12. Диалоговое окно программы Бинарный поиск в массиве

 

В форме приложения появился новый компонент, который до этого момента в программах не использовался, - флажок (компонент CheсkBox). Значок компонента CheсkBox находится на вкладке Standart (рис. 5.13). Добавляется он к форме точно так же, как и другие компоненты. Свойства компонента CheсkBox перечислены в табл. 5.5.

 

Таблица 5.5. Свойство компонента CheсkBox

Свойство

Определяет

Name

Имя компонента. Используется в программе для доступа к свойствам компонента.

Caption

Текст, поясняющий назначение флажка

Checked

Состояние, внешний вид флажка. Если флажок установлен (в квадратике есть «галочка»), то Checked = TRUE. Если флажок сброшен (нет «галочки»), то Checked = FALSE.

State

Состояние флажка. В отличие от свойства Checked , позволяет различать установленное, сброшенное и промежуточное состояния. Состояние флажка определяют константы: cbChecked (установлен); cbGrayed (серый, неопределенное состояние); cbUnChecked (сброшен).

AllowGrayed

Может ли флажок быть в промежуточном состоянии: если AllowGrayed = FALSE, то флажок может быть только установленным или сброшенным;  если AllowGrayed = TRUE, то допустимо промежуточное состояние.

Left

Расстояние от левой границы флажка до левой границы формы

Top

Расстояние от верхней границы флажка до верхней границы формы

Height

Высоту поля вывода поясняющего текста

Width

Ширину поля вывода поясняющего текста

Font

Шрифт, используемый для отображения поясняющего текста

FarentFont

Признак наследования характеристик шрифта родительской формы

 

Рис. 5.14. Компонент CheckBox

 

После того как компонент CheckBox будет добавлен к форме, а добавляется он обычным образом, нужно установить значения его свойств в соответствии с табл. 5.6.

 

Таблица 5.6. Значение свойств компонента CheckBox1

Свойство

Значение

Caption

Выводить протокол

Checked

True

 

В листинге 5.8 приведен текст процедуры обработки события onclick для командной кнопки Поиск (Button1). Процедура вводит значение элементов массива и образец, затем, используя алгоритм бинарного поиска, проверяет, содержит ли массив элемент, равный образцу. Кроме того, переменная n (число сравнений с образцом) позволяет оценить эффективность алгоритма бинарного поиска по сравнению с поиском методом простого перебора.

При вычислении номера среднего элемента используется функция Trunс, которая округляет до ближайшего целого и преобразует к типу Integer выражение, полученное в качестве аргумента. Необходимость использования Trunc объясняется тем, что выражение (niz-verhi/2 -- дробного типа, переменная sred – целого, а переменной целого типа присвоить дробное значение нельзя (компилятор выдаст сообщение об ошибке).

 

Обратите внимание на процедуры обработки события OnKeyPress для компонентов StirngGrid1 и Edit1. Первая из них обеспечивает перемещение курсора в следующую ячейку таблицы или поля Edit1 (из последней ячейки) в результате нажатия клавиши <Enter>, вторая – активизирует командную кнопку Поиск также в результате нажатия клавиши <Enter>.

 

Листинг 5.8. Бинарный поиск в массиве

 

unit b_found_;

 

interface

 

uses

  Windiws, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids;

 

type

  TForm1 = class (TForm)

   Label1: TLabel;

   Label2: Tlabel;

   Butto1: TButton;

   Label3: TLabel;

   CheckBox1: TCheckBox;

   StringGrid1: TStringGrid;

   procedure Button1Click (Sender: TObject);

   procedure StringGrid1KeyPress (Sender: TObject; var Key: Char);

   procedure Edit1KeyPress (Sender: TObject; var Key: Char);

private

  {Private declararions}

public

  {Public declarations}

end;

 

var

  Form1: TForm1;

 

implementation

 

{$R *.DFM}

 

( Бинарный поиск в массиве )

procedure TForm1.Button1Click(Sender: TObject);

const

  SIZE=10;

var

a: array [1..SIZE] of integer; {массив}

obr: integer; {образец для поиска}

verh: integer; {верхняя граница поиска}

niz: integer; {нижняя граница поиска}

sred: integer; {номер среднего элемента}

fount: boolean; {TRUE – совпадение образца с элементом массива}

n: integer; {число сравнений с образцом}

i: integer;

 

begin

//ввод массива и образца

for i:=1 to SIZE do

   a[i]:=StrToInt (StringGrid1.Cells [i-1,0]);

obr:=StrToInt (Edit1.Text);

 

//поиск

verh:=1;

niz:=SIZE;

n:=0;

found:=FALSE;

label3.caption:=’ ’;

 

if CheckBox1.State = cdChecked

  then Label3.caption:=’verh’+#9+’niz’#9’sred’#13;

 

//бинарный поиск в массиве

repeat

  sred:=Trunc ((niz-verh)/2)+verh;

  if CheckBox1.Checked

    then Label3.caption:=label3.caption+IntToStr(verh)+#9

       + IntToStr(niz) + #9

       + IntToStr(sred) + #13;

n:= n+1;

 if a[sred]=obr

   then found;= TRUE

   else

    if obr < a[sred]

              then niz:=sred-1

     else verh:=sred+1;

untel {ver > niz} or found;

 

if found

  then label3.caption:=label3.caption

                        +’Совпадение с элементом номер’

                        +IntTostr(sred)+#13

                        +’Сравнение’+IntToStr(n)

  Else label3.caption:=label3.caption

                        +’Образец в массиве на найден’;

End;

 

//  нажатие клавиши в ячейке StringGride

Procedure TForm1.StringGride1KeyPress (Sender: TObjet; var Key: Char)

Begin

  If Key = #13 then // нажата клавиша <Enter>

    If StringGride1.Co1 < StringGride1.Co1Count -1

            Then // курсор S в следующую ячейку таблицы

                        SribgGrid1.Co1:= StringGrid1.Co1+1

            Else // курсор в поле Edit1, в поле ввода образа

                        Edit1.SetFocus;

End;

 

// нажатие клавиши в поле Edit1

Procedure TForm1.Edit1KeyPress (Sender: TObjet; var Key: Char)

Begin

   If Key = #13 // нажата клавиша <Enter>

            Then // сделать активную командную строку

                        Button1.SetFocus;

End;

End.

 

Ниже приведены примеры диалоговых окон программы Бинарный поиск в массиве после выполнения поиска – с выходом протокола (рис. 5.14, а) и без протокола (рис. 5.14, б).

 

Здесь следует обратить внимание на то, что элемент массива, находящийся на седьмом мест, программа бинарного поиска находит всего за четыре шага, в то время как программе, реализующий алгоритм простого перебора, потребовалось бы семь шагов.

 

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Презентация Массивы в Delphi"

Получите профессию

Фитнес-тренер

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Выбранный для просмотра документ Метод прямого выбора.docx

Сортировка методом прямого выбора

Алгоритм сортировки массива по возрастанию методом прямого выбора может быть представлен так:

  1. Просматривая массив от первого элемента, найти минимальный элемент и поместить его на место первого элемента, а первый – на место минимального.
  2. Просматривая массив от второго элемента, найти минимальный элемент и поместить его на место второго элемента, а второй – на место минимального.
  3. И так далее до последнего элемента.

Ниже представлена программа сортировки массива целых чисел по возрастанию, диалоговое окно которой изображено на рис. 5.15.

Рис. 5.15. Диалоговое окно программы сортировки массива простым выбором

Процедура сортировки, текст который привел в листинге 5.9, запускается нажатием кнопки Сортировка (Button1). Значения элементов массива вводятся из ячеек компонента StringGrid1. После выполнения очередного цикла поиска минимального элемента в части массива процедура выводит массив в поле метки (Label2).

 

Листинг 5.9. Сортировка массива простым выбором

 

procedure TForm1.ButtonClick (Sender: Tobject);

const

   SIZE=10;

var

  a: array[1..SIZE] of integer;

  min: integer; (номер минимального элемента в части массива от i до верхней границы массива)

  j: integer; (номер элемента, сравниваемого с минимальным j)

  buf: integer; (буфер, используемый при обмене элементов массива)

  I,k: integer;

 

begin

//ввод массива

for i:=1 to SIZE do

a[i]:=StrToInt(StringGrid1.Celis[i-1,0]);

label2.caption:=’ ‘;

 

for i:=1 to SIZE-1 do

begin

//поиск минимального элемента в части массива от a[1] до a[SIZE]

min:=i;

for j:=i+1 to SIZE do

if a[j] < a[min]

then min:=j;

{поменяем местами a[min] и a[i]}

buf:=a[i];

a[i]:=a[min];

a[min]:=buf;

 

{вывод массива}

for k:=1 to SIZE do

      Label2.caption:=label2.caption+’ ‘+IntToStr(a[k]);

   Label2.caption:=label2.caption+#13;

end;

Label2.caption:=label2.caption+#13+’Массив отсортирован.’;

 

end;

 

На рис.5.16 приведено диалоговое окно программы после завершения процесса сортировки.

Рис. 5.16. Диалоговое окно программы Сортировка массива

 

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Презентация Массивы в Delphi"

Получите профессию

Бухгалтер

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Выбранный для просмотра документ Метод прямого обмена.docx

Сортировка методом обмена

В основе алгоритма лежит обмен соседних элементов массива. Каждый элемент массива, начиная с первого, сравнивается со следующим, и если он больше следующего, то элементы меняются местами. Таким образом, элементы с меньшим значением продвигаются к началу массива (всплывают), а элементы с большим значением – к концу массива (тонут). Поэтому данный метод сортировки обменом иногда называют методом “пузырька”. Этот процесс повторяется столько раз, сколько элементом в массиве, минус единица.

 

На рис.5.17 цифрой 1 обозначено исходное состояние массива и перестановки на первом проходе, цифрой 2 – состояние после перестановок на первом проходе и перестановки на втором проходе, и т.д.

На рис.5.18 приведено диалоговое окно программы сортировки массива методом обмена.

Процедура сортировки, текст которой приведен в листинге 5.10, запускается нажатием кнопки Сортировка (Button1). Значения элементов массива вводятся из ячеек компонента StirngGrid1. Во время сортировки, после выполнения очередного цикла обменов элементов массива, программа выводит массив в поле метки Label2.

 

Листинг 5.10. Сортировка массива методом обмена

procedure TForm1.Button1Click (Sender: TObject);

const

  SIZE=5;

var

  a: array[1..SIZE] of integer;

  k: integer;        // текущий элемент массива

  i: integer;         // индекс для ввода и вывода массива

  changed: boolean;  // TRUE, если в текущем цикле были обмены

  buf: integer;      // буфер для обмена элементами массива)

begin

  // ввод массива

  For i:=1 to SIZE do

     a[i]:=StrToInt (StringGrid1.Cells[i-1,0]);

  label2.caption:= ‘ ‘;

 

  // сортировка массива

  repeat

     changed:=FALSE;        // пусть в текущем цикле нет обменов  

     for k:=1 to SIZE-1 do

        if a[k]>a[k+1] then

          begin           // обменяем k-й и k+1-й элементы

        buf:=a[k];

        a[k]:=a[k+1];

        a[k+1]:=buf;

        changed:=TRUE;

         end;

 

// вывод массива

for i:=1 to SIZE do

   label2.caption:=label2.capiton+’ ‘+IntToStr(a[i]);

label2.caption:=label2.caption+#13;

until not changer;   // если не было обменов, значит

                 // массив отсортирован

Label2.caption:=label2.caption+#13+’Массив отсортирован.’;

End;

Следует отметить, что максимальное необходимое количество циклов проверки соседних элементов массива равно количеству элементов массива минус один. Вместе с тем возможно, что массив реально будет упорядочен за меньшее число циклов. Например, последовательность чисел 5 1 2 3 4, если ее рассматривать как представление массива, будет упорядочена за один цикл, и выполнение оставшихся трех циклов не будет иметь смысл.

Поэтому в программу введена логическая переменная chadged, которой перед выполнением очередного цикла присваивается значение FALSE. Процесс сортировки (цикл repeat) завершается, если после выполнения очередного цикла проверки соседних элементов массива (цикл for) ни один элемент массива не был обменен с соседним, и ,следовательно, массив уже упорядочен.

Рис. 5.19. Пример работы программы сортировки массива методом обмена

 

На рис. 5.19. приведено диалоговое окно программы сортировки массива методом обмена после завершения процесса сортировки.

 

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Презентация Массивы в Delphi"

Получите профессию

HR-менеджер

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Выбранный для просмотра документ Минимальный элемент.docx

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Презентация Массивы в Delphi"

Получите профессию

HR-менеджер

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Выбранный для просмотра документ Многомерный массив.docx

Многомерный массив

В повседневной жизни довольно часто приходится иметь дело с информацией, которая представлена в табличной форме. Например, результат деятельности некоторой фирмы, торгующей автомобилями, может быть представлен в виде табл. 5.7.

Таблица 5.7.

 

Январь

Февраль

Март

Ноябрь

Декабрь

ВАЗ 2 106

ВАЗ 2 107

ВАЗ 2 108

ВАЗ 2 109

ВАЗ 21 10

ВАЗ 21 11

 

 

 

 

 

 

 

Колонки и (или) строки таблицы, как правило, состоят из однородной информации. Поэтому в программе, обрабатывающей табличные данные, имеет смысл использовать массивы для хранения и обработки таблиц. Так, приведенная выше таблица может быть представлена как совокупность одномерных массивов:

Vaz2106: array [1..12] of integer;

Vaz21067 array [1..12] of integer;

 

Vaz2108: array [1..12] of integer;

Vaz2109: array [1..12] of integer;

Vaz2110: array [1..12] of integer;

Vaz2111: array [1..12] of integer;

 

Каждый из приведенных массивов может хранить информацию о количестве проданных автомобилей одной марки, причем значение элемента массива отображает количество проданных машин в соответствующем месяце.

Возможно и такое представление таблицы:

jan: array [1..6] of integer;

fed: array [1..6] of integer;

mar: array [1..6] of integer;

dec: array [1..6] of integer;

 

В этом случае каждый массив предназначен для хранения информации о количестве проданных за месяц автомобилей, причем значение элемента массива отображает проданное количество автомобилей одной марки.

Если вся таблица содержит однородную информацию, например, только целые числа, то такая таблица может быть представлена как двумерный массив.

В общем виде инструкция объявления двумерного массива выглядит так:

Имя:array[НижняяГраница1 . . ВерхняяГраница1,

         НижняяГраница2 . . ВерхняяГраница2] of Тип

где:

  • Имя – имя массива;
  • Array – слово языка Delphi, указывающее, что объявляемый эле нт данных является массивом;
  • НижняяГраница1, ВерхняяГраница1, НижняяГраница2, ВерхняяГраница2 – целые константы представляющие диапазон изменения индексов и, следовательно, число элементов массива
  • Тип – тип элементов массива

 

Табл. 5.7. может быть представлена в виде двумерного массива следующим образом:

Itog: array [1..12, 1..6] of integer

Количество элементов двумерного массива можно вычислить по формуле:

(ВГ1-НГ1+1)х(ВГ2-НГ2+1)

где:

  • ВГ1,ВГ2 – верхняя граница первого и второго индексов;
  • НГ1,НГ2 – нижняя граница первого и второго индексов;

Таким образом, массив itog состоит из 60 элементов типа integer.

Для того что бы использовать элемент массива, нужно указать имя массива и индексы элемента. Первый индекс обычно соответствует номер строки таблицы, второй - номеру колонки. Так, элемент itog[2,3] содержит число проданных в марте (третий месяц) автомобилей марки ВАЗ 2107 (данные о продаже ВАЗ 2107 находятся во второй строке таблицы).

При работе с таблицами (массивами) удобно использовать инструкцию for. Например, фрагмент программы, вычисляющий количество проданных за год автомобилей одного наименования, выглядит так:

S:=0;

For j:=1 to 12 do

   S:=S+itog[2,j];

 

Следующий фрагмент программы вычисляет сумму элементов массива (общее количество автомобилей, проданных за год).

S:=0;

For i:=1 to 6 do // шесть моделей автомобилей

For j:=1 to 12 do // 12 месяцев

 

В приведенном фрагменте программы каждый раз, когда внутренний цикл (цикл по j) завершается, во внешнем цикле значение i увеличивается на единицу и внутренний цикл выполняется вновь. Таким образом, к текущему значению переменной S последовательно прибавляются значения элементов массива itog: itog[1,1], itog[1,2], . . ., itog[1,12], itog[2,1], itog[2,2], . . ., itog[2,12] и т.д.

 

В качестве примера рассмотрим программу, которая обрабатывает результаты спортивный соревнований летней олимпиады в Сиднее, 2000г. Исходный данные представлены в таб.5.8.

 

Таблица 5.8. Результаты олимпиады 2000г. В Сиднее

 

Страна

Золотых

Серебряных

Бронзовых

Австралия

Беларусь

Великобритания

Германия

Италия

Китай

Корея

Куба

Нидерланды

Россия

Румыния

США

Франция

Япония

16

3

11

14

13

28

8

11

12

32

11

39

13

5

25

3

10

17

8

16

9

11

9

28

6

25

14

8

17

11

7

26

13

15

11

7

4

28

9

33

11

5

 

Программа должна вычислить общее количество медалей, завоеванных представителями каждой страны, и соответствующее количество очков (баллов), которое вычисляется по следующему правилу: за каждую золотую медаль команда получает семь очков, за серебряную – шесть, за бронзовую – пять очков.

 

Вид диалогового окна программы приведен на рис. 5.20.

Рис. 5.20. Диалоговое окно программы Итоги олимпиады

Для ввода исходных данных и отображения результата используется компонент StringGrid, свойства которого приведены в табл. 5.9.

 

Таблица 5.9. Значение свойства компонента StringGrid1

Свойство

Значения

Name

ColCount

RowCount

FixedCels

FixedRows

Options.goEdition

DefauntColWidth

DefauntRowHeight

GridLineWidth

Tab1

6

14

0

1

TRUE

65

14

1

 

Ячейки первой зафиксированной строки таблицы используются в качестве заголовка колонки таблицы. Во время создания таблицы формы приложения нельзя установить значения элементов массива Cells, т.к. элементы массива доступны только во время работы программы. Поэтому значения элементов массива cell, соответствующих строке таблицы, устанавливает процедура обработки события OnActivate (ее текст приведен в листинге 5.11.), которое происходит во время активации формы приложения. Кроме того, эта процедура вписывает в первую колонку таблицы название стран-участниц соревнований.

 

Листинг 5.11. Инициализация таблицы

 

procedure TForm1.FormActivate (Sender: TObject);

begin

            tabl.Cells[0,0]:=’Страна’;

            tabl.Cells[1,0]:=’Золотых’;

            tabl.Cells[2,0]:=’Серебрянных’;

            tabl.Cells[3,0]:=’Бронзовых’;

            tabl.Cells[4,0]:=’Всего’;

            tabl.Cells[5,0]:=’Баллов’;

            tabl.Cells[0,1]:=’Австралия’;

            tabl.Cells[0,2]:=’Белорусия’;

            tabl.Cells[0,3]:=’Великобритания’;

            tabl.Cells[0,4]:=’Германия’;

            tabl.Cells[0,5]:=’Италия’;

            tabl.Cells[0,6]:=’Китай’;

            tabl.Cells[0,7]:=’Корея’;

            tabl.Cells[0,8]:=’Куба’;

            tabl.Cells[0,9]:=’Нидерланды’;

            tabl.Cells[0,10]:=’Россия’;

            tabl.Cells[0,11]:=’США’;

            tabl.Cells[0,12]:=’Франция’;

            tabl.Cells[0,13]:=’Япония’;

end;

Программа обработки исходной таблицы (листинг 5.12) запускается щелчком мыши по командной кнопке Итога (Button1).

 

Листинг 5.12. Обработка двумерного массива

 

procedure TForm1.Button1Click (Sender: TObject);

var

            c,r: integer;       // номер колонки и строки таблицы

            s: integer;         // всего медалей у команды

            p: integer;         // очков у команды

            m: integer;        // номер строки с максимальный количеством очков

            buf: array[0..5] of string;          // буфер для обмена строк

            i: integer;         // номер строки используется во время сортировки

 

begin

            for sr:=1 to tabl.rowcount do     // обрабатывать все строки

            begin

               S:=0;

               // вычисляем общее кол-во медалий

               for tabl.cells[c,r]:=’’

            then S:=S+StrToInt(tabl.cells[c,r])

            else tabl.cells[c,r]:=’0’;

// вычисляем количество очков

P:=7*StrToInt(tabl.cells[1,r])+

  6*StrToInt(tabl.cells[2,r])+

  5*StrToInt(tabl.cells[3,r]);

 

// вывод результата

tabl.cells[4,r]:=IntToStr(S); // всего медалей

tabl.cells[5,r]:=IntToStr(S); // очков

end;

 

// сортировка таблицы по убыванию в соответствии

// с количеством баллов (по содержимому 5-го столбца)

// сортировка методом выбора

For r:=1 to tabl.rowcount-1 do

Begin

            m:=r; // минимальный элемент в r-й строке

            for i:=r to tabl.rowcount-1 do

               if StrToInt (tabl.cells[5,i])>StrToInt(tabl.ceels[5,m])

                        then m:=I;

            if r<>m then

            begin // меняем r-ю и m-ю строки таблицы

               for c:=0 to 5 do

                        begin

                           buf[c]:=tabl.Cells[c,r];

                           tabl.cells[c,r]:=tabl1.cells[c,m];

                           tabl.cells[c,m]:=buf[c];

                           end;

                        end;

               end;

            end;

Сначала для каждой страны программа вычислит общее количество медалей и соответствующее количество очков. Затем, используя метод простого выбора, программа выполняет сортировку таблицы по убыванию количества набранных очков. Во время сортировки для обмена строк таблица использует строковый массив buf, индекс которого, как и индекс столбца таблицы, меняется от нуля до пяти (см. инструкцию объявления массива в тексте программы). Такой прием позволяет наиболее просто выполнить копирование строки в буфер и замещение строки содержимым буфера.

 

На рис. 5.21. приведено диалоговое окно программы после завершения процесса обработки массива.

 

Рис. 5.21. Окно программы Итоги олимпиады

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Презентация Массивы в Delphi"

Получите профессию

Секретарь-администратор

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Выбранный для просмотра документ Поиск перебором.docx

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Презентация Массивы в Delphi"

Получите профессию

Менеджер по туризму

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Выбранный для просмотра документ ОстринскаАН.pptx

Скачать материал "Презентация Массивы в Delphi"

Получите профессию

Интернет-маркетолог

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Описание презентации по отдельным слайдам:

  • Массивы в DelphiПреподаватель: Остринская А.Н.КГКП «Аксуский колледж имени Жа...

    1 слайд

    Массивы в Delphi
    Преподаватель: Остринская А.Н.
    КГКП «Аксуский колледж имени Жаяу Мусы» управления образования Павлодарской области
    г. Аксу

  • МассивыЦель: знать понятия «Одномерный массив», «Двумерный массив», «Матрица»...

    2 слайд

    Массивы
    Цель: знать понятия «Одномерный массив», «Двумерный массив», «Матрица», «Компоненты создания таблиц»

  • СОДЕРЖАНИЕОбъявление массиваОперации с массивамиВывод массиваВвод массиваПоис...

    3 слайд

    СОДЕРЖАНИЕ
    Объявление массива
    Операции с массивами
    Вывод массива
    Ввод массива
    Поиск максимального(минимального) массива
    Поиск заданного элемента массива
    Сортировка массива
    Многомерные массивы

  • Массив – это структура данных, представляющая собой набор переменных одинаков...

    4 слайд

    Массив – это структура данных, представляющая собой набор переменных одинакового типа, имеющих общее имя

  • Объявление массиваИмя: ARRAY [нижний_индекс..верхний_индекс] of тип
Имя – имя...

    5 слайд

    Объявление массива
    Имя: ARRAY [нижний_индекс..верхний_индекс] of тип
    Имя – имя массива
    ARRAY – зарезервированное слово языка Delphi, обозначающее, что объявляемое имя является именем массива
    нижний_индекс и верхний_индекс – целые константы, определяющие диапазон изменения индекса элементов массива и, неявно, количество элементов (размер) массива
    Тип – тип элементов массива
    Примеры: А: array[1..31] of real;
    name: array[1..30] of string[25];

  • Вывод массиваЛистинг

    6 слайд

    Вывод массива
    Листинг

  • Ввод массиваЛистинг 
целые числаТаблицаЛистинг 
дробные числа

    7 слайд

    Ввод массива
    Листинг
    целые числа
    Таблица
    Листинг
    дробные числа

  • Ввод массиваИспользование компонента MemoЛистингТаблица

    8 слайд

    Ввод массива
    Использование компонента Memo
    Листинг
    Таблица

  • Поиск минимального (максимального) элемента массиваЛистинг

    9 слайд

    Поиск минимального (максимального) элемента массива
    Листинг

  • Поиск в массиве заданного элементаПростой переборБинарный поиск

    10 слайд

    Поиск в массиве заданного элемента
    Простой перебор
    Бинарный поиск

  • Сортировка в массивеМетод прямого выбораМетод прямого обмена

    11 слайд

    Сортировка в массиве
    Метод прямого выбора
    Метод прямого обмена

  • Многомерный массивМногомерный массив

    12 слайд

    Многомерный массив
    Многомерный массив

  • Закрепление новой темыВычислить сумму пятнадцати целых чисел. 
Спросить у пол...

    13 слайд

    Закрепление новой темы
    Вычислить сумму пятнадцати целых чисел.
    Спросить у пользователя 5 женских имен и вывести их на экран
    Дана строка символов, обозначенная именем S1: «КАЖДЫЙ ОХОТНИК ЖЕЛАЕТ ЗНАТЬ, ГДЕ ЖИВЁТ ФАЗАН». Требуется сформировать новый массив с именем S2, который содержит представленную строку символов с добавлением в конце вопросительного и восклицательного знаков.

    Домашнее задание

Получите профессию

Менеджер по туризму

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Выбранный для просмотра документ Сортировка.docx

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Презентация Массивы в Delphi"

Получите профессию

Фитнес-тренер

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Выбранный для просмотра документ Таблица МЕМО.docx

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Презентация Массивы в Delphi"

Получите профессию

Экскурсовод (гид)

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Выбранный для просмотра документ Таблица.docx

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Презентация Массивы в Delphi"

Получите профессию

Секретарь-администратор

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Получите профессию

Экскурсовод (гид)

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Скачать материал

Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:

6 670 643 материала в базе

Скачать материал

Другие материалы

Вам будут интересны эти курсы:

Оставьте свой комментарий

Авторизуйтесь, чтобы задавать вопросы.

  • Скачать материал
    • 27.04.2017 5629
    • RAR 9.9 мбайт
    • 18 скачиваний
    • Оцените материал:
  • Настоящий материал опубликован пользователем Остринская Анастасия Николаевна. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт

    Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.

    Удалить материал
  • Автор материала

    • На сайте: 9 лет и 5 месяцев
    • Подписчики: 0
    • Всего просмотров: 30724
    • Всего материалов: 15

Ваша скидка на курсы

40%
Скидка для нового слушателя. Войдите на сайт, чтобы применить скидку к любому курсу
Курсы со скидкой

Курс профессиональной переподготовки

Экскурсовод

Экскурсовод (гид)

500/1000 ч.

Подать заявку О курсе

Курс профессиональной переподготовки

Педагогическая деятельность по проектированию и реализации образовательного процесса в общеобразовательных организациях (предмет "Математика и информатика")

Учитель математики и информатики

300 ч. — 1200 ч.

от 7900 руб. от 3650 руб.
Подать заявку О курсе
  • Сейчас обучается 36 человек из 17 регионов
  • Этот курс уже прошли 35 человек

Курс повышения квалификации

Использование компьютерных технологий в процессе обучения информатике в условиях реализации ФГОС

36 ч. — 144 ч.

от 1700 руб. от 850 руб.
Подать заявку О курсе
  • Сейчас обучается 140 человек из 46 регионов
  • Этот курс уже прошли 1 300 человек

Курс повышения квалификации

Специфика преподавания информатики в начальных классах с учетом ФГОС НОО

72 ч. — 180 ч.

от 2200 руб. от 1100 руб.
Подать заявку О курсе
  • Сейчас обучается 39 человек из 20 регионов
  • Этот курс уже прошли 284 человека

Мини-курс

Развитие коммуникативных и здоровьесберегающих навыков

8 ч.

1180 руб. 590 руб.
Подать заявку О курсе

Мини-курс

Психология семейных отношений: понимание, следствия и решения

4 ч.

780 руб. 390 руб.
Подать заявку О курсе
  • Сейчас обучается 45 человек из 30 регионов
  • Этот курс уже прошли 20 человек

Мини-курс

Подростковые проблемы: индивидуальный подход

3 ч.

780 руб. 390 руб.
Подать заявку О курсе
  • Сейчас обучается 365 человек из 70 регионов
  • Этот курс уже прошли 295 человек