ТЕМА: ОБРАБОТКА ОДНОМЕРНЫХ МАССИВОВ

  • docx
  • 26.12.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л3-0025381.docx

ТЕМА: ОБРАБОТКА ОДНОМЕРНЫХ МАССИВОВ

 

Цель работы

Изучить принципы работы с одномерными массивами на языке программирования Pascal. Получение навыков применения основных алгоритмов для решения задач с использованием массивов.

 

Оборудование: ПК, ИСР Pascal ABC

 

ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

Нахождение суммы элементов массива

Задача 1. В автопарке, имеющем 18 машин марки КАМАЗ, каждый из КАМАЗов перевез за день определенный объем груза. Определить суммарный объем перевозок грузов за день. При решении задачи будем использовать тип массива KAMAZ для описания всех КАМАЗов автопарка; переменную P[i] для описания объема груза, перевезенного i-той машиной за день (I меняется от 1 до 18). Блок-схема алгоритма для решения данной задачи будет выглядеть следующим образом (см. Рис. 1): Текст следующий вид:


Program Pr1;

Uses wincrt;

Type KAMAZ=array [1..18] of real;

Var i:integer; p:KAMAZ;

S:real; Begin S:=0;

For i:=1 to 18 do Begin

Writeln(‘Введите объем перевозок’,I,‘-ой машины, т’);

Readln(p[i]);

S:=S+p[i]; End;

Writeln(‘Суммарный объем перевозок S=’,S:8:2,‘т’);

End.


Накопление суммы в данном примере будет проводиться по шагам, при вводе значения объема перевозок для очередной машины сумма будет увеличиваться на данную величину. Аналогично реализуется и алгоритм нахождения произведения элементов массива (с заменой начального значения суммы S:=0 на начальное значение произведения S:=1 и с заменой операции сложения элементов массива «+» на операцию умножения «*»).


Нахождение количества элементов массива, удовлетворяющих заданному условию

Задача 2. Известны результаты экзамена по информатике одной группы из 22 студентов.

Определить, сколько студентов сдали экзамен на 4 и 5. Один из вариантов решения этой

задачи следующий:

На Рис. 2 представлена блок-схема алгоритма поставленной задачи.

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

Program pr3; Uses wincrt; Label 1;

Type INF=array[1..22] of integer;

Var stud:INF; i,p:integer; begin p:=0;

for i:=1 to 22 do begin

1: writeln(‘Введите оценку ’,i,’-го студента’);

readln(stud[i]);

if (stud[i]<1) or (stud[i]>5) then goto 1;

if stud[i]>3 then p:=p+1; end;

writeln(‘На 4 и 5 сдали экзамен ’,p:2,’ студентов’);

end.

В данной программе для обозначения списка оценок по информатике использовался тип массива INF, для обозначения оценок конкретных студентов – переменная stud. Программа предусматривает проверку

корректности вводимых данных: при попытке ввода несуществующей по пятибалльной системе оценки, программа повторяет ее ввод. Для этого используется оператор перехода GOTO, где имя метки, к которой осуществляется переход (в данном случае 1), описывается в разделе описания меток LABEL.

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 2. Блок-схема программы


Сортировка массива по возрастанию

Задача 3. Предположим, известны результаты соревнований по стрельбе, в которых принимали участие 9 человек. Расположить данные результаты в порядке возрастания набранных при стрельбе очков. Алгоритм решения данной задачи является наиболее

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

Один из способов сортировки массивов заключается в следующем. Сначала первый элемент массива в цикле сравнивается по очереди со всеми оставшимися элементами. Если очередной элемент массива меньше по величине, чем первый, то эти элементы переставляются местами. Сравнение продолжается далее уже для обновленного первого элемента. В результате окончания данного цикла будет найден и установлен на первое место самый наименьший элемент массива. Далее продолжается аналогичный процесс уже для оставшихся элементов массива, т.е. второй элемент сравнивается со всеми остальными и, при необходимости, переставляется с ними местами. После определения и установки второго элемента массива, данный процесс продолжается для третьего элемента, четвертого элемента и т.д. Алгоритм завершается, когда сравниваются и упорядочиваются предпоследний и последний из оставшихся элементов массива.

Блок-схема представлена на Рис. 3

Программа реализации изложенного алгоритма может иметь следующий вид:

Program pr4;

Uses crt;

Type STREL=array[1..9]of integer;

Var rez:strel; i,j,s:integer; Begin

For i:=1 to 9 do begin

writeln(‘Введите результаты ’,i,’-го участника’);

readln(rez[i]); end;

for i:=1 to 8 do for j:=i+1 to 9 do

if rez[i]>rez[j] then begin

s:=rez[j];

rez[j]:=rez[i]; rez[i]:=s; end;

writeln(‘Отсортированные по возрастанию результаты:’);

for i:=1 to 9 do write (rez[i]:5,’ ‘);

end.

Здесь STREL тип массива результатов стрельбы участников,

rez[i] – переменная для описания результатов i-го участника (i

рис. 3. Блок-схема                 меняется от 1 до 9).


Вспомогательная переменная s используется для перестановки местами элементов массива.

 

ВАРИАНТЫ ЗАДАНИЙ

 

Исходные данные необходимо оформить в виде массива. При выполнении задания ввод исходных данных и вывод результатов сопровождать комментариями (какие данные нужно ввести и что получается в результате). Составить блок-схему программы. Оформить отчет

1.                  Подсчитать среднемесячную зарплату сотрудника предприятия.

2.                  Дан объем продукции, выпущенной заводом за год (помесячно). Найти наименьший объем. В качестве результата вывести номер месяца и объем выпущенной продукции.

3.                  Курс доллара в течение года менялся в диапазоне от 28руб. до 30руб. Найти наибольшее значение курса доллара. В качестве результата вывести номер месяца и значение курса доллара.

4.                  Известен месячный план выпуска некоторой продукции и объемы выпущенной этой продукции заводом за год (помесячно). Определить, когда завод не выполнил план. Результат получить в виде: номер месяца и объем выпущенной продукции.

5.                  Даны результаты сдачи экзамена по информатике группы студентов (в группе 20 студентов). Подсчитать количество студентов, не сдавших экзамен.

6.                  Известна среднемесячная зарплата 10 сотрудников отдела. Расположить данные в порядке убывания.

7.                  Известен годовой процент на вклад с капитализацией (начисление процентов ежемесячно). Определить, сколько денег получит вкладчик в конце года, если на 1 января сумма вклада составляла 1500руб. в качестве результата вывести сумму вклада на конец каждого месяца.

8.                  Известны данные по продаже компьютеров в течение недели. Найти общее количество проданных компьютеров.

9.                  Известны данные по продаже компьютеров в течение недели. Расположить эти данные в порядке возрастания.

10.              Известен месячный план выпуска некоторой продукции и объемы выпущенной продукции заводом за год (помесячно). Определить месяц, в котором было максимальное отклонение от плана. В качестве результата вывести номер месяца и отклонение.

11.              Известен месячный план выпуска некоторой продукции и объемы выпущенной продукции заводом за год (помесячно). Определить, был ли выполнен годовой план.

12.              Даны результаты сдачи экзамена по информатике группы студентов (в группе 20 студентов). Подсчитать количество студентов, сдавших экзамен без троек.

13.              Известен месячный план выпуска некоторой продукции и объемы выпущенной этой продукции заводом за год (помесячно). Определить, когда завод перевыполнил план. Результат получить в виде: номер месяца и объем продукции, выпущенной сверх плана.

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

15.              Даны результаты сдачи экзамена по информатике группы из 15 студентов. Подсчитать количество студентов, не сдавших экзамен, в численном и в процентном соотношении.


 

Посмотрите также