4293

Освоение приемов объявления, обращения и использования двумерных массивов при решении задач.

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

Информатика, кибернетика и программирование

Цель работы: освоение приемов объявления, обращения и использования двумерных массивов при решении задач. Один из возможных вариантов объявления двумерного массива в программе: объявляем две константы – максимально возможное количество строк и...

Русский

2012-11-15

78.5 KB

27 чел.

Цель работы: освоение приемов объявления, обращения и использования двумерных массивов при решении задач.

Один из возможных вариантов объявления двумерного массива в программе:

{объявляем две константы – максимально возможное количество строк и столбцов}

const MaxN=10; MaxM=8;

{объявляем тип данных –двумерный массив целых чисел}

type TMyArray=Array[1..MaxN, 1..MaxM] of Integer;

var   a        : TMyArray;

Типовые алгоритмы обработки двумерных массивов

  1.  Заполнение двумерного массива случайными числами

 Реализация:

for i:=1 to n do

 for j:=1 to m do

a[i, j]:=random(20)-10;

  1.  Вывода на экран элементов двумерного массива

 Реализация:

for i:=1 to n do

begin

 for j:=1 to m do  write(a[i, j], ‘  ‘);

 writeln;

 end;

3. Суммирование элементов главной диагонали

Алгоритм имеет смысл только для массива, в котором количество столбцов равно количеству строк. К элементам главной диагонали относятся следующие элементы: а11, а22, а33,….аnn. Следовательно, для суммирования элементов необходимо организовать цикл, параметр которого будет являться индексом и для строк, и для столбцов.

Реализация:

s:=0;

for i:=1 to n do

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

writeln(‘s=’, s);

4. Суммирование элементов побочной диагонали

Алгоритм имеет смысл только для массива, в котором количество столбцов равно количеству строк. К элементам побочной диагонали относятся следующие элементы: а15, а24, а33, а42, а51. Как видно из примера, индексы строк возрастают, одновременно индексы столбцов убывают. Поэтому для исполнения алгоритма организуем цикл, который будет менять номера строк, одновременно в цикле будем менять номера столбцов.

Реализация:

s:=0;

j:=n;

for i:=1 to n do

begin

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

 j:=j-1;

end;

writeln(‘s=’, s);

5. Суммирование элементов строк (столбцов)

Поскольку строка (столбец) - это есть одномерный массив, то для суммирования элементов строки (столбца) используют алгоритм «Суммирование элементов одномерного массива». Этот алгоритм выполняется столько раз, сколько в массиве строк (столбцов).

Реализация:

for i:=1 to n do

begin

s:=0; {обнуляем s}

{суммирование элементов i строки}

for j:=1 to m do

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

writeln(‘сумма ’, i, ‘ строки= ’, s);

end;

6. Поиск минимального (максимального) элемента каждой строки (столбца)

В данном алгоритме необходимо применить алгоритм «Поиск минимального (максимального) элемента в одномерном массиве».

Реализация:

for i:=1 to n do

begin

min:=a[i, 1]; {запоминаем первый элемент в i-й строке}

n_min:=1;{запоминаем номер элемента в i-й строке}

{поиск минимального в i–й строке}

for j:=2 to m do

if a[i, j]<min then begin

min:=a[i, j];

n_min:=j;

end;

writeln(‘минимальный элемент в ’, i, ‘ -й строке ’, min);

writeln(‘номер минимального элемента в ’, i, ‘ -й строке ’, n_min);

end;

7. Сортировка по возрастанию (убыванию) элементов каждой строки (столбца) в двумерном массиве

В данном алгоритме необходимо применить алгоритм «Сортировка элементов в одномерном массиве» для каждой строки (столбца). В алгоритме строки сортируются по возрастанию.

Реализация:

for k:=1 to n do 

for i:=1 to m-1 do

begin

{поиск минимального в k–й строке}

min:=a[k, i];

n_min:=i;    

for j:=i+1 to m do

if a[k, j]<min then begin

min:=a[k, j];

n_min:=j;

end;

a[k, n_min]:=a[k, i];

a[k, i]:=min;

end;

Задача № 1. Вставьте в двумерный массив строку из нулей после строки с номером t.

Анализ постановки задачи

Для решения этой задачи необходимо, первые t строк оставить без изменений, затем все строки после t-ой сдвинуть на одну, далее элементам (t+1) - й строки присвоить заданное значение.

Входные данные.

Двумерный массив случайных чисел – А.

Номер строки после, которой будет вставлена строка из нулей – t (тип - целый).

Количество строк и столбцов в массиве соответственно – n, m (тип - целый).

Выходные данные.

Измененный двумерный массив – А.

Алгоритм.

  1.  Заполнение массива случайными числами.
  2.  Сдвиг на одну строк, строк расположенных после строки t.
  3.  Заполнить строку (t+1) - нулями.
  4.  Вывести на печать измененный массив.

Функциональная структура алгоритма

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

Анализ постановки задачи.

Решение задачи предполагает использование типовых алгоритмов: суммирование элементов строк (или столбцов) и сортировки элементов строки (или столбца) в двумерном массиве. В контексте рассматриваемой задачи, если расположить данные по каждой команде в строках, то необходимо воспользоваться алгоритмами: суммирование элементов строк и сортировки элементов столбце. Если расположить данные по каждой команде в столбцах, то необходимо воспользоваться алгоритмами: суммирование элементов столбцов и сортировки элементов строки.

Входные данные.

Двумерный массив – game (тип - целочисленный массив).

Количество команд-участниц – n (тип - целый).

Одномерный массив названий команд - team (тип - символьный массив).

Количество строк в массиве  – n (тип - целый).

Выходные данные.

Итоговая таблица, где команды расположены в порядке убывания завоеванных ими очков– game, team.

Алгоритм. 

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

Функциональная структура алгоритма

Задания для самостоятельного решения.

Вариант 1.

  1.  Дан двумерный массив. Найти сумму и количество элементов в каждом столбце, кратных  числам а и b (вводятся с клавиатуры).
  2.  Дан двумерный массив. Вставьте первую строку после строки, в которой находится первый встреченный минимальный элемент.
  3.  Известны цены товаров 10-ти наименований в 20-ти городах, а также списки названий этих товаров и городов и “потребительская корзина”, одинаковая для всех городов (т.е. набор чисел, указывающий, сколько потребляют каждого товара). Какой город является наиболее дорогим и наиболее дешевым?

Вариант 2.

  1.  Дан двумерный массив. Найти сумму и количество элементов в каждом столбце, попадающих в интервал от А до В.
  2.  Дан двумерный массив. Вставьте второй столбец после первого столбца, в котором все элементы положительны.
  3.  Известны цены на 10 одинаковых товаров в каждом из 8 магазинов. Для каждого магазина напечатать список 3-х наиболее дорогих товаров.

Вариант 3.

  1.  Дан двумерный массив. Найти сумму и количество элементов в каждом столбце, являющихся четными числами.
  2.  Дан двумерный массив. Вставьте нулевую строку перед строкой, в которой находится первый минимальный элемент.
  3.  Каждое из N предприятий города выпускает 5 наименований продукции. Известен объем выпуска продукции каждого наименования каждым предприятием и стоимость единицы продукции. Для каждого предприятия определить его долю стоимости производимой продукции каждого типа в процентах.

Вариант 4.

  1.  Дан двумерный массив. Найти сумму и количество элементов в каждом столбце, положительных и лежащих вне главной диагонали.
  2.  Дан двумерный массив. Вставьте строку после всех строк, в которых находится заданное число А.
  3.  Завод выпускает 20 наименований продукции. Общее число работников завода — 100 человек. Известны фамилии работников, степень участия каждого работника в выпуске того или иного вида продукции (1 — принимает участие, 0 — не принимает участие), а также их месячная зарплата. Также известен доход, который приносит каждый вид продукции. Расставить фамилии работников в порядке их “ценности” для предприятия. Ценность работника определяется отношением общего дохода всех видов продукции, выпускаемой при его участии, к его зарплате. Таким образом, задачу можно было бы сформулировать и по-другому: напечатать список претендентов на увольнение с завода.

Вариант 5.

  1.  Дан двумерный массив. Найти сумму элементов с k1 до k2 строки.
  2.  Дан двумерный массив. Вставьте второй столбец перед всеми столбцами, в которых нет отрицательных элементов.
  3.  Известны результаты опроса 200 респондентов о популярности 10-ти политиков. Каждый респондент называл 4-х наиболее популярных, с его точки зрения, политиков. Напечатать рейтинг популярности этих политиков — фамилии и число собранных голосов.

Вариант 6.

  1.  Дан двумерный массив. Найти номера всех максимальных элементов.
  2.  Дан двумерный массив. Вставьте первый столбец после всех столбцов, в которых есть отрицательные элементы.
  3.  В некоторых вида спортивных состязаний выступление каждого сортосмена независимо оценивается несколькими судьями, затем из всей совокупности оценок удаляется наиболее высокая и наиболее низкая, а для оставшихся оценок вычисляется среднее арифметическое, которое и идет в зачет спортсмену. Если наиболее высокую оценку ставят несколько судей, то из совокупности оценок удаляется только одна такая оценка; аналогично поступают с наиболее низкими оценками.  Определит оценку, которая пойдет в зачет каждому участнику соревнования, если известно, что в соревнованиях участвовало по N спортсменов в каждом из пяти видов состязаний.

Вариант 7.

  1.  Дан двумерный массив. Найти номера первых отрицательных элементов каждой строки.
  2.  Дан двумерный массив. Вставьте столбец из нулей после столбцов с минимальными элементами.
  3.  Завод выпускает 20 наименований продукции. Про каждый вид продукции известно: сколько единиц этой продукции выпускает завод, себестоимость и отпускная цена единицы продукции, сколько человек занято на выпуске этой продукции. От каких видов  продукции завод должен отказаться, чтобы общая производительность труда повысилась вдвое? ({производительность труда} = {доход от продажи продукции} / {количество человек, принимающих участие в ее производстве}).

Вариант 8.

  1.  Дан двумерный массив. Найти номера последних положительных элементов каждой строки.
  2.  Дан двумерный массив. Вставьте первую строку между средними строками.
  3.  Для каждого из пяти автобусных маршрутов известно количество проданных билетов на каждый из семи рейсов. В каждом автобусе K мест. Какие из рейсов на каждом маршруте надо исключить из расписания, чтобы маршруты стали рентабельными. (Маршрут является рентабельным, если общее число проданных на него билетов превосходит 75% от общего числа мест во всех автобусах маршрута).

Вариант 9.

  1.  Дан двумерный массив. Найти количество элементов в каждой строке, больших среднего арифметического элементов в каждой строке.
  2.  Дан двумерный массив. Вставьте строку из нулей перед всеми строками, первый элемент которых делится на 3.
  3.  Имеется каталог на 15 видов с/х машин, где указаны: номер, цена и название. Десять фермерских хозяйств составили приоритетные списки, где указаны по 5 названий машин, которые хотели бы приобрести. Зная количество денег для этих целей в каждом хозяйстве, надо напечатать список номеров машин, которых может приобрести каждое хозяйство (предположить, что хозяйство будет покупать по одной машине каждого типа).

Вариант 10.

  1.  Дан двумерный массив. В каждой строке замените знак максимального по модулю элемента на противоположный.
  2.  Для заданного целочисленного двумерного массива найти максимум среди сумм элементов диагоналей, параллельной главной диагонали.
  3.  Фермеру необходимо продать свою продукцию. Свои услуги по продаже ему предложили 5 посреднических фирм. Известны названия каждой фирмы, а также затраты, планируемые каждой фирмой на транспортировку, рекламу и продажу продукции. Также известен процент отчислений каждой фирмой себе за услуги от общей суммы продажи продукции. Требуется определить фирму для фермера, чтобы получить максимальную выручку от продажи, если известна предполагаемая сумма от продажи продукции.

Контрольные вопросы:

  1.  Дайте определение понятию массив.
  2.  Какими свойствами обладает структура данных массив?
  3.  Объясните термин и необходимость сортировки.
  4.  В чем суть алгоритма сортировки?
  5.  Какие типы массивов существуют, и чем они отличаются друг от друга?
  6.  Что такое логическое и физическое представление массива?
  7.  Как осуществляется доступ к элементу двумерного массива?
  8.  Опишите двумерный массив, состоящий из 100 элементов символьного типа.
  9.  Можно ли при описании массива инициализировать его элементы?
  10.  Назовите типовые алгоритмы обработки двумерного массива.
  11.  В чем суть алгоритма  поиска минимального (максимального) элемента?


заполнение массива

сдвиг строк

аполнение  строки t - нулями

задача

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

заполнение одномерного массива

заполнение двумерного массива

задача

вывод результата в виде таблице 

количество матчей и очков для каждой команды

количество матчей для каждой команды

количество очков для каждой команды

сортировка по столбцу с количеством очков


 

А также другие работы, которые могут Вас заинтересовать

46373. Основы глобалистики. Учебное пособие 822 KB
  Философия техники и философия человека ОКРУЖАЮЩАЯ СРЕДА И МЕСТООБИТАНИЕ ЧЕЛОВЕКА Гомеостатическая деятельность человека При этом конечной целью глобалистики является не только судьба человечества но и Человека.
46374. ДЕЛОВОЕ ОБЩЕНИЕ 322.5 KB
  Понятие общения его типология. Характеристика делового общения Понятие общения. Типология общения. Характеристика делового общения: сущность особенности роль в современном бизнесе.
46375. Управленческий учет. Краткий конспект лекций 944.5 KB
  Введение Цель и сущность управленческого учета Классификация и поведение затрат Системы и методы калькулирования затрат Анализ взаимосвязи затрат объема деятельности и прибыли Анализ релевантной информации для принятия управленческих решений Анализ для принятия решений относительно долгосрочных инвестиций 84 7 Бюджетное планирование и контроль 95 8 Учет по центрам ответственности и оценка их деятельности 108 Литература Процесс управления предусматривает своевременное...
46376. ЛЕКЦИИ ПО МАКРОЭКОНОМИКЕ 2.67 MB
  Критериями являются особенности обслуживания того или иного вида производства. Экономическая свобода – это свобода предпринимательской деятельности наличие конкуренции свобода перелива капитала и экономической информации передвижение трудовых ресурсов разнообразие технологических способов ведения производства. Характеризуется тем что вопросы производства расширение ресурсов решаются единолично государством. Общество получает выгоду от производства благ от государства.
46377. Опыт и эффективность перехода ЖКХ на инновационные формы управления 518.5 KB
  Рыбальченко опыт и эффективность перехода жкх на инновационные формы управления Учебное пособие Москва2008 Спектор В. – экономист соискатель кафедры экономики и инвестирования ГАСИС Опыт и эффективность перехода ЖКХ на инновационные формы управления. В учебном пособии проанализированы основные факторы влияние которых необходимо учитывать при разработке предложений по применению в ЖКХ новых форм управления жилищным фондом и объектами коммунальной инфраструктуры. Дана оценка эффективности перехода на новые формы управления и пути снижения...
46378. Инновационные принципы совершенствования управления в жилищно-коммунальном хозяйстве. Учебное пособие 387 KB
  Рыбальченко инновационные принципы совершенствования управления в жилищно-коммунальном хозяйстве Учебное пособие Москва2008 Спектор В. экономист соискатель кафедры экономики и инвестирования ГАСИС Инновационные принципы совершенствования управления в жилищно-коммунальном хозяйстве. В учебном пособии раскрываются объективные причины необходимости совершенствования системы управления ЖКХ и сформулированы методические основы инновационного подхода к этому процессу в рамках реформирования отрасли. Реформирование ЖКХ на основе инновационных схем...
46379. Выбор электродвигателя и кинематические расчеты 432 KB
  Выбираем электродвигатель 4А160S6 Рдв = 11 кВт nдв 1000 мин 1 Sдв=27 номинальная частота вращения двигателя nдв = 973 мин 1 Передаточное отношение где ωдв угловая скорость двигателя рад с ωб – угловая скорость барабана рад с примем = 5 тогда частота вращения входного быстроходного вала редуктора 973 1 10184 частота вращения выходного тихоходного вала редуктора Определение вращающих моментов На валу шестерни Тш На валу колеса Тк Режим работы передачи Определяем наработку где С число вхождений в...
46380. Исследование резонансных явлений 683 KB
  Определение параметров реальной катушки индуктивности. Электрическая схема экспериментального определения параметров реальной катушки индуктивности. Измеряя напряжение на Uдоб на добавочном резисторе и Uк на катушке индуктивности Rk Xk произвести с помощью цифрового вольтметра Vц попеременно включая его к зажимам добавочного резистора и катушки индуктивности. Для вычисления параметров реальной катушки индуктивности необходимо воспользоваться данными измерений а также следующими формулами: Активное сопротивление всей цепи определяется по...
46381. Расчет токов короткого замыкания 2.49 MB
  Определить начальный сверхпереходный и ударный ток а также наибольшее действующее значение полного тока в месте повреждения при трехфазном коротком замыкании в узле К1; остаточное напряжение на выводах генератора и нагрузки а также начальный сверхпереходный ток в генераторе; периодическую слагающую тока в месте повреждения в произвольный момент времени при трехфазном коротком замыкании в узле К1; фазные значения тока и напряжения в месте повреждения при однофазном коротком замыкании в узле К2 а также фазные значения напряжения на...