- •Основи програмування методичні вказівки та індивідуальні завдання
- •В ступ
- •Порядок виконання лабораторних робіт
- •Завдання до лабораторних робіт Лабораторна робота № 1
- •Лабораторна робота № 2
- •Лабораторна робота № 3
- •Int SumaCyfr(long c); /* оголошення функцій */
- •Лабораторна робота № 4
- •Лабораторна робота № 5
- •Варіанти індивідуальних завдань
- •Лабораторна робота № 6
- •Варіанти індивідуальних завдань
- •Лабораторна робота № 7
- •Варіанти індивідуальних завдань
- •Лабораторна робота № 8
- •Варіанти індивідуальних завдань
- •Лабораторна робота № 9
- •Варіанти індивідуальних завдань
- •Лабораторна робота № 10
- •Варіанти індивідуальних завдань
- •Лабораторна робота № 11
- •Варіанти індивідуальних завдань
- •Лабораторна робота № 12
- •Варіанти індивідуальних завдань
- •Література
Лабораторна робота № 12
Тема роботи: Опрацювання структур
Мета роботи: закріпити знання про цілісну організацію різнотипних даних у формі структурних типів; здобути практичні навики формування простих баз даних як масивів структур і роботи з ними.
Методичні вказівки: 1. Проаналізувати дані, які мають бути опрацьовані в програмі, та визначити форму і склад полів відповідної структури чи структур.
Оголосити шаблон (шаблони) структур і через декларацію typedef надати кожному шаблону власне найменування.
Дані, що вводяться у процесі реалізації програми, занести в масив попередньо оголошених структур. Підказка: у разі введення даних дійсних типів, щоб уникнути помилки виконання функції scanf(), доцільно застосувати додаткову змінну, в яку зчитувати введені дійсні значення, а потім переписати їх у потрібні поля структур.
Якщо задача передбачає використання певних довідкових даних, то доцільно сформувати з них додатковий масив структур, який можна проініціалізувати безпосередньо в програмі.
Роздрукувати введені дані у формі таблиці, яка повинна мати відповідний заголовок. Розрахувати й вибрати зручну для сприйняття ширину колонок таблиці та форму відображення даних. Доцільно також вказати назви стовпців таблиці.
Виконати над даними структур дії, вказані в індивідуальному завданні. Для впорядкування структур застосувати один із методів сортування. У звертаннях до полів структур обов’язково використати обидві операції: “крапка” та “стрілка”.
У зручній і наочній формі відобразити результати опрацювання бази даних, створеної у програмі.
Оформити звіт про виконання лабораторної роботи, у якому вказати дані, що вводились, та результати роботи програми, виведені на екран.
Варіанти індивідуальних завдань
З клавіатури ввести послідовність адрес, кожна з яких задається структурою з полями: <Індекс>, <Місто>, <Вулиця>, <Будинок>. Відсортувати ведені дані за порядком зростання індексів та роздрукувати їх у формі таблиці. Визначити відсоток львівських адрес.
З клавіатури ввести послідовність даних про результати роботи цеху за декілька місяців: <Номер місяця>, <План>, <Фактичний випуск>. Роздрукувати введені дані у вигляді таблиці, відсортувавши їх за порядком зменшення відсотку виконання плану. В таблиці замінити номери місяців їхніми найменуваннями.
З клавіатури ввести послідовність записів, які містять дані про результати сесії на курсі: <Порядковий номер>, <Група>, <Середній рейтинговий бал>. Роздрукувати введені дані у вигляді таблиці, відсортувавши їх за порядком спадання рейтингових балів. Окремо зазначити три групи напряму “Комп’ютерні науки” з найвищим середнім рейтинговим балом.
З клавіатури ввести послідовність записів, які містять дані медичного обстеження студенів: <Прізвище, ініціали>, <Вік>, <Стать>, <Зріст>, <Вага>. Роздрукувати введені дані у вигляді таблиці, відсортувавши їх за прізвищами студенів в абетковому порядку. Визначити середній зріст і вагу студентів жіночої і чоловічої статі.
З клавіатури ввести набір даних з інформацією про наявність санаторних путівок: <Назва санаторію>, <Місцезнаходження>, <Лікувальний профіль>, <Кількість путівок>. Роздрукувати введені дані у вигляді таблиці, згрупувавши їх за лікувальними профілями санаторіїв. Визначити, у санаторії якого профілю надійшло найбільше путівок.
З клавіатури ввести набір записів із полями: <Ключ>, <Повідомлення> (ключ – ціле число). Відсортувати введені записи за зростанням значень ключів. У відсортований масив ввести два нових записи так, щоб зберегти загальну впорядкованість масиву. Роздрукувати результуючий масив.
З клавіатури ввести набір даних у формі структур, що містять інформацію про читачів бібліотеки: <Прізвище, ініціали>, <Рік народження>, <Стать>, <Адреса>. Роздрукувати введені дані у вигляді таблиці, відсортувавши їх за прізвищами читачів у абетковому порядку. Визначити найстаршого з читачів (якщо таких декілька, то вказати всіх).
З клавіатури ввести послідовність записів, які містять інформацію про студентські групи інституту: <Група>, <Загальнаь кількість студентів>, <Кількість студентів, які отримують стипендії>, <Кількість студентів, які мають академзаборгованості>. Роздрукувати введені дані у формі таблиці, відсортувавши їх за курсами (номер курсу визначати з найменування групи). Наприкінці навести узагальнені дані для студентів другого курсу.
З клавіатури ввести набір даних про книги у формі: <Автор>, <Найменування>, <Видавництво>, <Рік видання>. Надрукувати введений список книг у вигляді таблиці, згрупувавши їх за роками видань у спадному порядку. Окремо вивести дані про книги з програмування в середовищі C/C++.
З клавіатури ввести послідовність даних про школярів – учасників спортивних змагань: <Прізвище, ім’я>, <Школа>, <Клас>. Роздрукувати введені дані у вигляді таблиці, згрупувавши їх за номерами шкіл у зростаючому порядку, а в межах школи – за класами. Визначити школу, з якої в змаганнях приймає участь найбільше дев’ятикласників.
З клавіатури ввести набір цілочислових даних, які задають координати (x, y, z) вершин проcторового багатокутника. Роздрукувати введені дані у вигляді таблиці, відсортувавши їх за зростанням координати z. Визначити, чи є підгрупи точок, що належать спільним горизонтальним площинам (мають однакову координату z ). Якщо так, то визначити найчисленнішу групу, інакше вивести повідомлення про відсутність спільних груп.
З клавіатури ввести послідовність записів, які складаються зі слів-термінів і їхніх перекладів на іноземну мову. Очистити екран. Випадковим чином вибрати з масиву-словника N термінів (серед них не повинно бути повторень), до кожного з яких користувач повинен ввести переклад. Визначити відсоток правильних відповідей.
З клавіатури ввести послідовність даних, які містять координати ( x, y) та колір набору екранних точок (кількість кольорів не перевищує 4). Роздрукувати введені дані у вигляді таблиці, згрупувавши їх за кольорами. Визначити дві точки кожного кольору, віддаль між якими найбільша.
З клавіатури ввести набір даних про автомобілі за формою: <Марка>, <Номер автомобіля>, <Рік випуску>, <Пробіг>. Роздрукувати введений список у вигляді таблиці, відсортувавши його за роками випуску автомобілів від найсучасніших до найстаріших. Визначити і надрукувати дані про середній пробіг по кожній з марок автомобілів.
З клавіатури ввести послідовність даних, які містять дані про результати сесії студентів групи: <Прізвище, ім’я>, <Список рейтингових оцінок>. Роздрукувати введені дані у вигляді таблиці, відсортувавши їх за прізвищами студентів в абетковому порядку. Визначити двох студентів з найвищим середнім рейтинговим балом.
З клавіатури ввести послідовність записів, які мають два поля: <Рік> і <Подія>. Відсортувати введені дані за порядком спадання років і надрукувати у формі таблиці. Окремо надрукувати список подій, що потрапляють у заданий часовий проміжок, або вказати, що таких подій серед введених немає.
З клавіатури ввести послідовність даних про вокальні колективи району: <Назва колективу>, <Рік створення>, <Кількість учасників>, <Керівник>. Роздрукувати введені дані у вигляді таблиці, відсортувавши їх за назвами колективів в абетковому порядку. Випадковим чином вибрати зі списку три колективи, надрукувати їхні найменування та вказати найчисленніший серед цих колективів.
З клавіатури ввести послідовність даних про результати роботи бригади за тиждень: <Номер дня>, <План>, <Фактичний виробіток>. Сформувати масив із введених даних і відсортувати їх за порядком зростання плану. Роздрукувати відсортовані дані у формі таблиці (у таблиці замінити номери днів їхніми найменуваннями). Вказати дні з найвищим і найменшим відсотком виконання плану.
З клавіатури ввести набір даних з інформацією про результати технічного огляду автомобілів: <Номер автомобіля>, <Марка>, <Власник>, <Несправності>. Роздрукувати введений список у вигляді таблиці, відсортувавши його за прізвищами власників в абетковому порядку. Визначити марку найпопулярнішого автомобіля – яких найбільше в списку техогляду.
З клавіатури ввести послідовність записів, які містять дані для комп’ютерного тестування школярів: <Питання>, <4 варіанти відповідей>, <Номер правильної відповіді>. Очистити екран. Випадковим чином вибирати з масиву тестових даних 5 питань (серед них не повинно бути повторень), до кожного з яких школяр повинен ввести відповідь. Вказати правильність кожної відповіді, а в разі помилки назвати вірний варіант.
З клавіатури ввести послідовність цілочислових даних, які задають координати ( x, y, z ) групи проcторових точок. Роздрукувати введені дані у вигляді таблиці, відсортувавши їх за зростанням віддалі від початку координат. Визначити, чи серед них є хоча б дві точки, які мають однакову координату x . Якщо є такі, то надрукувати групи точок зі спільними x-координатами.
Задано масив довідкової інформації зі записами, що мають поля: <Код товару>, <Вартість>. З клавіатури ввести послідовність даних про надходження товарів: <Найменування товару>, <Код>, <Кількість> (дані про один і той самий товар можуть зустрічатись декілька разів). Сформувати масив з введених даних. За даними цих двох масивів роздрукувати зведений список у вигляді таблиці з колонками: <Код>, <Найменування товару>, <Сумарна кількість>, <Сумарна вартість>, відсортований за кодами товарів.
З клавіатури ввести послідовність записів, що містять дані про результати сесії студентів групи: <Прізвище, ім’я>, <Список рейтингових оцінок>. Обчислити середній рейтинговий бал кожного студента і роздрукувати сумарні дані у вигляді таблиці, відсортувавши їх за спаданням середніх рейтингових балів. Вказати відсоток студентів, середній рейтинговий бал яких перевищує 70.
З клавіатури ввести послідовність записів, які містять дані про хід передплати періодичних видань: <Найменування видання>, <Індекс>, <Передплатник>. Сформувати масив із введених даних. Потім сформувати новий масив із зведеними даними: <Індекс>, <Найменування видання>, <Кількість передплатників>. Роздрукувати зведені дані у вигляді таблиці, попередньо відсортувавши їх за індексами. Визначити найпопулярніше видання.
Задано масив довідкової інформації зі записами: <Код виробу>, <Ціна виробу>. З клавіатури ввести послідовність даних про вироби, відправлені зі складу протягом тижня: <Найменування виробу>, <Код>, <Кількість> (дані про один і той самий товар можуть зустрічатись декілька разів). Сформувати масив з введених даних. За даними цих двох масивів роздрукувати зведений список у вигляді таблиці з колонками: <Найменування товару>, <Сумарна кількість>, <Загальна вартість>, попередньо відсортувавши дані за порядком спадання параметра <Загальна вартість>.
З клавіатури ввести послідовність записів, які містять дані про студентів-спортсменів інституту: <Прізвище, ім’я>, <Рік народження>, <Вид спорту>, <Розряд>. Надрукувати введені дані у формі таблиці, згрупувавши їх за видами спорту. Визначити наймолодшого спортсмена з кожного виду спорту (якщо таких декілька, то вказати всіх).
З клавіатури ввести послідовність даних про книги у формі: <Автор>, <Найменування>, <Рік видання>, <Примітки>. Роздрукувати введені дані у вигляді таблиці, відсортувавши їх за прізвищами авторів в абетковому порядку. Окремо надрукувати список книг, виданих до 1990 року.
З клавіатури ввести послідовність даних про школярів – учасників олімпіади: <Прізвище, ім’я>, <Місто>, <Школа>, <Клас>. Роздрукувати введені дані у вигляді таблиці, попередньо відсортувавши їх за прізвищами учнів в абетковому порядку. Визначити місто, звідки на олімпіаду приїхало найбільше школярів.
З клавіатури ввести послідовність структур, кожна з яких задає координати двох протилежних (лівої верхньої і правої нижньої) вершин прямокутника, сторони якого паралельні до осей координат. Роздрукувати введені дані у вигляді таблиці, відсортувавши їх за зростанням лівої координати x прямокутника. Визначити й вказати прямокутники з найбільшою і найменшою площею.
З клавіатури ввести послідовність записів, які містять дані медичного обстеження школярів: <Прізвище, ім’я>, <Дата народження>, <Зріст>, <Вага>. Роздрукувати введені дані у вигляді таблиці, відсортувавши їх за прізвищами учнів в абетковому порядку. Визначити двох найвищих школярів серед дітей віком від 10 до 11 років.
