Двумерные массивы

Автор работы: Пользователь скрыл имя, 21 Марта 2013 в 08:00, практическая работа

Краткое описание

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

Вложенные файлы: 1 файл

Filial_federalnogo_gosudarstvennogo_byudzhetnogo.doc

— 424.50 Кб (Скачать файл)

Филиал федерального государственного бюджетного образовательного учреждения  высшего профессионального  образования 

«Национальный исследовательский университет  «МЭИ» в г. Смоленске

 

 

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

 

 

 

Отчет

по лабораторной работе

Тема: «Двумерные массивы»

по курсу: «Информатика и программирование»

 

 

 

 

 

                                                                                  Студент:    Лобанева Е.И.

                                                                    Группа:   ПИЭ-12

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

 

 

 

 

 

 

Смоленск, 2013

 

  1. Теоретическое введение

 

ДВУМЕРНЫЕ МАССИВЫ  

 

 

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

 

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

Каждая оценка в таком массиве определяется двумя индексами, например так  A[i,j], где первый или старший индекс указывает номер студента по списку, а второй номер работы за которую получена оценка. 

 

 

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

 

 

            Определить тип двумерный  массив можно несколькими способами.

type  

TTable = array[0..34] of array[0..9] of integer; //или так  

TTable = array[0..34,0..9] of integer; //упрощенная форма

//фиксированный  по обеим размерностям массив 35х10 элементов 

 

 

    TTable = array of array[0..9] of integer;

//динамический массив, элементы которого фиксированные массивы  

 

 

    TTable = array of array of integer;

//динамический  по обеим размерностям массив   

 

Последнее определение  двумерного динамического массива  лучше подходит для хранения таблицы  успеваемости, поскольку количество студентов в группах может различаться и количество контрольных задании также может различаться от семестра к семестру. В практической работе определим глобальный тип TTable и переменную, которая будет служить хранилищем данных успеваемости. var vTable:TTable; 

 

 

            Сначала двумерный массив с заданным количеством строк и столбцов нужно создать как показано в  модуле TaskTable и записать туда случайные значения имитирующие оценки студентов. Затем таблицу нужно отобразить при помощи класса TStringGrid. 

 

 

            Класс TStringGrid предназначен для отображения таблиц. Окно StringGrid расчерчено на клетки образующие вертикальные колонки Column и горизонтальные ряды Row. В каждой клетке можно отобразить одну строку. Слева и сверху располагаются особые, фиксированные ряды и колонки, окрашенные серым цветом. Они предназначены для поясняющих названий или заголовков каждой колонки или ряда.  

 

 

            Разберем некоторые наиболее важные свойства класса TStringGrid. 

 

1. Cells – двумерный массив строк, отображаемых в клетках таблицы. Каждая строка задается двумя индексами, причем первый индекс – это номер колонки, а второй – номер ряда. Нумерация начинается с нуля.

2. ColCount и RowCount – общее количество колонок и рядов, включая фиксированные.

3. FixedCols и FixedRows – отдельно задаваемое количество фиксированных колонок и рядов, предназначенных для заголовков.

4. DefaultColWidth и DefaultRowHeight – ширина колонки и высота ряда по умолчанию. Измеряется в пикселах экрана.

5. Col и Row – индексы выделенной колонки и выделенного ряда. Пересечение колонки и ряда задает выделенную клетку. 

 

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

С классами, как  и с записями, часто используется оператор with, который связывает объект с его свойствами. Например, 

 

with Grid do begin   

RowCount:= Length(T) + 1;  

ColCount:= Length(T[0]) + 1; 

 

Внутри оператора with свойства RowCount и ColCount автоматически относятся к объекту Grid.            

Научившись отображать двумерные массивы на экране, нужно  освоить простейшие и важнейшие  методы вычислений с ними, такие  как: 

 

1. Вычисление суммы всех  элементов массива

2. Вычисление суммы элементов  заданной строки или столбца.

3. Вычисление  количества элементов, обладающих  заданным свойством.

4. Отыскание  минимальных и максимальных значений.             

Все основные алгоритмы  даны в модуле Task. Нужно понять их и по памяти перенести в программу.

 

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

Найти произведение чётных и нечётных элементов массива X(n,m)

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

Для того, чтобы  выполнит данное задание ввести массив X(n,m) и использовать условные операторы.

4. Блок-схема

                                                     




     


  


                



                         


                          >                                                                     >


                 


                <=                                                                  <=



 >                                                                 >


                 <=                                                                 <=


                                                                                                          < >



Рисунок1: Блок-схема1. Для Button1.                                       =


                         




 

Рисунок2: Блок-схема2. Для Button2.

                                                             




     


 


                


                         


                                                                                               >


                 


                                                                                     <=



                                                                     >


                                                                                       <=


                                                                                                         =


                                                                                                    < >


                         




 

Рисунок3: Блок-схема3. Для Button4.

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

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

 

1) Имя модуля 

2) Имя вызывающего модуля –

3) Выполняемые функции -

4)Входные данные:

5)Выходные данные:

6)Особенности, ограничения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

Form1: TForm1;

   a:Array[1..10,1..10] of Integer;

implementation

{$R *.dfm}

 

procedure TForm1.Button3Click(Sender: TObject);

begin

  Form1.Close;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

  var i,j,n,m:Integer;

begin

  n:=0;

  m:=0;

   n:=StrToInt(Edit1.text);

   m:=StrToInt(Edit2.text);

   Randomize;

   For i:=1 to n do

    For j:=1 to m do

    Begin

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

    StringGrid1.Cells[i,j]:=IntToStr(a[i,j]);

   end;

end;

 

 

 

 

 

procedure TForm1.Button2Click(Sender: TObject);

   var i,j,n,m,cet,necet:Integer;

begin

  n:=0;

  m:=0;

  cet:=1;

  n:=StrToInt(Edit1.text);

  m:=StrToInt(Edit2.text);

    For i:=1 to n do

    For j:=1 to m do

    If a[i,j] mod 2=0 then

    cet:=cet*a[i,j];

    Edit3.Text:=IntToStr(cet);

end;

 

procedure TForm1.Button4Click(Sender: TObject);

var i,j,n,m,cet,necet:Integer;

begin

  n:=0;

  m:=0;

  necet:=1;

  n:=StrToInt(Edit1.text);

  m:=StrToInt(Edit2.text);

    For i:=1 to n do

    For j:=1 to m do

    If a[i,j] mod 2<>0 then

    necet:=necet*a[i,j];

    Edit4.Text:=IntToStr(necet);

end;

end.

 

 

 

8.Результаты  тестирования:

Режим тестирования

Кол-во строк

Кол-во

столбцов

Результат

Корректные значения

2

4

 

Некорректные значения

а

3

Граничные

значения

0

0

 


 

ВЫВОД: программа работает некорректно  в случае ввода символа вместо числового значения. Во всех остальных случаях результаты соответствуют действительности.

9. Заключение

В результате выполнения лабораторной работы освоены способы  выполнения элементарных программ в Delphi, повторила написание блок-схем. Также повторила виды циклов и написание программ для них.

 

 

 

 

 


Информация о работе Двумерные массивы