Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Лабораторная работа 8 по курсу ldquo;Компьютерный практикумrdquo; ldquo;Delphi- 2мерные массивыrdquo;

Работа добавлена на сайт samzan.net: 2016-06-20

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 21.5.2024

ФЕДЕРАЛЬНО АГЕНСТВО ПО ОБРАЗОВАНИЮ

ФИЛИАЛ ГОСУДАРСТВЕННОГО ОБРАЗОВАТЕЛЬНОГО УЧРЕЖДЕНИЯ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРПЗОВАНИЯ

«МОСКОВСКИЙ ЭНЕРГЕТИЧЕСКИЙ ИНСТИТУТ

(ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)» в г. Смоленске

Кафедра информатики

Лабораторная работа №8

по курсу “Компьютерный практикум”

Delphi: 2мерные массивы”

                            

Группа: ВМ-08

Студент: Гончар С. А.

Преподаватель: Нестеров А.П.

Смоленск 2009


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

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

Январь

Февраль

Март

...

Ноябрь

Декабрь

ВA3 2106

ВA3 2107

ВA3 2108

ВA3 2109

ВАЗ 2110

ВАЗ 2111

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

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

vaz2107: 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;

feb: 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 месяцев s := s + itog[i,j];

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


2 Техническое задание

  1.  Найти сумму элементов 2мерного массива:

  1.  На каждой строке заменить диагональный элемент по формуле: A[i,j]=B-C, где B – сумма элементов слева от диагонального, C – справа.

3.1 Анализ технического задания

  1.  Установим на форму 2 компонента TEdit: 1 для  вода размера массива, другой для вывода суммы элементов. Алгоритм вывода массива и нахождения суммы элементов поместим в метод OnClick компонента TButton. Выводить массив будем, используя компонент TMemo.

4.1  Блок-схема процедуры TForm1.btnStart1Click(Sender: TObject).

 


5.1 Модульная структура программы

1. Программа состоит из одного модуля: основной программы.

6.1 Спецификация на программные модули

1. имя модуля: unit1;

2. имя вызывающего модуля: нет;

  1.  3. выполняемые функции:  Найти сумму элементов 2мерного массива:

4. входные данные: n:integer;

5. выходные данные:  a: array [0..100,0..100] of integer;

   S: integer;

7.1 Текст программы

unit Unit1;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, StdCtrls, ExtCtrls;

type

 TForm1 = class(TForm)

   Panel1: TPanel;

   Memo1: TMemo;

   btnExit: TButton;

   EditN: TEdit;

   EditS: TEdit;

   btnStart: TButton;

   Label1: TLabel;

   Label3: TLabel;

   procedure btnStartClick(Sender: TObject);

   procedure btnExitClick(Sender: TObject);

   procedure EditNChange(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form1: TForm1;

 A: array [0..100,0..100] of integer;

 s,n,i,j: integer;

implementation

{$R *.dfm}

procedure TForm1.btnStartClick(Sender: TObject);

begin

 n := StrToInt(EditN.Text);

 Randomize;

 Memo1.Lines.Clear;

 s:=0;

 for i:=1 to n do

 begin

   Memo1.Lines.Add(' ');

   for j := 1 to n do

   begin

     a[i,j] := random(200)-100;

     Memo1.Lines[i-1] := Memo1.Lines[i-1] + '    ' + inttostr(a[i,j]);

     if ((j<=i)and((n-j+1)>=i)) or ((j>=i)and((n-j+1)<=i)) then

     begin

       s:=s+a[i,j];

     end;

   end;

 end;

 EditS.Text := IntToStr(s);

end;

procedure TForm1.btnExitClick(Sender: TObject);

begin

 Close;

end;

procedure TForm1.EditNChange(Sender: TObject);

begin

 if Length(EditN.Text) > 0then

 begin

   btnStart.Enabled := true;

 end

 else

 begin

   btnStart.Enabled := false;

 end;

end;

end.


3.
2 Анализ технического задания

  1.  Установим на форму компонент TEdit: для ввода размера массива. Алгоритм вывода массива и замены элементов поместим в метод OnClick компонента TButton. Выводить массив будем, используя компонент TMemo.

4.2  Блок-схема процедуры TForm1.btnStart1Click(Sender: TObject);

Блок-схема процедуры TForm1.btnZamenaClick(Sender: TObject).


5.2 Модульная структура программы

1. Программа состоит из одного модуля: основной программы.

6.2 Спецификация на программные модули

1. имя модуля: unit1;

2. имя вызывающего модуля: нет;

  1.  3. выполняемые функции:  На каждой строке заменяет диагональный элемент по формуле: A[i,j]=B-C, где B – сумма элементов слева от диагонального, C – справа.

4. входные данные:  n:integer;

5. выходные данные:  a: array [0..100,0..100] of integer;

7.2 Текст программы

unit Unit1;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, StdCtrls, ExtCtrls;

type

 TForm1 = class(TForm)

   Panel1: TPanel;

   Memo1: TMemo;

   btnExit: TButton;

   EditN: TEdit;

   btnStart: TButton;

   Label1: TLabel;

   btnZamena: TButton;

   procedure btnStartClick(Sender: TObject);

   procedure btnExitClick(Sender: TObject);

   procedure EditNChange(Sender: TObject);

   procedure btnZamenaClick(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form1: TForm1;

 A: array [0..100,0..100] of integer;

 n,i,j,b,c: integer;

implementation

{$R *.dfm}

procedure TForm1.EditNChange(Sender: TObject);

begin

 if Length(EditN.Text)>0 then

 begin

   btnStart.Enabled := true;

   btnZamena.Enabled := true;

 end

 else

 begin

   btnStart.Enabled := false;

   btnZamena.Enabled := false;

 end;

end;

procedure TForm1.btnStartClick(Sender: TObject);

begin

 n := StrToInt(EditN.Text);

 Randomize;

 Memo1.Lines.Clear;

 for i:=1 to n do

 begin

   Memo1.Lines.Add(' ');

   for j := 1 to n do

   begin

     a[i,j] := random(200)-100;

     Memo1.Lines[i-1] := Memo1.Lines[i-1] + '    ' + inttostr(a[i,j]);

   end;

 end;

end;

procedure TForm1.btnZamenaClick(Sender: TObject);

begin

 Memo1.Lines.Clear;

 for i:=1 to n do

 begin

   Memo1.Lines.Add(' ');

   for j := 1 to n do

   begin

     if j>i then

     begin

       c:=c+a[i,j];

     end;

     if j<i then

     begin

       b:=b+a[i,j];

     end;

   end;

   for j := 1 to n do

   begin

     if i=j then

     begin

       a[i,j]:=b-c;

     end;

     Memo1.Lines[i-1] := Memo1.Lines[i-1] + '    ' + inttostr(a[i,j]);

   end;

   b:=0;

   c:=0;

 end;

end;

procedure TForm1.btnExitClick(Sender: TObject);

begin

 Close;

end;

end


8 Тестирование программы

1)

n=10

86     -12     13     68     -51     -83     58     52     -31     -57

-66     95     69     8     27     4     99     -10     -56     59

-42     50     -15     9     34     38     -74     -94     -23     -45

55     -39     52     94     28     -92     -34     -43     -41     -42

-93     61     33     -67     15     46     -55     -45     -99     94

-51     -18     -60     -45     -65     78     66     -80     7     -13

73    -92     81     11     66     -79     76     71     -36     -64

-72     30     -1     -21     81     71     0     -45     0     -90

-76     82     49     -75     -75     0     -8     94     93     96

-48     -83  90     31     -24     -82     96     96     -30     -8

S= -316

2) до замены

  93     -53     20     73     -91     -40     77     -75     63     -77

     -21     -41     -74     -59     -91     -76     -83     99     -72     63

    93     10     -92     -88     11     -26     -85     -26     -20     98

     -12     -60     74     -34     92     -12     97     -83     78     -78

     -32     14     -64     -23     42     69     76     -38     -91     96

     22     65     -99     69     -49     88     -49     53     -37     -70

     -82     77     15     5     -59     -68     -91     99     24     -53

    -45     53     -78     38     12     77     25     -18     27     -13

     10     -100    55     70     61     11     15     -42     -72     -53

     35     -69     -79     -31     -50     -82     8     98     -82     -81

После замены:

103     -53     20     73     -91     -40     77     -75     63     -77

     -21     272     -74     -59     -91     -76     -83     99     -72     63

    93     10     239     -88     11     -26     -85     -26     -20     98

     -12     -60     74     -92    92     -12     97     -83     78     -78

     -32     14     -64     -23     -217     69     76     -38     -91     96

     22     65     -99     69     -49     111     -49     53     -37     -70

     -82     77     15     5     -59     -68     -182     99     24     -53

    -45     53     -78     38     12     77     25     68    27     -13

     10     -100    55     70     61     11     15     -42     133   -53

     35     -69     -79     -31     -50     -82     8     98     -82     -252

Вывод по тестированию: программа работает правильно.

Заключение

В ходе выполнения лабораторной работы изучен способ ввода и вывода 2мерных массивов в среде Delphi. Программа выполнена  в соответствии с техническим заданием.




1. Исходные данные-
2. тоннельным сознанием.
3. Юганский заповедник
4. Кризис идентичности
5.  Мир Мир в nother Zone представляет собой руины городов брошенные дома испорченную экологию и другие беды
6. ОСОБЕННОСТИ СОЦИАЛЬНО - ПСИХОЛОГИЧЕСКОЙ АДАПТАЦИИ ДЕТЕЙ С НАРУШЕНИЯМИ РЕЧИ
7. Последняя в течение десятилетий существовала в условиях автаркии и благодаря жесткой идеологической напра
8. а Дышать Есть Пить Выделять Спать отдыхать
9. тематического музыкального занятия для детей среднего дошкольного возраста Прогулка в зимний лес
10. Да на призыв следовать за Ним был моим самым важным решением и приключением
11. О санитарноэпидемиологическом благополучии населения 52ФЗ от 30 марта 1999 г
12. Дипломная работа студента VI курса заочного отделения Научный руководитель к
13. торг торжище
14. дипломная практика Сестринское дело в терапии Защищена Ф
15. Пояснительная записка к рабочей учебной программе Рабочая программа разработана на основе региональног
16. Католическую Церковь Молим Тебя всемилостивый Боже чтобы Ты благоволили в мире и изобилии небесных бл
17. Рабовладение у восточных славян VIIIХ вв
18. Девиантное поведение несовершеннолетних подростков гендерные аспекты
19. Маркетинговые исследования и информация
20. Тема 5 Этапы и условия профессионального становления и развития План- Этапы профессионального станов