Лабораторный практикум
.pdfрабочей недели, и одновременно подсчитывается сумма деталей, которая выводится после выполнения внутреннего цикла.
Функция определения лидера. Данная функция имеет следующие параметры: массив структуры, количество элементов массива, порядковый номер в массиве структуры сборщика-лидера и порядковый номер дня недели, когда он достиг наивысшей производительности труда. Два последних параметра - это параметры, передающие значения по ссылке.
Для того чтобы определить сборщика-лидера (порядковый номер в массиве структуры), необходимо найти максимальное значение деталей, собранных каждым сборщиком за неделю. До цикла зададим начальное значение порядкового номера массива структуры, равное 1, и максимальное количество изделий, равное 0. Далее в цикле, после нахождения суммы всех деталей для каждого сборщика, сравним это максимальное значение с вычисленным и, если оно окажется меньшим, определим новое максимальное значение и новый порядковый номер, равный текущему индексу элемента массива. В заключительной части функции определим порядковый номер дня, когда сборщик-лидер достиг наивысшей производительности труда. Пусть начальное значение порядкового номера дня до цикла равно 1, а значение наибольшего количества деталей равно 0. В цикле ищется истинное значение наибольшего количества деталей и порядковый номер дня недели.
Функция:
void lider ( Wokers a[], int n, int &n_max, int &day)
{
int max=0;n_max=-1; int j;
for(int i=0;i<n;i++)
{
int sum=0;
for(j=0;j<6;j++) sum+=a[i].kol[j]; if(sum>max)
{
max=sum; n_max=i;
}
}
day=-1; int max_day=0; for(j=0;j<6;j++) if(a[n_max].kol[j]>max_day)
{
133
max_day=a[n_max].kol[j]; day=j;
}
}
Основная функция main. В основной функции выполняется инициализация массива структуры, выводится информация по каждому сборщику с использованием функции output, определяется лидер и день, когда он достиг наивысшей производительности труда (функция lider). Используя оператор множественного выбора switch, название дня недели выводится в общепринятом виде.
Функция main:
int main()
{
setlocale(LC_CTYPE,"Russian"); Wokers t[10]={
"Иванов",25,10,10,20,40,26, "Петров",45,20,16,29,39,84, "Сидоров",35,6,86,23,53,57, "Куликов",58,30,76,87,34,65, "Егорова",45,22,87,34,76,12, "Добрый",43,10,98,23,56,74, "Янова",50,28,84,83,74,67, "Борисова",60,35,76,34,56,78, "Миронов",39,17,34,54,66,45, "Ягодкин",45,18,34,43,54,65}; cout<<"Исходные данные"<<endl; output(t,10);
int n_max,day; lider(t,10,n_max,day); cout<<endl<<endl;
cout<<"Лидер: "<<setw(10)<<t[n_max].name<<"
день= "; switch(day)
{
case 0: cout<<"Понедельник";break; case 1: cout<<"Вторник ";break; case 2: cout<<"Среда ";break;
case 3: cout<<"Четверг ";break; case 4: cout<<"Пятница ";break; case 5: cout<<"Суббота";break; };
cout<<endl<<endl;
134
}
Результат выполнения программы приведен на рис.2.
Рис.2. Результат выполнения программы к примеру 2
Порядок выполнения работы
1.Разработать и выполнить программу в соответствии с вариантом задания.
2.Результаты выполнения программы занести в отчет по работе.
3.Показать результаты работы преподавателю.
Требования к отчету
Отчет должен содержать:
1)наименование лабораторной работы;
2)формулировка задания;
3)текст программы для варианта задания;
4)результат выполнения программы (скриншот).
135
Варианты заданий
Написать программу в соответствии с номером варианта. Номер варианта задания соответствует номеру компьютера в компьютерном классе, за которым выполняется лабораторная работа.
№ |
Задание |
п/п |
|
1Сформируйте массив, содержащий информацию о рейсах аэропорта (номер рейса, тип самолета, пункт отправления, пункт назначения, время отправления, время прибытия). Напишите программу, которая выдает информацию о рейсах аэропорта в алфавитном порядке названий пунктов отправления. Выведите на экран все рейсы, отправляющиеся в пункт А, значение которого введено с клавиатуры
2Сформируйте массив, содержащий сведения о номерах телефонов абонента: фамилия абонентов, год установки телефона. Напишите программу, которая выдает информацию об абонентах телефонной сети в алфавитном порядке фамилий. По введенной фамилии абонента выведите его номер телефона на экран
3Сформируйте массив, содержащий сведения об ассортименте игрушек в магазине: название игрушки, артикул, цена, странапроизводитель, для кого предназначена игрушка (мальчикам или девочкам, или тем и другим). Напишите программу, которая выдает информацию об ассортименте игрушек в алфавитном порядке стран-производителей игрушек. Выведите на экран информацию об игрушках, стоимость которых не превышает X руб. для категории Y
4Сформируйте массив, содержащий сведения о сдаче студентами сессии: факультет, номер группы, фамилия студента, оценки по пяти экзаменам. Напишите программу, которая выдает информацию о студентах в алфавитном порядке фамилий неуспевающих студентов. Выведите на экран средний балл, полученный каждым студентом группы X
136
Продолжение
№ |
Задание |
п/п |
|
5Сформируйте массив, содержащий сведения о личной коллекции книголюба: шифр книги, автор, название, год издания, местоположение (номер стеллажа). Напишите программу, которая выдает информацию о книгах в алфавитном порядке фамилий авторов книг. Выведите на экран информацию о книгах автора X
6Сформируйте массив, содержащий сведения о клиентах турагентства: фамилия клиента, страна турпоездки, год поездки, стоимость тура. Напишите программу, которая выдает информацию о клиентах турагентства в порядке возрастания стоимости тура. Выведите на экран информацию о клиентах, посетивших страну X
7Сформируйте массив, содержащий сведения об ассортименте обуви в магазине фирмы: артикул, наименование, количество, стоимость одной пары. Артикул начинается с буквы Д - для дамской обуви, М - для мужской, П - для детской. Напишите программу, которая выдает информацию об ассортименте обуви в порядке убывания ее стоимости. Выведите на экран информацию о всей дамской обуви
8Сформируйте массив, содержащий сведения о нападающих команды «Спартак»: фамилии игроков, число заброшенных ими шайб, число сделанных голевых передач, заработанное штрафное время. Напишите программу, которая выдает информацию о нападающих команды в порядке убывания забитых голов. Выведите на экран информацию о нападающих, имеющих количество результативных передач не менее X
9Сформируйте массив, содержащий сведения о том, какие из пяти предлагаемых дисциплин по выбору желает изучать студент: фамилия студента, факультет, номер группы, пять дисциплин, средний балл успеваемости. Выбираемая дисциплина отмечается символом 1, иначе - 0. Напишите программу, которая выдает информацию о студентах в алфавитном порядке их фамилий. Выведите на экран информацию о студентах, желающих изучать дисциплину X, чей средний балл успеваемости не ниже Y
137
Продолжение
№ |
Задание |
п/п |
|
10Сформируйте массив, содержащий сведения об отправлении поездов дальнего следования с Казанского вокзала: номер поезда, пункт назначения, время отправления, время в пути, наличие билетов. Напишите программу, которая выдает информацию о поездах дальнего следования, в порядке увеличения времени отправления. Выведите на экран информацию о поездах с пунктом назначения Х
11Сформируйте массив, содержащий сведения о сотрудниках института: фамилия работающего, название отдела, год рождения, стаж работы, должность, оклад. Напишите программу, которая выдает информацию о сотрудниках института в порядке возрастания стажа работы. Выведите на экран информацию о сотрудниках, чей стаж работы больше Х лет
12Сформируйте массив, содержащий сведения о пациентах глазной клиники: фамилия пациента, пол, возраст, место проживания (город), диагноз. Напишите программу, которая выдает информацию о пациентах в алфавитном порядке мест их проживания. Выведите на экран информацию о пациентах, чей возраст попадает в интервал от A до B
13Сформируйте массив, содержащий сведения о клиентах фирмы: наименование организации, дата основания, количество договоров на приобретение товаров. Напишите программу, которая выдает информацию о клиентах фирмы в алфавитном порядке наименований фирм. Выведите на экран информацию о фирмах, с которыми заключено более n договоров
14Сформируйте массив, содержащий сведения о клиентах турагентства: фамилия клиента, страна турпоездки, год поездки, стоимость тура. Напишите программу, которая выдает информацию о клиентах в порядке убывания года. Выведите на экран информацию о клиентах, стоимость тура которых не превосходил стоимость Y
138
Продолжение
№ |
Задание |
п/п |
|
15Сформируйте массив, содержащий сведения о личной коллекции книголюба: шифр книги, автор, название, год издания, местоположение (номер стеллажа). Напишите программу, которая выдает информацию о книгах в алфавитном порядке названий книг. Выведите на экран информацию о книгах, изданных после
XXXX г.
16Сформируйте массив, содержащий сведения об ассортименте обуви в магазине фирмы: артикул, наименование, количество, стоимость одной пары. Артикул начинается с буквы Д - для дамской обуви, М - для мужской, П - для детской. Напишите программу, которая выдает информацию об ассортименте обуви в алфавитном порядке наименований. Выведите на экран информацию об обуви, стоимость которой находится в диапазоне от A до B
17Сформируйте массив, содержащий сведения о сдаче студентами сессии: факультет, номер группы, фамилия студента, оценки по пяти экзаменам. Напишите программу, выдающую информацию о результатах сессии в алфавитном порядке названий факультетов. Выведите на экран информацию о неуспевающих студентах факультета X
18Сформируйте массив, содержащий сведения о теннисистах чемпионата: фамилия спортсмена, число выигранных матчей, количество двойных подач, количество подач навылет. Напишите программу, которая выдает информацию о теннисистах в порядке убывания подач навылет. Выведите на экран информацию о спортсменах, количество выигранных матчей у которых не менее X
19Сформируйте массив, содержащий сведения о том, какие из пяти предлагаемых дисциплин по выбору желает изучать студент: фамилия студента, факультет, номер группы, пять дисциплин, средний балл успеваемости. Выбираемая дисциплина отмечается символом 1, иначе - 0. Напишите программу, которая выдает информацию о студентах в порядке убывания среднего балла. Выведите на экран дисциплину, которую не желает изучать большинство студентов
139
Продолжение
№ |
Задание |
п/п |
|
20Сформируйте массив, содержащий сведения об отправлении поездов дальнего следования с Казанского вокзала: номер поезда, пункт назначения, время отправления, время в пути, наличие билетов. Напишите программу, которая выдает информацию о поездах дальнего следования в порядке убывания времени в пути. Выведите на экран информацию о поездах, отправляющихся в рейс после X ч
21Сформируйте массив, содержащий сведения об ассортименте игрушек в магазине: название игрушки, артикул, цена, странапроизводитель, для кого предназначена игрушка (мальчикам или девочкам, или тем и другим). Напишите программу, которая выдает информацию об ассортименте игрушек в порядке убывания цены. Выведите на экран информацию об игрушках для категории X и стране-производителе Y
22Сформируйте массив, содержащий сведения о пациентах глазной клиники: фамилия пациента, пол, возраст, место проживания (город), диагноз. Напишите программу, которая выдает информацию о пациентах в алфавитном порядке фамилий пациентов. Выведите на экран информацию об иногородних пациентах с диагнозом J
23Сформируйте массив, содержащий сведения о сотрудниках института: фамилия работающего, название отдела, год рождения, стаж работы, должность, оклад. Напишите программу, которая выдает информацию о сотрудниках в порядке возрастания года рождения. Выведите на экран информацию о сотрудниках, чей оклад не превышает Х руб.
24Сформируйте массив, содержащий сведения о телефонных номерах абонентов: фамилия абонента, год установки телефона. Напишите программу, которая выдает информацию об абонентах по возрастанию года установки телефонов и определите количество установленных телефонов с XXXX г. Номер года вводится с клавиатуры
140
Окончание
№ |
Задание |
п/п |
|
25Сформируйте массив, содержащий информацию о рейсах аэропорта (номер рейса, тип самолета, пункт отправления, пункт назначения, время отправления, время прибытия). Напишите программу, которая выдает информацию о рейсах аэропорта в алфавитном порядке названий пунктов назначений. Выведите на экран информацию о рейсах, время отправления которых позже времени А, введенного с клавиатуры
141
Лабораторная работа № 8
Программирование задач с использованием строкового типа данных
Цель работы: изучение возможности программирования задач с использованием строкового типа данных; получение практических навыков программирования с использованием строк.
Теоретические сведения
Строка - это набор символов. Признаком конца строки служит 0.
Общий вид описания переменных строкового типа:
char имя_массива[кол-во символов в строке]; char имя_массива[];
char *имя_массива
Например:
char str[25]; char my_str[]; char *str_1;
Инициализация переменных строкового типа. Для задания зна-
чений переменным строкового типа достаточно при объявлении переменной присвоить строку символов, заключенных в кавычки. Размер строки можно не указывать, компилятор вычислит размер строки самостоятельно. Можно выделять динамическую область памяти для строковых переменных.
Примеры инициализации:
char str[25]=”The first string”; char my_str[]=”The second string”; char *str_1=new char[25]; strcpy(str_1,”The third string”);
142