Телефонный справочник: Вывести на экран людей, которые имеют одинаковый адрес - C (СИ)
Формулировка задачи:
Решение задачи: «Телефонный справочник: Вывести на экран людей, которые имеют одинаковый адрес»
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#define n 4
struct NOTEBOOK{
char name[40];
char phone[20];
char address[40];
};
int main(){
NOTEBOOK note[n];
int count = 0;
bool sameExist = false;
printf("Fill in the notebook\n");
for(int i = 0; i < n; i++){
printf("\nName: "); scanf("%s", ¬e[i].name);
printf("Phone: "); scanf("%s", ¬e[i].phone);
printf("Address: "); scanf("%s", ¬e[i].address);
}
system("CLS");
printf("Your notebook:\n");
for(int i = 0; i < n; i++)
printf("Name: %s Phone: %s Address: %s\n", note[i].name, note[i].phone, note[i].address);
printf("\nEqual Address:\n");
for(int i = 0; i < n-1; i++){
for(int j = i+1; j < n; j++){
if(!strcmp(note[i].address, note[j].address)){
if(!sameExist)
sameExist = true;
count++;
printf("Name: %s Address: %s\n AND \nName: %s Address: %s\n\n", note[i].name, note[i].address, note[j].name, note[j].address);
}
}
}
if(!sameExist)
printf("Equal addresses not exist!\n");
else printf("Amount of Equal addresses: %d", count);
getch();
return 0;
}
Объяснение кода листинга программы
В этом коде объявлена структура данных NOTEBOOK, которая содержит поля name, phone и address.
В функции main создается массив note[n] типа NOTEBOOK, где n равно 4.
Затем пользователю предлагается заполнить этот массив данными. Для этого используется цикл for, который выполняется n раз. Внутри цикла пользователю предлагается ввести данные для каждого поля структуры NOTEBOOK с помощью функции scanf.
После заполнения массива, система очищается с помощью функции system(CLS), и все данные из массива выводятся на экран с помощью цикла for и функции printf.
Далее следует поиск адресов, которые повторяются в массиве. Для этого используется два вложенных цикла for. Внутренний цикл проверяет каждый элемент массива на равенство с текущим адресом. Если равенство обнаружено, то переменной sameExist присваивается значение true, счетчик count увеличивается на единицу, и на экран выводятся имена и адреса людей, у которых совпадают адреса.
Если в массиве не найдено ни одного повторяющегося адреса, то переменной sameExist присваивается значение false, и на экран выводится сообщение Equal addresses not exist!. В противном случае выводится сообщение Amount of Equal addresses: count, где count - это количество людей с одинаковыми адресами.
В конце функции main вызывается функция getch(), которая ожидает нажатия клавиши, и функция main возвращает 0, что означает успешное выполнение.