Лабораторная работа №4
Цели. Научиться использовать в программах массивы для хранения данных. Задание 1 Написать программу в процедурном стиле. Интерфейс программы оформить в виде некоторого меню, пункты которого соответствуют заданиям вашего варианта. Сортировку осуществить методом «пузырька». Алгоритм сортировки оформить в виде процедуры в модуле. Доказать правильность работы программы. 1. Вариант Составить программу, суммирующую штрафное время команд текущий счет и номер результативного игрока при игре в хоккей. Выводить на экран суммарное время и текущий счет обеих команд после любого их изменения. После окончания игры выдать итоговое сообщение. Выдать на экран список номеров игроков в порядке их результативности. 2. Вариант В ЭВМ по очереди вводятся номера спортсменов и их результаты в соревнованиях по прыжкам в высоту. Выдать на печать лучший результат после выступления очередного спортсмена. После окончания соревнования напечатать итоговое сообщение о трех лучших спортсменах. 3. Вариант Составить программу помощника кассира в универсальном магазине. ЭВМ должна запрашивать цену товара и его количество, подсчитывать суммарную стоимость купленных товаров, запрашивать сумму денег, внесенных покупателем, и определять причитающуюся ему сдачу. Предусмотреть возможность в конце дня получать информацию о количестве и стоимости проданных товаров по 10 наименованиям. Упорядочить номера видов товаров в зависимости от их спроса. Вариант Составить программу, которая ведет учет очков, набранных каждой командой при игре в баскетбол, их штрафного времени и результативности игроков. После любого изменения счет выводить на экран. После окончания игры выдать итоговое сообщение. Упорядочить номера игроков в порядке их результативности.
5. Вариант В турнире участвуют 10 команд. Составить программу, подсчитывающую число удалений в каждой команде при игре в хоккей. После каждого удаления выводить на экран номер хоккеиста, время, на которое он удаляется с поля, и суммарное число удалений в каждой команде. После окончания игры выдать итоговое сообщение; номера удалявшихся игроков распечатать в порядке возрастания штрафного времени. После окончания турнира напечатать номера игроков, имеющих наибольшее и наименьшее число удалений. 6. Вариант Составить программу, подсчитывающую число посещений в поликлинике врачей специалистов (отоларинголога, окулист и хирурга). В конце дня выдать итоговое сообщение. В начале работы программы должна вводиться дата, которая будет фигурировать в итоговом сообщении. Предусмотреть возможность выдачи количества осмотренных больных в любой из дней недели и за всю неделю каждым из специалистов. Упорядочить номера специалистов в зависимости от количества посещений. Вариант ЭВМ используется при разборе коллекции марок. Составить программу, подсчитывающую число марок по спорту, по искусству, и прочих. Подсчитать общее количество марок в коллекции. Составить и распечатать таблицу наличия указанных марок. Упорядочить номера видов марок в зависимости от количества марок соответствующего вида. 8. Вариант В сборе картофеля принимают участие 3 бригады. Учет ведется с помощью ЭВМ. Составить программу, которая определяет, сколько картофеля собрала каждая бригада (вес каждой новой порции прибавляется к уже подсчитанной сумме), выводит на экран текущий результат по всем бригадам в конце дня. Предусмотреть возможность хранения и выдачи итогов дня каждой бригады в течении недели. Упорядочить номера бригад в зависимости от итогов работы.
Вариант Составить программу для определения подходящего возраста для вступления в брак, используя следующее соображение: возраст девушки равен половине возраста мужчины плюс 7, возраст мужчины определяется соответственно удвоением возраста девушки минус 7. Программа должна выдать необходимые сведения для всех желающих вступить в брак. Предусмотреть возможность создания банка данных и автоматического поиска соответствующей кандидатуры по возрасту. Упорядочить номера абонентов в зависимости от возраста. Вариант Составить программу, которая запрашивает стоимость книг, сумму денег, внесенных покупателем, а далее определяет причитающуюся сдачу (если денег внесено больше), печатает "спасибо", если сдачи не требуется, или выдает сообщение о недостаточности внесенной суммы. Программа должна обслуживать поток покупателей в течении дня и определять в конце дня общую сумму выручки. Составить таблицу стоимости и количества проданных в течении дня книг по 10 авторам. Таблицу распечатать в конце дня, упорядочив номера авторов в зависимости от количества проданных книг. Вариант Аналогично 11. В киоске продается газета стоимостью 3 коп. и журнал стоимостью 20 коп. Составить программу, которая спрашивает о желании покупателя ("Журнал или газета"), принимает деньги (сумма вводится с клавиатуры) и печатает причитающуюся сдачу. Составить таблицу стоимости и количества проданных в течении дня газет и журналов по 15 наименованиям. Таблицу распечатать в конце дня, упорядочив номера изданий в зависимости от количества проданных экземпляров. Вариант Составить программу обслуживания соревнований по прыжкам в высоту. Для каждого выступающего спортсмена в ЭВМ вводится номер и результат. На экране должны появиться номер и результат лучшего на данном этапе спортсмена. Составить таблицу результатов соревнований в порядке ухудшения результатов. Таблицу распечатать. Выдать общий итог. Вариант При продаже грампластинок ведется учет количества проданных пластинок с классической музыкой, эстрадной и детской. Составить программу, ведущую учет продажи пластинок за рабочий день. Распечатать таблицу количества и стоимости проданных за день пластинок. Выдать общий итог. Упорядочить номера видов пластинок зависимости от количества проданных штук.
Вариант В соревнованиях по фигурному катанию участвуют 20 фигуристов. Выступление оценивают 6 судей. Написать программу, вычисляющую средний балл выступления и печатающую номера и средние баллы 10 лучших спортсменов. Результат выдавать на печать по ходу соревнований. 15. Вариант В группе 20 студентов. В течении зимней сессии требуется сдать 5 экзаменов. Написать программу, определяющую количество студентов, сдавших экзамен без троек и количество задолжников и печатающую их номера. Номера студентов упорядочить в зависимости от результатов сессии. Вариант В трудовом коллективе проводится соревнование. Качество трудовой деятельности оценивается по 10 пунктам, каждый пункт оценивается баллами от 0 до 20. Написать программу, подсчитывающую средний балл и печатающую фамилии 5 победителей. Вариант В турнире по футболу участвует 5 команд. Каждая пара команд встречается один раз. Написать программу, подсчитывающую количество очков, набранных каждой командой, считая, что выигрыш-2 очка; проигрыш-0 очков. Упорядочить номера команд в зависимости от набранных очков. Вариант На заводе 5 цехов. Написать программу, определяющую перевыполнение плана каждого цеха за каждый месяц и за весь год. Предусмотреть возможность ввода данных каждый месяц. Распечатать таблицу выполнения плана цехами за год. Напечатать номера цехов в зависимости от выполнения плана. Вариант В гараже имеются 15 автомобилей. Подсчитать общий дневной пробег всех автомобилей, расход бензина. Напечатать номера автомобилей, на которых наиболее и наименее экономичное использование бензина. Вариант Городской санэпидстанцией берутся пробы воздуха на содержание 10 вредных для здоровья веществ. Написать программу, проверяющую, не превосходит ли содержание вредных веществ допустимые нормы, и печатающую наихудший и наилучший в экологическом отношении дни месяца. Предусмотреть возможность ввода данных и вывод их в виде таблицы. Упорядочить номера веществ в зависимости от превышения их содержания.
Вариант OTK ежедневно проверяет качество продукции 15 цехов. Написать программу, подсчитывающую процент брака по каждому цеху ежедневно, печатающую номера лучшего и худшего цехов и общий процент брака ежедневно и ежемесячно. Составить таблицу брака, упорядочив цеха в порядке возрастания брака. Вариант За последние 10 лет прибрежная полоса Аральского моря, в результате обмеления переместилась на H км. Если динамика обмеления останется прежней, на сколько км переместится прибрежная полоса за N лет. Составить таблицу динамики на ближайшие 100 лет. Предусмотреть возможность ежегодного ввода реальных данных и сравнения их с предполагаемыми. Вариант В 10 хозяйствах передали часть земли в пользование 10 арендаторам. Составить программу, позволяющую сравнивать урожайность картофеля в гос. хозяйствах и у арендаторов ежегодно; печатать фамилии и названия 5 лучших. 24. Вариант Составить программу для учета задолженностей по квартплате жильцов 20 квартирного дома. В памяти должны храниться взносы за каждый месяц. В конце года выдать таблицу взносов, номера квартир владельцев-задолжников и сумму задолженностей. Упорядочить номера квартир в зависимости от размера задолженности. 25. Вариант Дан список учеников класса и отметки каждого из учеников за выполнение двух контрольных работ. Требуется: подсчитать число учеников, выполнивших первую работу на 5; подсчитать число учеников, выполнивших обе работы на 5. Упорядочить список учеников по среднему баллу за обе контрольные работы.
Задание 2.1 Написать программу. Предусмотреть задание массива случайным образом и ввод элементов с клавиатуры. Каждый из вариантов задания массива и вывод оформить в виде отдельной процедуры. Доказать правильность работы программы.
1. Вариант В одномерном целочисленном массиве найти сумму четных элементов, больших первого элемента по модулю. 2. Вариант В одномерном массиве, состоящем из вещественных элементов, вычислить: 1) сумму отрицательных элементов массива; 2) произведение элементов массива, расположенных между максимальным и минимальным элементами. 3. Вариант В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные — в конец с сохранением порядка следования. Дополнительный массив заводить не разрешается. 4. Вариант В одномерном целочисленном массиве заменить отрицательные четные элементы на корень из их модуля.
5. Вариант Определить сумму и количество элементов целочисленного массива mas[20], попадающих в заданный с клавиатуры диапазон. 6. Вариант В одномерном целочисленном массиве найти пары соседних элементов противоположных знаков. 7. Вариант Проверить, является ли одномерный массив симметричным относительно элемента, стоящего в середине. 8. Вариант В одномерном целочисленном массиве найти сумму нечетных элементов до первого отрицательного. 9. Вариант В одномерном целочисленном массиве подсчитать количество пар стоящих рядом элементов, кратных 3. 10. Вариант В одномерном вещественном массиве найти сумму дробных частей его элементов. 11. Вариант В одномерном массиве переставить последний элемент в начало, сдвигая все элементы вправо на одну позицию. 12. Вариант В одномерном массиве заменить элементы средним арифметическим соседних элементов. Первый и последний элементы оставить без изменения. 13. Вариант В одномерном массиве найти сумму элементов, меньших среднего арифметического всех элементов массива. 14. Вариант В одномерном массиве найти элемент, который меньше наибольшего, но больше всех остальных. 15. Вариант В одномерном массиве выделить убывающий подмассив. 16. Вариант В одномерном массиве выделить знакочередующийся подмассив. 17. Вариант В одномерном массиве проверить, есть ли одинаковые элементы, если есть, то заменить их нулями. 18. Вариант В одномерном массиве подсчитать количество пар стоящих рядом нечетных элементов. 19. Вариант В одномерном массиве наименьший элемент поместить на первое место, сдвигая все элементы, стоящие до наименьшего элемента, на одну позицию вправо. 20. Вариант В одномерном массиве выяснить, идут ли элементы, кратные 4, в порядке убывания. 21. Вариант В одномерном массиве выяснить, идут ли его четные элементы, стоящие на нечетных местах, в порядке возрастания. 22. Вариант В одномерном массиве выяснить, идут ли его отрицательные элементы, стоящие на четных местах, в порядке убывания. 23. Вариант В одномерном массиве найти все элементы, сумма цифр которых равна их индексам. 24. Вариант Дана последовательность из 100 различных чисел. Найти сумму всех чисел, находящихся между наименьшим и наибольшим числом (в сумму включить и сами числа). 25. Вариант Заданы массивы X,Y размером N. Массив X содержит значения от 1 до N (все элементы различны). Элементы массива Y переставить таким образом, чтобы элемент, находящийся на I-ом месте, оказался на месте элемента, индекс которого указан в X(I).
Задание 2.2 Написать программу для решения задачи. Если в задаче требуется обрабатывать строки или столбцы массива, то соответствующий двумерный массив определить как одномерный массив массивов и в подпрограмму передавать текущую строку или столбец как параметр.
1. Вариант Пусть дана вещественная квадратная матрица порядка n. Постройте последовательность вещественных чисел по правилу: если в i-ой строке матрицы элемент, принадлежащий главной диагонали, отрицателен, то элемент равен сумме положительных элементов i-ой строки, в противном случае равен произведению отрицательных элементов i-ой строки. 2. Вариант Заполнить двумерный массив m х n случайными целыми числами из интервала [-100,100]. Определить в массиве простые числа (использовать подпрограмму простое число). 3. Вариант Дана матрица А размером . Определить k — количество особых элементов массива А, считая его элемент особым, если он больше суммы остальных элементов его столбца. 4. Вариант Дана целочисленная матрица А размером . Найти номер первой по порядку строки, содержащей наибольшее число цифр. 5. Вариант Заполнить двумерный массив nхm случайными целыми числами из интервала [-100,100]. Определить в массиве числа и их индексы (номера строк и столбцов), имеющие в разряде десятков цифру 5. 6. Вариант Элемент матрицы назовём седловой точкой, если он является наименьшим в своей строке и одновременно наибольшим в своём столбце или, наоборот, наибольшим в своей строке и одновременно наименьшим в своём столбце. Для заданной целой матрицы размером 8´10 напечатать индексы всех седловых точек. 7. Вариант Заполнить двумерный массив mхn случайными целыми числами из интервала [-100,100]. Найти в массиве совершенные числа (использовать подпрограмму совершенное число). 8. Вариант Определить, является ли заданная целая квадратная матрица 9-го порядка магическим квадратом (суммы элементов во всех строках и столбцах одинаковы). 9. Вариант Дана матрица А размером . Найти номера строк, элементы каждой из которых образуют монотонную последовательность. 10. Вариант Просуммировать элементы квадратной матрицы размером 9´9, расположенные в нижней четверти, ограниченной диагоналями, включая диагонали. 11. Вариант Дана матрица А размером , состоящая из натуральных чисел. В каждом столбце обнулите минимальное количество элементов так, чтобы сумма элементов столбца не превышала заданную. 12. Вариант Просуммировать элементы квадратной матрицы размером 8´8, расположенные в правой четверти, ограниченной диагоналями, включая диагонали. 13. Вариант Характеристикой строки целочисленной матрицы назовем сумму ее положительных четных элементов. Переставляя строки заданной матрицы, расположить их в соответствии с ростом характеристик. 14. Вариант Дана целочисленная квадратная матрица. Определить произведение элементов в тех строках, которые не содержат отрицательных элементов, и максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы. 15. Вариант Дана целочисленная матрица А размером . Определить для каждой строки, все ли ее элементы являются кубами целых чисел. 16. Вариант Элемент матрицы называется локальным минимумом, если он строго меньше всех имеющихся у него соседей. Подсчитать количество локальных минимумов заданной матрицы размером 10 на 10. Найти сумму модулей элементов, расположенных выше главной диагонали. 17. Вариант Уплотнить заданную матрицу, удаляя из нее строки и столбцы, заполненные нулями. Найти номер первой из строк, содержащих хотя бы один положительный элемент. 18. Вариант Упорядочить строки целочисленной прямоугольной матрицы по возрастанию количества одинаковых элементов в каждой строке. Найти номер первого из столбцов, не содержащих ни одного отрицательного элемента. 19. Вариант Дана целочисленная квадратная матрица. Определить сумму элементов в тех строках, которые не содержат отрицательных элементов, и минимум среди сумм элементов диагоналей, параллельных побочной диагонали матрицы. 20. Вариант Задана квадратная матрица. Поменять местами строку с максимальным элементом на главной диагонали со строкой с заданным номером т. 21. Вариант Матрицу n´n повернуть (без использования вспомогательных массивов) на 90° вправо. 22. Вариант Дана целочисленная матрица размером n´n. Преобразовать массив, осуществив поворот вокруг центра на против часовой стрелки. 23. Вариант Дана матрица А размером . Найти номера столбцов, элементы каждого из которых образуют симметричную последовательность. 24. Вариант Дана вещественная матрица n´n. В строках с отрицательным элементом на главной диагонали найти наибольший из элементов. 25. Вариант Дана квадратная таблица размером N´N. Составьте программу формирования последовательности В, элементами которой являются элементы таблицы А, расположенные под главной диагональю. В полученной последовательности найдите три наименьших элемента. Если количество элементов между первым и вторым элементом совпадает с количеством элементов между вторым и третьим, то поменяйте их местами, сохранив порядок следования (без использования дополнительного массива), преобразованный линейный массив выведите на экран в строку.
Вариант0 Пассажирский самолет может поднять груз общим весом 30 т. Составить программу для определения веса почтового груза, который можно поместить в самолете после посадки пассажиров и загрузки их багажа. Во время регистрации пассажиров ЭВМ должна подсчитывать количество пассажиров (условный вес одного пассажира 50 кг). Предусмотреть возможность ввода номера пассажира и веса его багажа в таблицу и вывода таблицы на экран. Упорядочить номера пассажиров в зависимости от веса багажа пассажиров. {Лабораторная работа №4 задача 1}
Unit Sort_Mas;
Interface {сортируется массив x, а элементы y переставляются соответственно} procedure sort(var x,y: array of integer; count: integer);
Implementation
procedure sort; var i,k,c: integer; f: boolean;
begin k:= 0; repeat f:= true; for i:= 0 to count-k-2 do begin if x[i] > x[i+1] then begin c:= x[i]; x[i]:= x[i+1]; x[i+1]:= c; c:= y[i]; y[i]:= y[i+1]; y[i+1]:= c; f:= false end; end; inc(k); until f; end; end.
Program Lab_Rab_4_1; Uses Crt, Sort_Mas; Const N_max = 30000; {максимальная грузоподъемность самолета} N = 300; {максимальное количество пассажиров} Ves = 50; {условный вес пассажира} Type mas1 = array [1..N] of integer; mas = array [1..2] of mas1;
{регистрация пассажиров} procedure Create(var x: mas; var l:integer); var i, S: integer; ch: char; begin Writeln('Регистрация пассажиров'); i:= 0; S:= 0; repeat inc(i); write('Введите регистрационный номер ',i, '-го пассажира '); ReadLn(x[1,i]); write('Введите вес багажа ',i, '-го пассажира '); ReadLn(x[2,i]); S:= S + x[2,i] + ves; Write('Продолжить? (Y/N) '); ReadLn(ch); If (i > N) or (S > N_max) then begin writeln('Самолет перегружен!'); break end; until (ch='N') or (ch='n'); l:= i; Writeln ('Регистрация завершена'); ReadKey; end;
{просмотр пассажиров} procedure View(x: mas; l:integer); var i, S: integer; begin
Writeln(' Информация о пассажирах'); Writeln('| № п/п| Регистрационный № | Вес багажа |'); Writeln('_________________________________________'); S:= 0; For i:= 1 to l do begin WriteLn('|', i:4, ' | ', x[1,i]:6,' | ', x[2,i]:6,' | '); S:= S + x[2,i] + ves; Writeln('_________________________________________'); end;
Writeln ('Всего ', l, ' пассажиров'); Writeln ('Общий вес ', S); ReadKey; end;
{oтсортированный просмотр пассажиров} procedure View_sort(x: mas; l:integer); var y: mas; t,t1: mas1;
begin t:= x[2]; t1:= x[1]; sort(t,t1,l); y[1]:= t1; y[2]:= t; Writeln('Упорядоченный вывод '); View(y,l); end;
{почтовый груз} procedure Gruz(x: mas; l:integer); var i, S: integer; begin
S:= 0; For i:= 1 to l do begin S:= S + x[2,i]; end;
Writeln ('Всего ', l, ' пассажиров'); Writeln ('Общий вес багажа ', S); Writeln ('Общий вес пассажиров ', ves * l); Writeln ('Вес почтового груза ', N_max - S - ves *l); ReadKey; end;
var Ch: integer; {пункт меню} A: mas; Count: integer;
Begin Count:= 0; Repeat ClrScr; Writeln('1 - Регистрация пассажиров '); Writeln('2 - Просмотр пассажиров '); Writeln('3 - Отсортированный вывод '); Writeln('4 - Почтовый груз '); Writeln('5 - Выход '); Writeln; Write('Введите № пункта меню - '); ReadLn(Ch); ClrScr; Case ch of 1: Create (A,Count); 2: View(A,Count); until Ch=5; End.
{Лабораторная работа №4 задача 2.1)} В одномерном целочисленном массиве заменить нечетные элементы, стоящие на четных местах их квадратами.
{Лабораторная работа №4 задача 2} Program Lab_Rab_4_2; Uses Crt; Const N = 10; {количество элементов массива} Type mas = array [1..N] of integer;
procedure View (x: mas); var i: integer; begin For i:= 1 to N do Write(x[i]:5); writeln; end;
procedure Create_Random (var x: mas); var i: integer; begin For i:= 1 to N do x[i]:= Random(100)-50; end;
procedure Create (var x: mas); var i: integer; begin ClrScr; For i:= 1 to N do begin Write('Введите ', i, ' элемент массива '); Readln(x[i]); end; end;
var A: mas; Ch,i: integer; Begin ClrScr; Randomize; Writeln('1 - Ввод массива '); Writeln('2 - Инициализация массива случайными числами '); Writeln;
repeat Write('Введите № пункта меню - '); ReadLn(Ch); Case ch of 1: Create (A); 2: Create_Random(A); else writeln('повторите ввод'); end; until (Ch=1) or (Ch=2); ClrScr; Writeln('Исходный массив'); View(A); i:= 2; while i <= N do begin If odd(A[i]) then A[i]:= sqr(A[i]); i:= i + 2; end; Writeln('Измененный массив'); View(A); ReadKey; End.
{Лабораторная работа №4 задача 2.2} Дана натуральная матрица размером n´n, все элементы которой различны. Найти скалярное произведение строки, в которой находится наибольший элемент матрицы, на столбец с наименьшим элементом.
{Лабораторная работа №4 задача 2.2} Program Lab_Rab_4_2_2; Uses Crt; Const N = 5; {количество элементов массива} Type mas = array [1..N,1..N] of byte;
procedure View (x: mas); var i,j: integer; begin For i:= 1 to N do begin For j:= 1 to N do Write(x[i,j]:5); writeln; end; end;
{создание массива случайных чисел с проверкой, того что все элементы разные} procedure Create_Random (var x: mas); var i,j: integer; chisla: set of byte; {множество выпавших чисел (тему множества см. ниже)} begin Randomize; chisla:= []; For i:= 1 to N do For j:= 1 to N do begin repeat x[i,j]:= Random(n*n+10); until not (x[i,j] in chisla); chisla:= chisla + [x[i,j]]; end; end;
procedure Create (var x: mas); var i,j: integer; begin ClrScr; For i:= 1 to N do For j:= 1 to N do begin Write('Введите A[',i,';',j, ']= '); Readln(x[i,j]); end; end;
function Max_i(x: mas): integer; var i,j,p,l: integer; begin p:= 1; l:= 1; For i:= 1 to N do For j:= 1 to N do if x[p,l] < x[i,j] then begin p:= i; l:= j; end; Max_i:= p; end;
function Min_j(x: mas): integer; var i,j,p,l: integer; begin p:= 1; l:= 1; For i:= 1 to N do For j:= 1 to N do if x[p,l] > x[i,j] then begin p:= i; l:= j; end; Min_j:= l; end;
var A: mas; Ch,m,k,i,S: integer; Begin ClrScr; Randomize; Writeln('1 - Ввод массива '); Writeln('2 - Инициализация массива случайными числами '); Writeln; repeat Write('Введите № пункта меню - '); ReadLn(Ch); Case ch of 1: Create (A); 2: Create_Random(A); else writeln('повторите ввод'); end; until (Ch=1) or (Ch=2); ClrScr; Writeln('Исходный массив'); View(A); m:= Max_i(A); k:= Min_j(A); Writeln; Writeln('Максимальный элемент в строке №=',m); Writeln('Минимальный элемент в столбце №=',k); S:=0; For i:= 1 to N do S:= S + A[m,i] * A[i,k]; Writeln('Скалярное произведение =',S); ReadKey; End.
Читайте также: А. Лабораторная установка Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|