Создать массив структур, содержащий сведения о товарах - C (СИ)
Формулировка задачи:
С клавиатуры в массив структур ввести N записей с данными про товары, которые поступили на склад:
<Название товара>
,<Код>
,<Дата выпуска>
.<Код>
- долгое целое число,<Дата выпуска>
- символьный рядок видаДень.Месяц.Год
- все три элемента которого целые числа. процент товаров, которые поступили за последний год.Решение задачи: «Создать массив структур, содержащий сведения о товарах»
textual
Листинг программы
#include <stdio.h>
#include <malloc.h>
#define STR_SIZE 50
typedef struct
{
char name[STR_SIZE];
long int code;
int date[3];
} Record;
void init(Record *r)
{
printf("Enter name: ");
scanf("%s", r->name);
printf("Enter code: ");
scanf("%ld", &r->code);
printf("Enter day: ");
scanf("%d", &r->date[0]);
printf("Enter month: ");
scanf("%d", &r->date[1]);
printf("Enter year: ");
scanf("%d", &r->date[2]);
}
void print(const Record *r)
{
printf("Name: %s\n", r->name);
printf("Code: %ld\n", r->code);
printf("Date: %d %d %d\n\n", r->date[0], r->date[1], r->date[2]);
}
int main(void)
{
int N, i;
Record *r;
printf("Enter N: ");
scanf("%d", &N);
r = malloc(sizeof(Record) * N);
for (i=0; i < N; i++)
{
printf("\n#%d\n", i+1);
init(&r[i]);
}
printf("\nResult:\n");
for (i=0; i < N; i++)
print(&r[i]);
free(r);
return 0;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Определяется структура Record, которая содержит поля name, code и date
- Определяются функции init и print, которые работают со структурой Record
- В функции main считывается количество товаров N
- Выделяется память под массив структур Record с помощью функции malloc
- В цикле с помощью функции init заполняются поля структуры Record для каждого товара
- Выводится информация о каждом товаре с помощью функции print
- Выделяется память освобождается с помощью функции free
- Возвращается 0, чтобы указать, что программа успешно завершилась