Вывести на экран все сообщения отправленные адресатом, номер которого указывает пользователь - C (СИ)
Формулировка задачи:
Необходимо разработать программу, в которой выполняется ввод списка записей определенного типа, а затем - обработка списка. Сначала в программе должен вводиться размер списка (целое число), а сам список создается в виде динамического массива структур. Ввод одной записи осуществляется в одной строке. Описание структур приводится после вариантов задания.
задание:
Вывести на экран все сообщения (СООБЩЕНИЕ1) отправленные адресатом, номер которого указывает пользователь.
Адреса отправителя и получателя (целые положительные трехзначные числа); текст сообщения (строка 50 символов); дата пересылки (в формате ДД.ММ.ГГГГ).
Решение задачи: «Вывести на экран все сообщения отправленные адресатом, номер которого указывает пользователь»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
enum { LENGTH = 50 };
typedef struct {
unsigned from: 10;
unsigned to: 10;
char msg[LENGTH];
unsigned day: 5;
unsigned month: 4;
unsigned year: 19;
} e_mail;
int main() {
unsigned i, n, t;
char j;
e_mail* e;
scanf("%u", &n);
e = (e_mail*)malloc(n * sizeof(e_mail));
for (i = 0; i < n; i++) {
scanf("%u", &t);
e[i].from = t;
scanf("%u", &t);
e[i].to = t;
getchar();
for (j = 0; j < LENGTH; j++)
e[i].msg[j] = getchar();
scanf("%u", &t);
getchar();
e[i].day = t;
scanf("%u", &t);
getchar();
e[i].month = t;
scanf("%u", &t);
e[i].year = t;
}
scanf("%u", &t);
for (i = 0; i < n; i++)
if (e[i].from == t) {
for (j = 0; j < LENGTH; j++)
putchar(e[i].msg[j]);
putchar('\n');
}
free(e);
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Определяется константа LENGTH, равная 50
- Определяется структура e_mail, которая содержит поля:
- from (номер отправителя),
- to (номер получателя),
- msg (сообщение),
- day (день),
- month (месяц),
- year (год)
- Определяется функция main()
- В функции main() объявляются и инициализируются переменные:
- i, n, t (для циклов и операций с числами)
- j (для операций с символами)
- e (указатель на массив структур e_mail)
- Считывается количество сообщений от пользователя
- Выделяется память под массив структур e_mail
- Заполняются поля from и to для каждого сообщения
- Считывается сообщение и сохраняется в поле msg
- Считываются поля day, month, year
- Пользователю предлагается ввести номер адресата
- Если номер адресата совпадает с полем from любого сообщения, то сообщение выводится на экран
- Освобождается память, выделенная под массив структур e_mail
- Программа завершается