/
FlowerTower
/
System_Programming_in_Linux
Обзор
Документация
Войти
/
FlowerTower
/
System_Programming_in_Linux
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
struct/structTask.c
114 строк
4 KB
FlowerTower
create struct/structTask.c
24 дек 2024, 20:44
24 дек 2024, 20:44
a062ed7
Код
Авторство
О чём код?
#include <stdio.h> #include <string.h> #define MAX_ABONENTS 100 struct abonent { char name[10]; char second_name[10]; char tel[10]; }; void add_abonent(struct abonent abonents[], int *count) { if (*count >= MAX_ABONENTS) { printf("Справочник заполнен, невозможно добавить больше абонентов!\n"); return; } printf("Введите имя абонента: "); scanf("%s", abonents[*count].name); printf("Введите фамилию абонента: "); scanf("%s", abonents[*count].second_name); printf("Введите телефон абонента: "); scanf("%s", abonents[*count].tel); (*count)++; printf("Абонент добавлен.\n"); } void delete_abonent(struct abonent abonents[], int *count) { char name[10]; printf("Введите имя абонента для удаления: "); scanf("%s", name); for (int i = 0; i < *count; i++) { if (strcmp(abonents[i].name, name) == 0) { memset(&abonents[i], 0, sizeof(struct abonent)); // обнуляем структуру printf("Абонент удалён.\n"); // Сдвигаем все последующие абоненты на одну позицию влево for (int j = i; j < *count - 1; j++) { abonents[j] = abonents[j + 1]; } (*count)--; // уменьшаем количество абонентов return; } } printf("Абонент с именем %s не найден.\n", name); } void search_abonent(struct abonent abonents[], int count) { char name[10]; printf("Введите имя для поиска: "); scanf("%s", name); printf("Результаты поиска:\n"); for (int i = 0; i < count; i++) { if (strcmp(abonents[i].name, name) == 0) { printf("Имя: %s, Фамилия: %s, Телефон: %s\n", abonents[i].name, abonents[i].second_name, abonents[i].tel); } } } void display_abonents(struct abonent abonents[], int count) { printf("Список всех абонентов:\n"); for (int i = 0; i < count; i++) { if (abonents[i].name[0] != '\0') { // проверяем, что запись не удалена printf("Имя: %s, Фамилия: %s, Телефон: %s\n", abonents[i].name, abonents[i].second_name, abonents[i].tel); } } } int main() { struct abonent abonents[MAX_ABONENTS]; int count = 0; int choice; do { printf("\nМеню:\n"); printf("1) Добавить абонента\n"); printf("2) Удалить абонента\n"); printf("3) Поиск абонентов по имени\n"); printf("4) Вывод всех записей\n"); printf("5) Выход\n"); printf("Введите пункт меню: "); scanf("%d", &choice); switch (choice) { case 1: add_abonent(abonents, &count); break; case 2: delete_abonent(abonents, &count); break; case 3: search_abonent(abonents, count); break; case 4: display_abonents(abonents, count); break; case 5: printf("Выход...\n"); break; default: printf("Неверный ввод! Пожалуйста, попробуйте снова.\n"); } } while (choice != 5); return 0; }