Лабораторна робота № 1
Тема: Основи програмування С++. Базові типи даних та ввод-вивод
Мета: отримання практичних навичок в роботі з типами даних мови C++ і використання функцій стандартного вводу-виводу.
Приклад рішення задачі
Буддійські монастирі Японії періоду Нара |
|||
Назва |
Школа |
Кількість ченців |
Площа землі (га) |
Тодайдзі |
Т |
220 |
368.8 |
Якусидзі |
С |
50 |
54.7 |
Дайандзі |
Д |
10 |
12.2 |
Примітка: Т - Тэндай; З - Сингон; Д - Дзедзицу |
Розробка алгоритму рішення
Визначення змінних програми
Назва - є символьним рядком з 8 символів: char name1[9], name2[9], name3[9]; додатковий символ резервується для позначення кінця символьного рядка.
Школа. Ці дані є одним символом. Їх оголошення: char sch1, sch2, sch3;
Кількість ченців - цілі числа, тип unsigned short (діапазон цього типу : 0 - 255). Оголошення змінних : unsigned short cnt1, cnt2, cnt3;
Площа земель - змінними з плаваючою точкою, тип float : float sq1, sq2, sq3;
Пояснення до тексту програми
Кодова частина програми починається із запрошення - виведення рядка-константи :
printf("1. Введіть: назву, школу, кількість, площу >");
за яким прочитуються дані, такі, що вводяться оператором:
scanf("%s %c %d %f", name1, &sc1, &cnt1, &sq1);
Специфікації типу : %s рядок, символ - %c, ціле число - %d, число з плаваючою точкою - %f. Специфікації розділяються пропусками, тобто і дані при введенні повинні розділяться пропусками або переходом на новий рядок. У списку введення перед усіма елементами, крім того, який вводиться по %s, ставиться знак &.
Для формування виводу слід підрахувати ширину кожного стовпця. Перший стовпець з урахуванням пропусків на початку і у кінці - 11. Ширина інших стовпців складає відповідно до 7, 11 і 13 символів. Враховуючи вертикальні лінії, ширина рядка складає 47 знакомісць.
Перший рядок - горизонтальна лінія, яка складається з символу '-', повтореного 47 разів. Другий рядок - загальний заголовок, доповнений до ширини 47 пропусками. Третій рядок - ще одна горизонтальна лінія. Четвертий і п'ятий рядки - заголовки стовпців, кожен з них має встановлену ширину. Шостий рядок - ще одна горизонтальна лінія.
Нарешті, рядки з сьомою до дев'ятої - фактичні дані. У кожному рядку виводяться значення набору змінних для одного рядка. Наприклад:
printf("| %9s | %c | %-3d | %5.1f |\n", name1, sc1, cnt1, sq1);
Значення імені виводяться :специфікація %s з шириною 9; значення школи - специфікація %c; Оскільки значення в цьому стовпці виводиться по центру стовпця, перед і після нього ставляться пропуски. Значення кількості - специфікація %d з шириною 3, а площа - %f із загальною шириною 5 і одним знаком після точки. Значення в цих стовпцях доповнюються до потрібної ширини пропусками. У стовпці 3 ставиться ознака вирівнювання по правому краю.
Повний текст програми.
/*******************************************************/
/* /* Лабораторна робота N 1 */
/* /* Типи даних та ввод-вивод */
/* /* Приклад виконання. Варіант N30. */
/*******************************************************/
##include <stdio.h>
void main(void){
char name1[9], name2[9], name3[9];
char sc1, sc2, sc3;
unsigned short cnt1, cnt2, cnt3;
float sq1, sq2, sq3;
/* /* Вступ фактичних данных*/
printf("1. Введіть: назву, школу, кількість, площу >");
scanf("%s %c %d %f", name1, &sc1, &cnt1, &sq1);
printf("2. Введіть: назву, школу, кількість, площу >");
scanf("%s %c %d %f", name2, &sc2, &cnt2, &sq2);
printf("3. Введіть: назву, школу, кількість, площу >");
scanf("%s %c %d %f", name3, &sc3, &cnt3, &sq3);
/* /* Виведення таблиці */
/* /* виведення заголовків */
printf("-----------------------------------------------\n");
printf("|Буддійські монастирі Японії періоду Нара |\n");
printf("|---------------------------------------------|\n");
printf("| Назва | Школа | Кількість|Площа землі|\n");
printf("| | | ченців| (га) |\n");
printf("|----------|-------|-----------|-------------|\n");
/* /* виведення рядків фактичних даних */
printf("| %9s | %c | %3d | %-5.1f |\n", name1, sc1, cnt1, sq1);
printf("| %9s | %c | %3d | %-5.1f |\n", name2, sc2, cnt2, sq2);
printf("| %9s | %c | %3d | %-5.1f |\n", name3, sc3, cnt3, sq3);
/* /* виведення приміток */
printf("|---------------------------------------------|\n");
printf("| Примітка: Т - Тэндай; З - Сингон; |\n");
printf("| Д - Дзедзицу |\n");
printf("-----------------------------------------------\n");
}