ТИПОВАЯ ЗАДАЧА: ИНВЕНТАРИЗАЦИЯ КНИГ

ТИПОВАЯ ЗАДАЧА: ИНВЕНТАРИЗАЦИЯ КНИГ

     Гвен Гленн хочет напечатать опись своих книг. Она хотела бы занести в нее различную информацию о каждой книге: ее название, фамилию автора, издательство, год издания, число страниц, тираж и цену. Теперь некоторые из этих элементов, такие, как название, можно записать в массив строк. Другие элементы требуют массив целого типа или массив типа 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. Как осуществлять доступ к отдельным компонентам структурной переменной.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

ОБЩАЯ ЗАДАЧА ОБУЧЕНИЯ ПРОГРАММИРОВАНИЮ

Из книги автора

ОБЩАЯ ЗАДАЧА ОБУЧЕНИЯ ПРОГРАММИРОВАНИЮ Итак, мы хотим учить детей законам программирования. Еще не зная их, мы понимаем, что они неизбежно будут выражены в сумме некоторых достаточно специфических приемов. Нам еще предстоит разбираться, в какой мере они посильны детям,


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. Формальные рассуждения помогут получить полную