Определить превышает ли количество положительных значений функции количество ее отрицательных значений на интервале изменения аргумента от до с шагом .
Program Primer3;
var
y, x, xn, xk, h: real;
i, pol, otr: integer;
begin
write('Начальное значение переменной х='); readln(xn);
write('Конечное значение переменной х='); readln(xk);
write('Расчетный шаг h='); readln(h);
x:=xn; pol:=0; otr:=0;
repeat
y:=sin(3*x)+cos(sqr(x));
writeln('Текущие значения: x=', x:8:4, ' y=', y:8:4);
if y>=0 then pol:=pol+1 else otr:=otr+1;
x:=x+h;
until x >= xk;
if pol>=otr then writeln('Количество Y_пол=', pol, ' Y_отт=',
otr, ' Y_пол>Y_отр') else writeln('Количество Y_пол=', pol, '
Y_отт=', otr, ' Y_пол<Y_отр');
end.
|
Рис. 9 – Схема алгоритма работы программы
Контрольные вопросы
1. Что такое «цикл»?
2. Какие виды циклов есть в Паскале?
3. Обобщенный синтаксис оператора цикла с параметром?
4. Обобщенный синтаксис оператора цикла с предусловием?
5. Обобщенный синтаксис оператора цикла с постусловием?
6. Чем отличается цикл с предусловием от цикла с постусловием?
7. Сколько раз минимум может выполниться цикл с предусловием?
8. Сколько раз минимум может выполниться цикл с постусловием?
9. Какой тип переменной используется для цикла с параметром?
10. Какая форма цикла с параметром применяется для цикла «от большего к меньшему значению»?
11. Какой тип должно иметь условие для цикла с постусловием?
12. Каков шаг изменения переменной–счетчика в цикле с параметром?
13. Для решения каких задач применяется цикл с параметром?
14. Для решения каких задач применяется цикл с предусловием?
15. Для решения каких задач применяется цикл с постусловием?
Лабораторная работа № 4.
Работа с одномерными массивами
Цель работы: изучение принципов работы с одномерными массивами на языке программирования Pascal. Получение навыков применения основных алгоритмов для решения задач с использованием одномерных массивов.
|
Теоретические сведения
Массив – это конечная поименованная совокупность элементов одинакового типа. Число элементов в массиве называется размерностью массива. Каждый элемент массива задается своим порядковым номером в массиве – так называемым индексом. Примером может служить список фамилий студентов одной группы, где каждый студент однозначно определяется своим порядковым номером в списке (индексом в массиве).
Перед использованием массив, как и любая переменная в Pascal–программах, должен быть объявлен в разделе объявления переменных. В общем виде объявление массива выглядит так:
<имя>: array [<нижний_индекс>.. <верхний_индекс>] of <тип>;
Здесь:
<имя> – имя переменной массива;
array – ключевое слово, обозначающее, что переменная является массивом;
<нижний_индекс> и <верхний_индекс> – целые числа, определяющие диапазон изменения индексов (номеров) элементов массива и, неявно, количество элементов (размер) массива;
<тип> – тип элементов массива.
Примеры объявления массивов:
temper: array[1..31] of real;
koef: array[0..2] of integer;
name: array[1..30] of string[25];
Размещение массива в памяти происходит до выполнения программы, поэтому при описании индекса можно применять только константы или константные выражения. Использовать для этого переменные нельзя!
Обычно при описании массива верхняя граница его индекса задается в виде именованной константы. Именованная константа объявляется в разделе описания констант, который располагается перед разделом объявления переменных. Например, массив названий команд – участниц чемпионата по футболу может быть объявлен следующим образом:
|
const
NT=18; {число команд}
SN=25; {предельная длина названия команды}
var
team: array[1..NT] of string[SN]
Массив может быть также описан следующим образом:
type <имя_типа> = array[<нижний_индекс>.. <верхний_индекс>] of <тип>;
где
type – зарезервированное слово, используемое для создания пользовательского типа данных.
Примеры описания типа массивов:
Type
M=array[1..10] of integer;
AR=array[0..15] of real;
VT=array[–5..5] of string[10]
В первом операторе описан тип массива из целых чисел, которые нумеруются от 1 до 10. Во втором операторе элементами массива являются вещественные числа пронумерованные от 0 до 15. Соответственно в третьем примере описан тип массива строковых переменных с изменением индексов от –5 до 5.
После задания типа массива переменные этого типа описываются обычным образом:
var
a:m;
b:ar;
c:vt;
Тип элементов массива может быть любым, кроме файлового, тип индексов – интервальным, перечисляемым или byte.
С массивами в целом можно выполнять только одну операцию: присваивание. При этом массивы должны быть одного типа, например:
d:=a;
С отдельными элементами массива выполняются все остальные действия. Для обращения к элементу массива после имени массива указывается номер элемента массива в квадратных скобках:
a[3]
С элементом массива можно делать все, что допустимо для переменных этого же типа. Присвоение значения элементам массива можно делать до начала выполнения программы присвоением, можно вводить значения как исходные данные, а можно получать в результате расчетов.
|
К типичным операциям с массивами можно отнести: вывод массива; ввод массива; сортировка массива; поиск в массиве заданного элемента; поиск в массиве максимального или минимального элемента.
Содержание лабораторной работы
В лабораторной работе требуется разработать программу на языке программирования Turbo Pascal 7.0 реализующую алгоритмы обработки одномерных массивов в соответствии с Вашим вариантом. Отчет о проделанной работе должен содержать: название и цель работы; номер варианта для выполнения задания и условие своего варианта; блок–схему решения задачи; тексты программ; полученные при расчетах численные результаты и выводы по проделанной лабораторной работе.
Варианты заданий
1. Разработать программу на языке программирования Turbo Pascal:
а) В массиве t(n), где n – заданное число, сформированном случайным образом, найти количество элементов меньших 0,3.
б) В массив произвольного размера внесены суммы месячного заработка в порядке возрастания табельного номера. Найти количество работающих, чья зарплата ниже средней и количество работающих, чья зарплата выше средней.
2. Разработать программу на языке программирования Turbo Pascal:
а) Массив a(30) сформирован случайным образом. Найти в нём количество элементов меньших среднего арифметического положительных элементов этого массива.
б) В массив внесена стоимость книг в порядке возрастания их номеров в каталоге. Найти самую дорогую и самую дешевую книги (их номера), если всего книг 30.
3. Разработать программу на языке программирования Turbo Pascal:
а) В массиве s(20) найти нулевые элементы и заменить их средним арифметическим положительных элементов массива t(15).
б) В массив занесено население 12–ти городов в соответствии с их кодировочными номерами от 1 до 12. Найти номер города, население которого минимально. Вывести числовое значение населения этого города.
4. Разработать программу на языке программирования Turbo Pascal:
а) Массив b(25) сформирован случайным образом. Поменять местами в этом массиве максимальный и минимальный элементы.
б) В массив внесены суммы вкладов вкладчиков, которые зашифрованы номерами. Найти среднюю сумму вкладов. Определить сколько вкладчиков имеют вклады выше средней суммы.
5. Разработать программу на языке программирования Turbo Pascal:
а) В массиве y(60), сформированном случайным образом, произвести сортировку, расположив элементы в порядке возрастания.
б) В массив внесен месячный баланс 12 подразделений предприятия. Найти количество подразделений, имеющих отрицательный баланс. Найти номер подразделения с наибольшей суммой баланса.
6. Разработать программу на языке программирования Turbo Pascal:
а) В массиве y(25), сформированном случайным образом, найти среднее геометрическое модулей всех ненулевых элементов.
б) В массив внесен годовой баланс предприятия. Найти среднее значение суммы баланса за год. Определить, в какие месяцы (по номерам) баланс был меньше средней величины.
7. Разработать программу на языке программирования Turbo Pascal:
а) В массиве b(20), сформированном случайным образом, произвести сортировку, расположив элементы в порядке убывания.
б) В массив внесены оценки ученика по определенному предмету (их 10). Найти среднюю оценку ученика по этому предмету. Определить сколько пятерок получил ученик в четверти.
8. Разработать программу на языке программирования Turbo Pascal:
а) В массиве d(12) найти среднее геометрическое положительных элементов массива.
б) В массив внесены результаты контрольной работы в классе по математике. Отсутствующие ученики кодируются оценкой 0. Определить количество отсутствующих и получивших 4 и 5 (вместе).
9. Разработать программу на языке программирования Turbo Pascal:
а) Элементы массива y сформированы по следующему закону: найти среднее арифметическое положительных элементов массива, где i? [1..n]. Определить в полученном массиве y количество положительных и отрицательных элементов.
б) В массив внесены результаты контрольной работы в классе по физике. Найти средний балл учащихся, полученный по этой контрольной. Подсчитать количество пятерок, четверок, троек и двоек (в классе 25 учащихся).
10. Разработать программу на языке программирования Turbo Pascal:
а) В массиве t (30), сформированном случайным образом, найти количество элементов, стоящих на четных местах, удовлетворяющих условию , где a и b – заданные числа.
б) В массиве содержатся результаты соревнований по плаванию, введенные по возрастанию номеров участников. Определить номер участника, показавшего лучший результат, если их было 25.
11. Разработать программу на языке программирования Turbo Pascal:
а) В массиве y (30), сформированном случайным образом, найти максимальный элемент и его номер.
б) В массиве хранится 10 случайных чисел в интервале [-1,1]. Найти количество положительных и отрицательных чисел. Определить, во сколько суммарное количество положительных чисел превышает отрицательных.
12. Разработать программу на языке программирования Turbo Pascal:
а) В массиве b (40), сформированном случайным образом, найти количество элементов, стоящих на нечетных местах, удовлетворяющих условию , где d и t – заданные числа.
б) В массиве содержится сумма заработной платы работающих в цехе по порядку их номеров в ведомости (их всего 20). Найти среднюю заработную плату. Определить сколько работающих получают больше средней заработной платы, а сколько меньше.
13. Разработать программу на языке программирования Turbo Pascal:
а) Элементы массива a сформированы следующим образом: Найти среднее арифметическое положительных элементов этого массива, где i? [1..n].
б) В массив внесен рост учеников класса из 20 человек. Найти самый максимальный и самый минимальный рост.
14. Разработать программу на языке программирования Turbo Pascal:
а) Сформировать массив c по следующему принципу: . Перенести положительные элементы массива в массив y (подряд) а отрицательные элементы в массив x (подряд).
б) В массиве содержится сумма заработной платы работающих в отделе по порядку их номеров в ведомости (всего работающих 15). Найти номера в ведомости с максимальной и минимальной заработной платой.
15. Разработать программу на языке программирования Turbo Pascal:
а) В массиве b(25), сформированном случайным образом, найти количество элементов, удовлетворяющих условию , где l, m – заданные числа.
б) В массив внесены результаты соревнований по бегу в порядке возрастания номеров участников (их всего 20). Найти значение самого лучшего результата и самого худшего.
16. Разработать программу на языке программирования Turbo Pascal:
а) Даны два массива. Массив t(20) задан произвольно. Элементы массива d(20) сформированы следующим образом: Заменить все отрицательные элементы массива d(20) средним арифметическим положительных элементов массива t. Вывести новый массив d.
б) В массиве хранятся оценки студента в сессию (результаты пяти экзаменов). Определить к какой категории (отличник, занимающийся на 4 и 5, троечник) относится данный студент.
17. Разработать программу на языке программирования Turbo Pascal:
а) В массиве t(10) найти среднее геометрическое положительных элементов и среднее арифметическое отрицательных элементов.
б) Экзаменационная ведомость может содержать n фамилий с оценками по физике. Определить количество абитуриентов, получивших двойки и пятерки.
18. Разработать программу на языке программирования Turbo Pascal:
а) Даны два массива. Массив d(16) задается произвольно. Элементы массива c(16) формируются следующим образом: Расположить элементы массива c в порядке убывания.
б) Товарная ведомость содержит n позиций со стоимостью товаров. Найти количество товаров, цена которых выше некоторой величины.
19. Разработать программу на языке программирования Turbo Pascal:
а) Даны два массива t(20) и s(20). Найти среднее геометрическое положительных элементов массива t и заменить им все отрицательные элементы массива s.
б) Товарная ведомость содержит n позиций со стоимостью товаров. Расположить суммы стоимости в порядке убывания.
20. Разработать программу на языке программирования Turbo Pascal:
а) Даны два массива. Элементы массива d(15) заданы произвольно, а элементы массива a(15) сформированы случайным образом. Сложить массивы d и a. Найти в новом массиве второй отрицательный элемент и вывести его на печать. Если количество отрицательных элементов меньше двух, то дать об этом сообщение.
б) Товарная ведомость содержит n позиций со стоимостью товаров. Расположить суммы стоимости в порядке их возрастания.
21. Разработать программу на языке программирования Turbo Pascal:
а) Даны два массива x(12) и y(10). В массиве y все нулевые элементы заменить средним арифметическим элементов массива x.
б) Балансовый отчет содержит n позиций с указанием величины и знака баланса. Распечатать вначале значения всех положительных балансов, а затем значения всех отрицательных балансов.
22. Разработать программу на языке программирования Turbo Pascal:
а) Произвести сортировку массива t(30), записав положительные элементы в массив y подряд, а отрицательные – в массив x подряд.
б) Ведомость заработной платы содержит n позиций. Определить сколько человек получают зарплату на 60 процентов больше средней, сколько человек получают зарплату на 50 процентов ниже средней.
23. Разработать программу на языке программирования Turbo Pascal:
а) Элементы массива y(20) сформированы следующим образом: Найти максимальный и минимальный элементы массива y и поменять их местами.
б) В списке указаны суммы вкладов n вкладчиков. Расположить эти суммы в порядке убывания сумм вкладов.
24. Разработать программу на языке программирования Turbo Pascal:
а) Найти разность элементов двух массивов t (12) и n (12) и определить номер строки, для которой эта разность максимальна.
б) Ведомость заработной платы сотрудников учреждения содержит n позиций. Найти минимальную заработную плату и определить насколько она ниже средней.
25. Разработать программу на языке программирования Turbo Pascal:
а) Даны два массива k (15) и d (5). Из отрицательных элементов массивов k и d сформировать массив z (20), содержащий только отрицательные элементы. Если отрицательных элементов в массивах k и d окажется меньше 20, дополнить оставшиеся места –1.
б) Результаты соревнований по плаванию оформлены в виде протокола, содержащего информацию о времени прохождения дистанции. Определить сколько из n участников заплыва заслуживают присвоения I разряда (результат ≤t) и сколько – II разряда (t< результат ≤l).
26. Разработать программу на языке программирования Turbo Pascal:
а) Массив b (28) сформирован случайным образом. Найти максимальный элемент в нем. Рассортировать элементы после этого элемента в порядке убывания.
б) Балансовый отчет содержит n позиций с указанием величины и знака баланса. Распечатать вначале значения всех положительных балансов, затем значения всех отрицательных балансов.
27. Разработать программу на языке программирования Turbo Pascal:
а) Найти сумму элементов двух массивов a (15) и b (15) и определить номер строки, для которой эта сумма максимальна.
б) Результаты месячной работы n участников цеха сведены в таблицу, где указан баланс доходов–расходов. Определить количество участников, которые имели отрицательный баланс.
28. Разработать программу на языке программирования Turbo Pascal:
а) Известны данные по продаже компьютеров в течении недели. Найти общее количество проданных компьютеров.
б) Подсчитать среднемесячную зарплату сотрудника предприятия и найти зарплату, которая наиболее близка к средней. В качестве результата вывести среднюю зарплату, наиболее близкую и ее номер в массиве.
29. Разработать программу на языке программирования Turbo Pascal:
а) Курс доллара в течение года менялся в диапазоне от 28 руб. до 30 руб. Найти наибольшее значение курса доллара. В качестве результата вывести номер месяца и значение курса доллара.
б) Известен месячный план выпуска некоторой продукции и объемы выпущенной продукции заводом за год (помесячно). Определить месяц, в котором было максимальное отклонение от плана. В качестве результата вывести номер месяца и отклонение.
30. Разработать программу на языке программирования Turbo Pascal:
а) Даны результаты сдачи экзамена по информатике группы из 15 студентов. Подсчитать количество студентов, не сдавших экзамен, в численном и в процентном соотношении.
б) Известны данные по продаже компьютеров в течение недели. Расположить эти данные в порядке возрастания.