- •Структура — это группа связанных переменных.
- •struct inv_type
- •Чтобы с помощью этой структуры
- •struct inv_type
- •Если для программы достаточно только
- •Общий формат объявления
- •Доступ к членам структуры
- •Следовательно, чтобы вывести значение
- •с помощью этого кода можно
- •Массивы структур
- •Разрабатываемая программа должна обеспечить выполнение следующих действий:
- •int main()
- •// Инициализация массива структур.
- •// Получение команды меню, выбранной пользователем.
- •char *strchr(const char *str, int ch);
- •// Ввод элементов в инвентарную ведомость.
- •// Ввод информации.
- •// Модификация существующего элемента. void update()
- •// Отображение на экране инвентарной ведомости. void display()
- •Передача структур функциям
- •Присваивание структур
- •Эта программа генерирует следующие
- •struct stype1
- •Использование указателей на
- •Чтобы найти адрес структурной
- •struct bal {
- •К членам структуры можно получить
- •Указатель на структуру можно
- •Первый тип time_t, предназначен для
- •Структура tm имеет следующий формат.
- •Основным средством определения
- •Чтобы преобразовать календарное
- •// Эта программа отображает текущее системное время.
- •Вот один из возможных результатов
- •Ссылки на структуры
- •// Функция, которая получает и возвращает ссылку на
Массивы структур
Структуры могут быть элементами массивов.
Чтобы объявить массив структур, необходимо сначала определить структуру, а затем объявить массив элементов этого структурного типа.
Например, чтобы объявить 100-элементный массив структур типа inv_type, достаточно записать следующее.
inv_type invtry[100];
Например, чтобы отобразить на экране содержимое члена on_hand третьей структуры, используйте такую инструкцию.
const int SIZE = 100; struct inv_type
{
char item[40]; // наименование товара
double cost; // стоимость
double retail; // розничная цена
int on_hand; // имеющееся в наличии количество
int lead_time; // число дней до пополнения
запасов
} invtry[SIZE];
Разрабатываемая программа должна обеспечить выполнение следующих действий:
■ввод информации о товарах, хранимых на складе;
■отображение инвентарной ведомости;
■модификация заданного элемента.
int main()
{
char choice;
init_list();
for(;;)
{
choice = menu();switch(choice)
{
case 'e': enter(); break;
case 'd': display(); break;
case 'u': update(); break;
case 'q': return 0;
}}
}
// Инициализация массива структур.
void init_list()
{
int t;
// Имя нулевой длины означает пустое имя.
for(t=0; t<SIZE; t++)
*invtry[t].item = '\0';
}
// Получение команды меню, выбранной пользователем.
int menu()
{
char ch;
cout << '\n';
do
{
cout << "(E)nter\n"; // Ввести новый элемент.
cout << "(D)isplay\n"; // Отобразить всю
ведомость.
cout << "(U)pdate\n"; // Изменить элемент.
cout << "(Q)uit\n\n"; // Выйти из программы.
cout << "Выберите команду: ";
cin >> ch;
}
while(!strchr("eduq", tolower(ch)));return tolower(ch);
}
char *strchr(const char *str, int ch);
Эта функция просматривает строку, адресуемую указателем str, на предмет вхождения в нее символа, который хранится в младшем байте переменной ch. Если такой символ обнаружится, функция возвратит указатель на него. И в этом случае значение, возвращаемое функцией, по определению будет истинным. Но если совпадения символов не произойдет, функция возвратит нулевой указатель, который по определению представляет собой
// Ввод элементов в инвентарную ведомость.
void enter()
{
int i;
// Находим первую свободную структуру.
for(i=0; i<SIZE; i++)
if( !*invtry[i].item) break;
// Если массив полон, значение i будет равно SIZE.
if(i==SIZE) {
cout << "Список полон.\n";
return;
}
input (i);
}
// Ввод информации.
void input(int i)
{
cout << "Товар: ";
cin >> invtry[i].item;
cout << "Стоимость: ";
cin >> invtry[i].cost;
cout << "Розничная цена: ";
cin >> invtry[i].retail;
cout << "В наличии: ";
cin >> invtry[i].on_hand;
cout << "Время до пополнения запасов : ";
cin >> invtry[i].lead_time;
}
// Модификация существующего элемента. void update()
{
int i;
char name[80];
cout << "Введите наименование товара: ";cin >> name;
for(i=0; i<SIZE; i++)
if(!strcmp(name, invtry[i].item)) break;
if(i==SIZE)
{
cout << "Товар не найден.\n";
return;
}
cout << "Введите новую информацию.\n";
input(i);
}
