Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
2 / 2 / 0
Регистрация: 19.11.2020
Сообщений: 28
1

Даны два списка, нужно вывести пересечение и объединение этих списков

29.09.2021, 16:55. Показов 939. Ответов 4

Author24 — интернет-сервис помощи студентам
Даны два списка с фамилией и годом рождения, нужно вывести два новых списка где пересекаются одинаковые данные и где объединяются данные из А и Б списка, без повторок.

вот что сам смог написать и застрял, буду благодарен вашей помощи.

Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
 
struct human
{
    char fam[22];
    int group;
};
 
struct gaal
{
    char fama[22];
    int god;
};
 
int main ()
{
    system("chcp 1251 > nul");
    int i,n;
 
    struct human str[5]= {{"Иванов",1985},{"Сидоров",1983},{"Карцев",1977},{"Орлов",1988},{"Петров",1999}}; // фамилия год
    printf("Отношение А:");                                                                          //делаем заголовок таблицы и ниже выводим список
    printf("\n       Фамилия   |   Год   ");
    for (int i=0;i<5;i++) // Вывод данных в виде таблицы
        printf("\n %13s %10d ",str[i].fam,str[i].group);
    printf("\n\n");
 
    struct gaal strk[5]= {{"Орлова",1988},{"Петров",1999},{"Иванов",1985},{"Карцева",1977},{"Орлова",1988}}; // фамилия год
    printf("Отношение В:");                                                                          //делаем заголовок таблицы и ниже выводим список
    printf("\n       Фамилия   |   Год   ");
    for (int i=0;i<5;i++) // Вывод данных в виде таблицы
        printf("\n %13s %10d ",strk[i].fama,strk[i].god);
    printf("\n");
 
    printf("\nПересечение A и B\n"); // новый список где одинаковые например Иванов 1985 и Петров 1999
    printf("\n       Фамилия   |   Год  ");
    for (int i=0; i<5; i++)
 
??????????
 
    printf("\nОбъединение A и B\n"); // несколько одинаковых не должны быть
    printf("\n       Фамилия   |   Год  ");
    for (int i=0; i<5; i++)
 
??????????
 
//просто фигня
/*      if (str[i].group==n && strk[i].god==n)                                                                           // если месяц равен n то выводим
            printf("\n %13s %10d",str[i].fam,str[i].group && "%13s %10d",strk[i].fama,strk[i].god);
    return 0;
*/
 
}


.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.09.2021, 16:55
Ответы с готовыми решениями:

Заданы два множества точек на плоскости. Построить пересечение и объединение этих множеств
Написать программу, используя функции и статические массивы(допустим количество точек первого и второго множеств в отдельности не более...

Даны два множества X={1, 2, 3, 4, 5} и Y={2, 4, 6, 7}. Найти их объединение, пересечение и разность
Даны два множества X={1, 2, 3, 4, 5} и Y={2, 4, 6, 7}. Найти их объединение, пересечение и разность.

Объявить и инициализировать два списка с числами и несколько обработок этих списков
РАБОТА СО СПИСКАМИ 1. Объявить и инициализировать первый список, содержащий 5 целочисленных элементов. Вывести на экран элементы списка....

4
205 / 57 / 18
Регистрация: 18.02.2018
Сообщений: 251
04.10.2021, 07:31 2
Лучший ответ Сообщение было отмечено Alexey_1337 как решение

Решение

C
1
2
3
4
5
 int main ()
 {
     system("chcp 1251 > nul");
     int i,n;
+    _Bool is_absent;
> ??????????

C
1
2
3
4
5
6
7
8
for (i = 0; i < 5; i++)
    for (n = 0; n < 5; n++)
        if ((strcmp(str[i].fam, strk[n].fama) == 0) &&
                str[i].group == strk[n].god) {
            printf("\n %13s %10d ", str[i].fam, str[i].group);
 
            break;
        }
> ??????????

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for (i = 0; i < 5; i++) {
    is_absent = 1;
 
    printf("\n %13s %10d ", str[i].fam, str[i].group);
 
    for (n = 0; n < 5; n++)
        if ((strcmp(strk[i].fama, str[n].fam) == 0) &&
                strk[i].god == str[n].group) {
            is_absent = 0;
 
            break;
        }
 
    if (is_absent)
        printf("\n %13s %10d ", strk[i].fama, strk[i].god);
}
1
2 / 2 / 0
Регистрация: 19.11.2020
Сообщений: 28
04.10.2021, 08:11  [ТС] 3
ksyrx, блин, всё круто но есть один трабл и вопрос. трабл в том что при объединении, повторяющаяся информация так же выводится в новый список, а нужно чтобы одна фамилия и год лишь один раз было написано, и то хз как сделать, а вопрос что такое в начале
+ _Bool is_absent; а так же для чего служит int is_absent = 1; если не сложно будет ответь, заранее благодарю
0
205 / 57 / 18
Регистрация: 18.02.2018
Сообщений: 251
05.10.2021, 02:52 4
> для чего служит int is_absent = 1;

Почему int? Нет, это логический тип. Чтобы не подключать хидер stdbool.h, можно вместо bool использовать _Bool, а вместо макросов истинности - целые числа: 0 - для false, 1 - для true (можно и не только 1, но и другие целые числа, отличные от нуля).

> что такое в начале
> + _Bool is_absent;

То, что я добавил в твой код.

> повторяющаяся информация так же выводится в новый список

Странно, не должно так быть. Ты используешь is_absent?
1
2 / 2 / 0
Регистрация: 19.11.2020
Сообщений: 28
05.10.2021, 12:53  [ТС] 5
ksyrx, > bool использовать _Bool,
таким образом ошибку выдает
> + _Bool is_absent; То, что я добавил в твой код.
не компилируется и выдаёт ошибку.

затем я добавил int is_absent = 1;
C
1
2
3
4
for (i = 0; i < 5; i++) {
    is_absent = 1;
 
    printf("\n %13s %10d ", str[i].fam, str[i].group);
как тут показано и выдавало список повторяющимися данными, уже сейчас я is_absent = 1 перевёл сразу после int main и всё отлично работает, короче спасибо большое!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.10.2021, 12:53
Помогаю со студенческими работами здесь

Даны два множества X и Y. Найти: 1) их объединение 2) их пересечение 3) элементы множества A, которых нет во множестве B
Даны два множества X и Y. Найти: 1) их объединение 2) их пересечение 3) элементы множества A, которых нет во множестве B Язык:...

Даны два двоичных числа в виде списков, нужно их сложить
даны два двоичных числа в виде списков....нужно их сложить..результат должен выводиться так же в виде списка...

Объединение, пересечение и разность списков в один
Добрый день! Подскажите ,пожалуйста, очень нужно!!!!! возможно ли реализовать следующую работу со списками. Я ввожу два списка(причем...

Реализовать объединение, пересечение и разность списков
Реализовать объединение,пересечение и разность списков(2 случая: 1. линейный список, 2. нелинейный список(т е список с подсписками))

Список: реализовать объединение, пересечение и разность списков
Писали на прологе, и сегодня на паре заставили писать на хаскеле. Объединение пересечение и разность списков. А я вообще не имею понятия...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Неблокируемый стек в C++26: реализуем простой сборщик мусора
stackOverflow 02.03.2025
Многопоточные приложения требуют надежных и производительных структур данных, способных эффективно работать в условиях конкурентного доступа. Неблокируемые структуры данных представляют собой особый. . .
Шаблон REQ/REP в ZeroMQ: сверхбыстрый обмен сообщениями в C++ и Python
stackOverflow 02.03.2025
Построение высоконагруженных распределенных систем требует надежного и производительного механизма обмена сообщениями. ZeroMQ выделяется среди прочих решений своей невероятной скоростью работы и. . .
Нестандартные приемы работы с итераторами в C++
stackOverflow 02.03.2025
Итераторы - один из краеугольных камней C++, предоставляющий универсальный механизм обхода и манипуляции данными в контейнерах. Появившись как замена небезопасным указателям, они эволюционировали от. . .
Лексический анализ и регулярные выражения в C++26
stackOverflow 02.03.2025
Лексический анализ - ядро любого компилятора и инструмента обработки текста. Каждый программист сталкивается с задачами парсинга строк, обработки файлов конфигурации или анализа пользовательского. . .
Подробно о std::mdspan в C++23
stackOverflow 02.03.2025
Работа с многомерными массивами данных традиционно была одной из сложных задач в C++. Программистам приходилось создавать собственные абстракции или использовать сторонние библиотеки для эффективной. . .
Колмогоровская сложность в C++: Путь к совершенному коду
stackOverflow 02.03.2025
Абстрактная математическая теория Колмогорова стала мощным средством оценки и улучшения программного кода. Сложность алгоритма - не только в его вычислительной эффективности, но и в том, насколько. . .
Изменения в C# 14
stackOverflow 02.03.2025
Одно из самых значимых изменений в C# 14 - поддержка коллекционных выражений, которые позволяют создавать и инициализировать коллекции с помощью нового лаконичного синтаксиса. Это нововведение. . .
Разработка кроссплатформен­­­­ного мобильного приложения для iOS/Android на C++
bytestream 02.03.2025
C++ как язык программирования высокого уровня с прямым доступом к аппаратным ресурсам позволяет создавать приложения, работающие одинаково быстро как на iOS, так и на Android устройствах. Ни для кого. . .
Аутентификация/авторизация на Golang
bytestream 02.03.2025
Go предлагает множество возможностей для создания надежных систем аутентификации. Встроенные криптографические пакеты, высокая производительность и простота параллельной обработки запросов делают его. . .
Нововведения TypeScript 5.8
bytestream 02.03.2025
TypeScript 5. 8 приносит много возможностей и оптимизаций, которые существенно расширяют границы типобезопасного программирования на JavaScript. Эта версия включает ряд значительных улучшений в работе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru