Телефонный справочник: Вывести на экран людей, которые имеют одинаковый адрес - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Есть программа со структурой массивов(телефонная книга)Надо вывести на экран людей, которые имеют одинаковый адрес, но если я использую цикл как на скриншоте то выдает ошибку,работает если добавить тильду, но тогда она будет приравнивать к себе только свой адрес.

Решение задачи: «Телефонный справочник: Вывести на экран людей, которые имеют одинаковый адрес»

textual
Листинг программы
#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, что означает успешное выполнение.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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