Описать структуру с именем NOTE - C (СИ)
Формулировка задачи:
Описать структуру с именем NOTE, содержащий следующие поля:
• фамилия, имя;
• номер телефона
• дата рождения (массив из трех чисел).
Написать программу, которая выполняет следующие действия:
• ввод с клавиатуры данных в массив, состоящий из восьми элементов типа NOTE;
• записи должны быть упорядочены по датам рождения; выводит на экран информации о человеке, номер телефона которого введен с клавиатуры;
• если такого нет, выдать на дисплей соответствующее сообщение.
Решение задачи: «Описать структуру с именем NOTE»
textual
Листинг программы
- #include "stdafx.h"
- #include "locale.h"//для русского языка
- #include "string.h"
- #include "stdlib.h"
- struct note
- {
- char fam[40];//Фамилия
- char name[40];//имя
- int nomer;//Номер телефона
- int date;//Дата рождения
- };
- struct note NOTE[100];
- struct note temp;//для сортировки
- int records=0;
- int i=0,j;
- int menu();
- void vvod();//Ввод
- void vivod();//Вывод
- void sort();//записи должны быть упорядочены по датам рождения; Т.е. сортировка по дате рождения
- int main()
- {
- setlocale(LC_ALL,".1251");//для русского языка
- while(1)
- {
- switch(menu())
- {
- case 1:vvod();break;
- case 2:vivod();break;
- case 3:sort();break;
- case 4:return 0;break;
- default:printf("Не верно выбрано значение\n");
- }
- }
- return 0;
- }
- int menu()
- {
- int ch;
- printf("\nМеню:\n");
- printf("1.Ввод структуры\n");
- printf("2.Вывод структуры\n");
- printf("3.Сортировка по дате рождения\n");
- printf("4.Выход\n");
- printf("Ваш выбор? - ");
- scanf("%d",&ch);
- return ch;
- }
- void vvod()
- {
- int i;
- do {
- printf("Запись №%d:\n", records+1);
- printf("Введите фамилию\n");
- fflush(stdin);
- gets(NOTE[records].fam);
- printf("Введите имя\n");
- fflush(stdin);
- gets(NOTE[records].name);
- printf("Введите номер телефона\n");
- scanf("%d",&NOTE[records].nomer);
- printf("Введите дату рождения\n");
- scanf("%d",&NOTE[records].date);
- records++;
- printf("Прекратить работу? 1-нет,0-да\n");
- scanf("%d",&i);
- }while(i);
- }
- void vivod()
- {
- if(records==0)
- printf("Нет записей\n");
- else
- for(i=0;i<records;i++)
- {
- printf("Фамилия : %s",NOTE[i].fam);
- printf("Имя : %s",NOTE[i].name);
- printf("Номер : %d",NOTE[i].nomer);
- printf("Дата рождения : %d\n",NOTE[i].date);
- }
- }
- void sort()
- {
- for (i=0; i<records-1; i++)
- for (j=i; j<records; j++)
- if (NOTE[i].date>NOTE[j].date)//По возростанию
- { temp=NOTE[i];
- NOTE[i]=NOTE[j];
- NOTE[j]=temp;
- }
- }
Объяснение кода листинга программы
- Структура данных
note
описывает информацию о человеке, включая фамилию, имя, номер телефона и дату рождения. - Переменная
NOTE
является массивом структурnote
и содержит информацию о всех записях. - Переменная
temp
используется для временного хранения данных во время сортировки. - Переменная
records
отслеживает количество записей в массивеNOTE
. - Функция
menu
выводит меню для выбора пользователем действий. - Функция
vvod
запрашивает у пользователя ввод данных для каждой записи и сохраняет их в соответствующей структуреnote
. - Функция
vivod
выводит все записи из массиваNOTE
в формате фамилии, имени, номера телефона и даты рождения. - Функция
sort
сортирует записи в массивеNOTE
по дате рождения в порядке возрастания.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д