Разработка текста программы




УПРАЖНЕНИЯ.

q Разработать программу, которая вводит фактические данные из таблицы, представленной в Вашем варианте индивидуального задания и выводит на экран таблицу, подобную той, которая находится в индивидуальном задании (включая заголовок и примечания).

Пример решения задачи

В таблице, приведенной в индивидуальном задании, первая строка - общий заголовок таблицы, вторая - заголовки столбцов таблицы. Фактические данные составляют третью, четвертую и пятую строки. Шестая строка - примечания.

Буддийские монастыри Японии периода Нара
Название Школа Количество монахов Площадь земли (га)
Тодайдзи Т   368.8
Якусидзи С   54.7
Дайандзи Д   12.2
Примечание: Т - Тэндай; С - Сингон; Д - Дзедзицу

Программа должна начинаться с ввода фактических данных. Для удобства оператора перед вводом на экран должено выводиться приглашение, в котором перечисляется, какие именно данные ожидает программа. За одно приглашение-ввод должна вводиться одна строка фактических данных таблицы, т.е. приглашение-ввода должно повторяться трижды.

Введенные данные должны сохранятся в переменных программы.

На втором этапе программа выполняет вывод данных на экран. Каждая строка таблицы может выводиться одним оператором вывода. Среди строк, которые выводятся, будут строки без переменных значений (заголовки и линии) и строки с переменными значениями (строки с фактическими данными).

Для формирования наглядного табличного вида можна применять символы '|' и '-'.

Определение переменных является первой и самой главной задачей нашей программы. Для каждой переменной нужно подобрать такой тип, который бы обеспечивал представление в памяти ее значения с достаточным диапазоном и достаточной точностью.

Название. Во всех фактических значениях этот столбец является символьной строкой из 8 символов. Т.е. для представления его в памяти переменные, в которых хранятся значения этого столбца, должны быть объявлены как:

char name1[9], name2[9], name3[9];

дополнительный символ резервируется для обозначения конца символьной строки.

Школа. Эти данные являются одним символом. Их объявление:

char sch1, sch2, sch3;

Количество монахов. Эти данные являются целыми числами в диапазоне 10 - 220. Этот диапазон перекрывается диапазоном возможных значений типа unsigned short (диапазон этого типа: 0 - 255). Объявим соответственные переменные:

unsigned short cnt1, cnt2, cnt3;

Площадь земель. Это число с дробной частью, следовательно, соответствующие переменные должны быть переменными с плавающей точкой. Точность данных - всего один знак после точки, поэтому для их представления будет достаточно типа float: float sq1, sq2, sq3;

Разработка текста программы

Начинаем разработку текста програмы с заголовка главной функции main():

int main(void) Далее открывается тело функции и в нее включается описание переменных (см. п.2.2).

Кодовая часть программы начинается с приглашения - вывода строки-константы:

printf("1. Введите: название, школу, количество, площадь >"); за которым считываются данные, вводимые оператором: scanf("%s %c %d %f",name1, &sc1, &cnt1, &sq1); Поскольку описания этих функций хранятся в файле stdio.h, включаем этот файл в начало программы: #include <stdio.h> При вводе строка вводится по спецификации типа %s, один символ - по спецификации типа %c, целое число - по спецификации типа %d, число с плавающей точкой - по спецификации типа %f. Спецификации разделяются пробелами, т.е. и данные при вводе должны разделятся пробелами или переходом на новую строку. В списке ввода перед всеми элементами кроме того, который вводится по %s, ставится знак &.

Приглашение-ввод повторяется трижды, с разными переменными в списке ввода.

Для формирования вывода следует подсчитать ширину каждого столбца. Ширина первого столбца определяется размером фактических данных в строке - 9 символьных мест, с учетом пробелов в начале и в конце - 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 ставится признак выравнивания по правому краю.

Остальные четыре строки выводятся как текстовые константы.

Полный текст программы приведен ниже.

/*==================================== *//* Лабораторная работа № 6 *//* Типы данных и ввод-вывод *//* Пример выполнения. Вариант. *//*==================================== */#include <stdio.h>int 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"); return 0;}

Акуратный формат таблицы достигается несколькими запусками программы с последующим выравниванием столбцов по результатам запуска.

Варианты заданий.

Вариант 1

Некоторые виды антилоп
Название Группа Место обитания Численность популяции
Джейран A Азия  
Гну B Африка  
Бейза H Африка  
Групи: А - настоящие антилопы, B - коровьи антилопы, H - лошадиные антилопи

Вариант 2

Отдел кадров
Фамилия Инициалы Год рожд Оклад
Иванов И.И.   517.50
Петренко П.П.   219.10
Паниковский М.С.   300.00
Примечание: оклад установлен по состоянию на 1 января 2003 года

Вариант 3

Ведомость деталей
Наименование Тип Количество Вес 1 детали (г)
Фланец З    
Переходник П    
Станина О    
Примечание: принято такое кодирование типов: О - оригинальная, П - покупная, З - заимствованная

Вариант 4

Каталог библиотеки
Автор книги Название Год выпуска Группа
Сенкевич Потоп   Х
Ландау Механика   У
Дойль Сумчатые   C
Примечание: Х - художественная литература; У - учебная литература; С - справочная литература

Вариант 5

Проекты поиска внеземных сигналов
Год Научный руководитель Диаметр антенны (м) Рабочая частота (МГц)
  Дрейк    
  Троицкий    
  Хоровиц    
Примечание: наблюдались объекты от 2 звезд до нескольких галактик

Вариант 6

Офисные пакеты
Наименование Производитель Количество сост.частей Цена ($)
Office Microsoft    
SmartSute Lotus    
StarOffice Sun    
Примечание: возможно бесплатно получить продукт StarOffice через Internet

Вариант 7

Ведомость спортивних состязаний
Фамилия участника Код команды Количество балов Место в итоге
Баландин С 123.7  
Шишков Ш 79.98  
Кравченко Д 134.8  
Примечание: Д - "Динамо", С - "Спартак", Ш - "Шахтер"

Вариант 8

Приблизительное количество звезд разных спектральных классов в Галактике
Спектральный класс Приблизительная масса (отн.Солнца) Часть % Численность
O   0.00002  
F 1.25 2.9  
M 0.2 73.2  
Примечание: не показаны данные для классов: B, A, G, K

Вариант 9

Сельскохозяйственные предприятия
Название Вид собственности Площадь земли (га) Кол. работников
Заря Г    
Росинка А    
Петренко Ч    
Вид собственности: Г - государственная, Ч - частная, А - акционерная

Вариант 10

Прайс-лист
Наименование товара Тип товара Цена за 1 шт (грн) Минимальное количество в партии
Папка К 4.75  
Бумага К 13.90  
Калькулятор О 411.00  
Примечание: К - канцтовары, О - оргтехника

Вариант 11

Искуственно полученные элементы
Атомный номер Название Массовое число Период полураспада (лет)
  Нептуний    
  Берклий    
  Калифорний    
 

Вариант 12

Японские острова
Остров Площадь (кв.км) Кол. малых островов Протяженность береговой линии (км)
Хонсю      
Хоккайдо      
Сикоку      
 

Вариант 13

Ведомость спортивних состязаний
Фамилия участника Код команды Количество балов Место в итоге
Иванов И 123.7  
Петров П 79.98  
Сидоров С 134.8  
Примечание: Д - "Динамо", С - "Спартак", Ш - "Шахтер"

Вариант 14

Приблизительное количество звезд разных спектральных классов в Галактике
Спектральный класс Приблизительная масса (отн.Солнца) Часть % Численность
O   0.00002  
F 1.25 2.9  
M 0.2 73.2  
Примечание: не показаны данные для классов: B, A, G, K

Вариант 15

Подразделение
Фамилия Инициалы Год постпления Оклад
Иванов И.И.   517.50
Петренко П.П.   219.10
Паниковский М.С.   300.00
Примечание: оклад установлен по состоянию на 1 января 2003 года

Вариант 16

Ведомость деталей
Наименование Тип Количество Вес 1 детали (г)
Фланец З    
Переходник П    
Станина О    
Примечание: принято такое кодирование типов: О - оригинальная, П - покупная, З - заимствованная

Вариант 17

Каталог библиотеки
Автор книги Название Год выпуска Группа
Сенкевич Потоп   Х
Ландау Механика   У
Дойль Сумчатые   C
Примечание: Х - художественная литература; У - учебная литература; С - справочная литература

Вариант 18

Проекты поиска внеземных сигналов
Год Научный руководитель Диаметр антенны (м) Рабочая частота (МГц)
  Дрейк    
  Троицкий    
  Хоровиц    
Примечание: наблюдались объекты от 2 звезд до нескольких галактик

Вариант 19

Офисные пакеты
Наименование Производитель Количество сост.частей Цена ($)
Office Microsoft    
SmartSute Lotus    
StarOffice Sun    
Примечание: возможно бесплатно получить продукт StarOffice через Internet

Вариант 20

Ведомость спортивних состязаний
Фамилия участника Код команды Очки Место в итоге
Баландин С    
Шишков Ш    
Кравченко Д    
Примечание: Д - "Динамо", С - "Спартак", Ш - "Шахтер"

Вариант 21

Приблизительное количество звезд разных спектральных классов в Галактике
Спектральный класс Приблизительная масса (отн.Солнца) Часть % Численность
O   0.00002  
F 1.25 2.9  
M 0.2 73.2  
Примечание: не показаны данные для классов: B, A, G, K

Вариант 22

Сельскохозяйственные предприятия
Название Вид собственности Площадь земли (га) Кол. работников
Заря Г    
Росинка А    
Петренко Ч    
Вид собственности: Г - государственная, Ч - частная, А - акционерная

Вариант 23

Прайс-лист
Наименование товара Тип товара Цена за 1 шт (грн) Минимальное количество в партии
Папка К 4.75  
Бумага К 13.90  
Калькулятор О 411.00  
Примечание: К - канцтовары, О - оргтехника

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-27 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: