Вывести на экран все сообщения отправленные адресатом, номер которого указывает пользователь - 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);
}

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы
  2. Определяется константа LENGTH, равная 50
  3. Определяется структура e_mail, которая содержит поля:
    • from (номер отправителя),
    • to (номер получателя),
    • msg (сообщение),
    • day (день),
    • month (месяц),
    • year (год)
  4. Определяется функция main()
  5. В функции main() объявляются и инициализируются переменные:
    • i, n, t (для циклов и операций с числами)
    • j (для операций с символами)
    • e (указатель на массив структур e_mail)
  6. Считывается количество сообщений от пользователя
  7. Выделяется память под массив структур e_mail
  8. Заполняются поля from и to для каждого сообщения
  9. Считывается сообщение и сохраняется в поле msg
  10. Считываются поля day, month, year
  11. Пользователю предлагается ввести номер адресата
  12. Если номер адресата совпадает с полем from любого сообщения, то сообщение выводится на экран
  13. Освобождается память, выделенная под массив структур e_mail
  14. Программа завершается

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы