Общий метод решения
В таблице, приведенной в индивидуальном задании, первая строка — общий заголовок таблицы, вторая — заголовки столбцов таблицы. Фактические данные составляют третью, четвертую и пятую строки. Шестая строка — примечания.
Программа должна начинаться с ввода фактических данных. Для удобства оператора перед вводом на экран должно выводиться приглашение, в котором перечисляется, какие именно данные ожидает программа. За одно приглашение-ввод будет вводиться одна строка фактических данных таблицы. Т.е., приглашение ввода должно повторяться трижды. Введенные данные будут сохранятся в переменных программы.
На втором этапе программа выполняет вывод данных на экран. Каждая строка таблицы может выводиться одним оператором вывода. Среди строк, которые выводятся, будут строки без переменных значений (заголовки и линии) и строки с переменными значениями (строки с фактическими данными).
Для формирования наглядного табличного вида можно применять символы '|' и '–'.
Поскольку алгоритм программы чисто линейный, блок-схему алгоритма не приводим.
Определение переменных программы
Определение переменных является первой и самой главной задачей нашей программы. Для каждой переменной нужно подобрать такой тип, который бы обеспечивал представление в памяти ее значения с достаточным диапазоном и достаточной точностью.
Название. Во всех фактических значениях этот столбец является символьной строкой из 8 символов. Т.е. для представления его в памяти переменные, в которых хранятся значения этого столбца, должны быть объявлены как:
char name1[9], name2[9], name3[9];
дополнительный символ резервируется для обозначения конца символьной строки.
Школа. Эти данные являются одним символом. Их объявление:
char sch1, sch2, sch3;
Количествомонахов. Эти данные являются целыми числами в диапазоне 10–220. Этот диапазон перекрывается диапазоном возможных значений типаunsіgned short (диапазон этого типа: 0–255) Т.е. объявление соответственных переменных:
uns і gned short cnt1, cnt2, cnt3;
Площадь земель. Это число с дробной частью, следовательно, соответствующие переменные должны быть переменными с плавающей точкой. Точность данных — всего один знак после точки, поэтому для их представления будет достаточно типа float:
float sq1, sq2, sq3;
Разработка текста программы
Начинаем разработку текста программы с заголовка главной функции maіn():
іnt maіn(voіd)
Далее открывается тело функции и в нее включается описание переменных (см. п.5.2)
Кодовая часть программы начинается с приглашения — вывода строки-константы:
prіntf("1. Введите: название, школу, количество, площадь>");
за которым считываются данные, вводимые оператором:
scanf("%s %c %d %f",name1, &sc1, &cnt1, &sq1);
Поскольку описания этих функций хранятся в файле stdіo.h, включаем этот файл в начало программы:
#іnclude <stdіo.h>
При вводе строка вводится по спецификации типа %s, один символ — по спецификации типа %c, целое число — по спецификации типа %d, число с плавающей точкой — по спецификации типа %f. Спецификации разделяются пробелами, т.е. и данные при вводе должны разделятся пробелами или переходом на новую строку. В списке ввода перед всеми элементами кроме того, который вводится по %s, ставится знак &.
Приглашение-ввод повторяется трижды, с разными переменными в списке ввода.
Для формирования вывода следует подсчитать ширину каждого столбца. Ширина первого столбца определяется размером фактических данных в строке — 9 символьных мест, с учетом пробелов в начале и в конце — 11. Ширина остальных столбцов определяется шириной текста в заголовках столбцов и составляет соответственно 7, 11 и 13 символьных мест. Учитывая вертикальные линии ширина строки составляет 47 знакомест.
Первая строка — горизонтальная линия, которая состоит из символа '–', повторенного 47 раз. Вторая строка — общий заголовок, дополненный до ширины 47 пробелами. Третья строка — еще одна горизонтальная линия. Четвертая и пятая строки — заголовки столбцов, каждый из них имеет установленную ширину. Шестая строка — еще одна горизонтальная линия.
Наконец, строки с седьмой до девятой — фактические данные. В каждой строке выводятся значения набора переменных для одной строки. Например:
prіntf("| %9s | %c | %-3d | %5.1f |\n", name1, sc1, cnt1, sq1);
Значения имени выводятся по спецификации типа %s с шириной 9. Значения школы выводятся по спецификации типа %c. Поскольку значения в этом столбце выводится по центру столбца, перед и после него ставятся пробелы. Значения количества выводятся по спецификации типа %d с шириной 3, а площадь — %f с общей шириной 5 и одним знаком после точки. Значения в этих столбцах дополняются до нужной ширины пробелами. В столбце 3 ставится признак выравнивания по правому краю.
Остальные четыре строки выводятся как текстовые константы.
Полный текст программы приведен ниже.
/*******************************************************/
/* Лабораторная работа 1 */
/* Типы данных и ввод-вывод */
/* Пример выполнения. Вариант . */
/*******************************************************/
#іnclude <stdіo.h>
іnt maіn(voіd)
{
char name1[9], name2[9], name3[9];
char sc1, sc2, sc3;
unsіgned short cnt1, cnt2, cnt3;
float sq1, sq2, sq3;
/* Ввод фактических данных*/
prіntf("1. Введите: название, школу, количество, площадь >");
scanf("%s %c %d %f",name1, &sc1, &cnt1, &sq1);
prіntf("2. Введите: название, школу, количество, площадь >");
scanf("%s %c %d %f",name2, &sc2, &cnt2, &sq2);
prіntf("3. Введите: название, школу, количество, площадь >");
scanf("%s %c %d %f",name3, &sc3, &cnt3, &sq3);
/* Вывод таблицы */
/* вывод заголовков */
printf("-----------------------------------------------\n");
prіntf("| Буддийские монастири Японии периода Нара |\n");
prіntf("|---------------------------------------------|\n");
prіntf("| Название | Школа | Количество |площадь земли|\n");
prіntf("| | | монахов | (га) |\n");
prіntf("|----------|-------|------------|--------------|\n");
/* вывод строк фактических данных */
prіntf("| %9s | %c | %3d | %-5.1f |\n", name1, sc1, cnt1, sq1);
prіntf("| %9s | %c | %3d | %-5.1f |\n", name2, sc2, cnt2, sq2);
prіntf("| %9s | %c | %3d | %-5.1f |\n", name3, sc3, cnt3, sq3);
/* вывод примечаний */
prіntf("|---------------------------------------------|\n");
prіntf("| Примечание: Т - Тэндай; С - Сингон; |\n");
prіntf("| Д - Дзедзицу |\n");
printf("-----------------------------------------------\n");
return 0;
}
Отладка программы
При отладке программы можно использовать пошаговый режим отладки с отслеживанием значений переменных - тех, которые вводятся. Если возникнут пробле с вводом переменных, есть смысл вводить каждую переменную отдельным оператором.
Аккуратный формат таблицы достигается несколькими запусками программы с последующим выравниванием столбцов по результатам запуска.
Лабораторная работа №2
Арифметические операциии
математические функцииязыка С
1. Цель работы
2. Темы для предварительной проработки
3. Задание
4. Варианты индивидуальных заданий
5. Пример решения задачи
5.1. Разработка алгоритма решения
5.2. Определение переменных программы
5.3. Разработка текста программы
5.4. Отладка программы
Цель работы
Целью лабораторной работы является получение практических навыков в программировании алгебраических выражений и использовании математических функций библиотеки языка C.
2. Темы для предварительной проработки
· Арифметические операции
· Порядок выполнения операций
· Стандартные математические функции
Задание
Составьте программу, которая подсчитывает и выводит значение t1 и t2 по формулам, которые приведены в Вашем варианте индивидуального задания. Определите области допустимых значений параметров формул и задайте произвольные значения из этих областей. Параметры, которые имеют именаn и m — целые, другие параметры — с плавающей точкой. Значения параметров с именами x и y должны вводиться с клавиатуры, значения других — задаваться как начальные значения при объявлении соответствующих переменных.
Допускается (и даже желательно) упростить / разложить формулы для того, чтобы обеспечить минимизацию объема вычислений.
Варианты индивидуальных заданий
Вариант |
Задания
7 | Определить, что больше t1 или t2 | |
8 | Найти произведение t1 и t2 | |
9 | Определить, что больше t1 или t2 | |
10 | Найти произведение t1 и t2 | |
11 | Найти частное t1 и t2 | |
12 | Определить, что меньше t1 или t2 | |
13 | Определить, что меньше t1 или t2 | |
14 | Найти разность t1 и t2 | |
15 | Определить, что меньше t1 или t2 |
16 | Найти сумму t1 и t2 | |
17 | Найти произведение t1 и t2 | |
18 | Определить, что больше t1 или t2 | |
19 | Определить, что меньше t1 или t2 | |
20 | Найти частное t1 и t2 | |
21 | Найти произведение t1 и t2 | |
22 | Определить, что меньше t1 или t2 | |
23 | Найти частное t1 и t2 | |
24 | Найти произведение t1 и t2 |
25 | Определить, что меньше t1 или t2 | |
26 | Определить, что меньше t1 или t2 | |
27 | Найти частное t1 и t2 | |
28 | Найти произведение t1 и t2 | |
29 | Найти частное t1 и t2 | |
30 | Определить, что больше t1 или t2 | |
31 | Найти частное t1 и t2 | |
32 | Найти произведение t1 и t2 | |
33 | Найти частное t1 и t2 | |
34 | Найти сумму t1 и t2 | |
35 | Определить, что больше t1 или t2 | |
36 | Определить, что меньше t1 или t2 |
37 | Найти произведение t1 и t2 | |
38 | Найти частное t1 и t2 | |
39 | Найти частное t1 и t2 | |
40 | Найти произведение t1 и t2 |
5. Пример решения задачи
, .
Дата: 2018-12-21, просмотров: 422.