Математика — симметрическая разность
Часть раздела Логика и управление потоком путешествия по C# на Coddy. Урок 65 из 66.
Симметрическая разность двух множеств содержит элементы, которые принадлежат либо одному, либо другому множеству, но не их пересечению (элементы, которые присутствуют ровно в одном из множеств).
Создайте два объекта HashSet:
HashSet<int> set1 = new HashSet<int>() { 1, 2, 3, 4 };
HashSet<int> set2 = new HashSet<int>() { 3, 4, 5, 6 };Создайте новый HashSet для результата:
HashSet<int> symmetricDifference = new HashSet<int>(set1);Используйте метод SymmetricExceptWith для вычисления симметрической разности:
symmetricDifference.SymmetricExceptWith(set2);После выполнения приведённого выше кода множество symmetricDifference содержит:
{ 1, 2, 5, 6 }Элементы 3 и 4 присутствуют в обоих множествах, поэтому они не появляются в симметрической разности.
Задание
ЛегкоСоздайте метод с именем FindSymmetricDifference, который принимает два аргумента:
- HashSet целых чисел (
set1) - HashSet целых чисел (
set2)
Метод должен возвращать новый HashSet<int>, содержащий симметрическую разность двух множеств. Остальная часть программы (чтение ввода, сортировка и печать результатов) уже предоставлена для вас.
Попробуйте сами
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
public static HashSet<int> FindSymmetricDifference(HashSet<int> set1, HashSet<int> set2)
{
// Напишите свой код здесь
}
static void Main(string[] args)
{
string[] input1 = Console.ReadLine().Split(',');
string[] input2 = Console.ReadLine().Split(',');
HashSet<int> set1 = new HashSet<int>();
HashSet<int> set2 = new HashSet<int>();
foreach (string s in input1)
{
if (int.TryParse(s.Trim(), out int num))
{
set1.Add(num);
}
}
foreach (string s in input2)
{
if (int.TryParse(s.Trim(), out int num))
{
set2.Add(num);
}
}
HashSet<int> result = FindSymmetricDifference(set1, set2);
// Вывести результат в порядке возрастания
int[] orderedResult = result.OrderBy(x => x).ToArray();
foreach (int num in orderedResult)
{
Console.WriteLine(num);
}
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Многомерные массивы
Основы 2D-массивовОбъявление и инициализация 2D-массивовДоступ к элементам 2D-массиваВложенные циклы с 2D-массивамиЗубчатые массивыОсновные операции с матрицамиПовторение — многомерные массивы4Методы управления потоком выполнения
Досрочный выходЗащитные условияОператоры перехода (goto)Break и ContinueУпрощение вложенных условных конструкций7Логические операторы: продвинутый уровень
Вычисление с коротким замыканиемУсловные логические операторыПриоритет операторовПовторение — продвинутые операторы2Продвинутое принятие решений
Множественные условияСложная логика BooleanСравнение If и SwitchВложенные конструкции SwitchПовторение — продвинутые решения5Обработка исключений
Основы Try-CatchТипы исключенийНесколько блоков CatchРабота с файламиБлок FinallyИспользование Using вместо Try-FinallyПользовательские исключенияПовторение — обработка ошибок3Улучшение циклов
Производительность цикловИтерация по сложным структурамКаждый тип циклаРефакторинг цикловПовторение — оптимизированные циклы6Обработка null
Основы ссылок на nullТипы значений, допускающие nullШаблоны проверки на nullЗащитное программированиеПовторение — безопасность при работе с null9HashMap, часть 1
Что такое HashMap?Объявление HashMapПроверка существования ключаДоступ к значениямИзменение словарейПовторение — HashMap12HashSet, часть 2
Математика — объединение HashSetМатематика — пересечение HashSetМатематика — разность множествМатематика — симметрическая разностьИтерация по множествамПотренируйтесь самостоятельно: Онлайн-компилятор C#