ТИПОВАЯ ЗАДАЧА: ИНВЕНТАРИЗАЦИЯ КНИГ
ТИПОВАЯ ЗАДАЧА: ИНВЕНТАРИЗАЦИЯ КНИГ
Гвен Гленн хочет напечатать опись своих книг. Она хотела бы занести в нее различную информацию о каждой книге: ее название, фамилию автора, издательство, год издания, число страниц, тираж и цену. Теперь некоторые из этих элементов, такие, как название, можно записать в массив строк. Другие элементы требуют массив целого типа или массив типа float. Если работать с семью различными массивами и следить за веси содержащейся в них информацией, можно сойти с ума, особенно если Гвен желает иметь несколько списков - список, упорядоченный по названиям, список, упорядоченный по авторам, по цене и т. д. Гораздо лучше было бы использовать один массив, в котором каждый элемент содержал бы всю информацию о книге.
Но какой тип данных может содержать строки и числа одновременно и как-то хранить эту информацию раздельно? Ответом должна быть, конечно, тема данной главы - структура. Чтобы посмотреть, как создается структура и как она работает, начнем с небольшого примера. Для упрощения задачи введем два ограничения: первое - мы включим в опись только название книги, фамилию автора и цену; второе - ограничим опись до одной книги. Если у вас больше книг, не беспокойтесь; мы покажем, как расширить эту программу.
Сначала посмотрите на программу и ее результат, а потом мы рассмотрим основные вопросы.
/* инвентаризация одной книги */
#include <stdio.h>
#define MAXTIT 41 /* максимальная длина названия + 1 */
#define MAXAUT 31 /* максимальная длина фамилии автора + 1 */
struct book { /* шаблон первой структуры: book
является именем типа структуры */
char title [MAXTIT]; /* символьный массив для названия */
char author [MAXAUT]; /* символьный массив для фамилии автора */
float value; /* переменная для хранения цены книги */
}; /* конец шаблона структуры */
main( )
{
struct book libry; /* описание переменной типа book */
printf(" Введите, пожалуйста, название книги. ");
gets(libry. title); /* доступ к элементу title */
printf(" Теперь введите фамилию автора. ");
gets(libry.author);
printf(" Теперь введите цену. ");
scanf(" %f ", &libry.value);
printf("%s, %s: %p.2f ", libry.title, libry.autor,
libry.value);
printf("%s: " %s " (%p.2f) ", libry.author,
libry.title, libry.value);
}
Вот образец работы программы:
Введите, пожалуйста, название книги.
Искусство программирования для ЭВМ
Теперь введите фамилию автора.
Д. Кнут
Теперь введите цену.
5р.67
Искусство программирования для ЭВМ, Д. Кнут: 5р.67
Д. Кнут: "Искусство программирования для ЭВМ" (5р. 67)
Созданная нами структура состоит из трех частей: одна для названия, другая для фамилии автора и третья для цены. Мы должны изучить три основных вопроса:
1. Как устанавливать формат или "шаблон" для структуры.
2. Как объявлять переменную, соответствующую этому шаблону.
3. Как осуществлять доступ к отдельным компонентам структурной переменной.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
ОБЩАЯ ЗАДАЧА ОБУЧЕНИЯ ПРОГРАММИРОВАНИЮ
ОБЩАЯ ЗАДАЧА ОБУЧЕНИЯ ПРОГРАММИРОВАНИЮ Итак, мы хотим учить детей законам программирования. Еще не зная их, мы понимаем, что они неизбежно будут выражены в сумме некоторых достаточно специфических приемов. Нам еще предстоит разбираться, в какой мере они посильны детям,
10.6. Задача производителей и потребителей
10.6. Задача производителей и потребителей В разделе 7.3 мы описали суть задачи производителей и потребителей и привели несколько возможных ее решений, в которых несколько потоков-производителей заполняли массив, который обрабатывался одним потоком-потребителем.1. В нашем
Урок № 56. Инвентаризация расчетов с контрагентами
Урок № 56. Инвентаризация расчетов с контрагентами Инвентаризация расчетов с контрагентами – документ, который составляется в соответствии с действующим законодательством. Инвентаризацию необходимо проводить перед составлением годовой бухгалтерской отчетности и
Урок № 62. Инвентаризация ТМЦ на складе
Урок № 62. Инвентаризация ТМЦ на складе Инвентаризация – это способ проверки соответствия фактического наличия ТМЦ и прочего имущества субъекта хозяйствования в натуральном выражении (литры, штуки, комплекты, граммы и т. д.) данным бухгалтерского учета. Инвентаризация
Урок № 76. Инвентаризация основных средств
Урок № 76. Инвентаризация основных средств Как мы уже отмечали ранее, инвентаризация позволяет проверить соответствие фактического наличия ценностей данным бухгалтерского учета. Инвентаризация основных средств проводится с целью обеспечения достоверности учетных
5. Один объект — одна задача
5. Один объект — одна задача РезюмеКонцентрируйтесь одновременно только на одной проблеме. Каждый объект (переменная, класс, функция, пространство имен, модуль, библиотека) должны решать одну точно поставленную задачу. С ростом объектов, естественно, увеличивается
1.1.2 Типовая организация современной СУБД
1.1.2 Типовая организация современной СУБД Естественно, организация типичной СУБД и состав ее компонентов соответствует рассмотренному нами набору функций. Логически в современной реляционной СУБД можно выделить наиболее внутреннюю часть - ядро СУБД (часто его называют
Совет 24 Великолепная задача на сегодня
Совет 24 Великолепная задача на сегодня Хорошо сделать свою работу и получить за это высокую оценку приятно. Интуитивно большинство из нас это понимает, но когда дело доходит до реального приложения усилий, позволяющего выделиться, мы демонстрируем удивительную
4.5. Задача о восьми ферзях
4.5. Задача о восьми ферзях Эта задача состоит в отыскании такой расстановки восьми ферзей на пустой шахматной доске, в которой ни один из ферзей не находится под боем другого. Решение мы запрограммируем в виде унарного отношения:решение( Поз)которое истинно тогда и только
5.2.4. Задача классификации объектов
5.2.4. Задача классификации объектов Предположим, что у нас есть база данных, содержащая результаты теннисных партий, сыгранных членами некоторого клуба. Подбор пар противников для каждой партия не подчинялся какой-либо системе, просто каждый игрок встречался с
13.2.2. Задача о ханойской башне
13.2.2. Задача о ханойской башне Задача о ханойской башне (рис. 13.6) — это еще один классический пример эффективного применения метода разбиения задачи на подзадачи и построения И / ИЛИ-графа. Для простоты мы рассмотрим упрощенную версию этой задачи, когда в ней участвует
ТЕМА НОМЕРА: Задача с ограничениями
ТЕМА НОМЕРА: Задача с ограничениями Автор: Леонид Левкович-МаслюкВ этом номере мы заканчиваем тему «Наблюдатели в Альпах», начатую в «КТ» #686 и посвященную «мягкому и жесткому контролю при мониторинге информационных сетей». Напомним, что фраза в кавычках воспроизводит
Задача предложения rescue
Задача предложения rescue Последний комментарий позволяет нам продвинуться в лучшем понимании механизма исключений, обосновав теоретическую роль предложения rescue. Формальные рассуждения помогут получить полную