Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2022, 00:05   #1
Knuckles_pixel
Новичок
Джуниор
 
Регистрация: 11.03.2020
Сообщений: 4
Сообщение C# Csharp Сформировать из трех заданных множеств новое

Прошу помощи хотя бы в минимальном размере
Даны три множества X1= {1,2,3,...,20}, X2= {10,20,30,...,30} и X3= {1,3,5,...,19,21}. Сформируйте множество Y= (X1×X2)×(X1×X3)×(X2×X3), из которого выделите подмножество Y1 чисел, делящихся на 7 без остатка. На печать выведите множество Y и мощность множества Y1. Исходные множества введите с клавиатуры.
Knuckles_pixel вне форума Ответить с цитированием
Старый 06.12.2022, 05:15   #2
Пётр Седов
Форумчанин
 
Регистрация: 26.10.2022
Сообщений: 119
По умолчанию

Knuckles_pixel, если здесь × -- это декартово произведение, то попробуйте так:
Код:
using System;
using System.Collections.Generic;

class program {
  static void Main() {
    HashSet<long> x1 = input_set("X1");
    HashSet<long> x2 = input_set("X2");
    HashSet<long> x3 = input_set("X3");

    HashSet<long> p1 = cartesian_product(x1, x2);
    HashSet<long> p2 = cartesian_product(x1, x3);
    HashSet<long> p3 = cartesian_product(x2, x3);
    HashSet<long> y = cartesian_product(p1, p2, p3);
    Console.Write("Set Y:");
    foreach (long e in y) {
      Console.Write(" ");
      Console.Write(e);
    }
    Console.WriteLine();

    // можно не создавать объект y1, а просто посчитать количество элементов
    HashSet<long> y1 = new HashSet<long>();
    foreach (long e in y) {
      if (e % 7 == 0) {
        y1.Add(e);
      }
    }
    Console.WriteLine(string.Format("Set Y1 has {0} elements.", y1.Count));

    Console.ReadKey();
  }

  static HashSet<long> input_set(string title) {
    HashSet<long> result = new HashSet<long>();
    Console.WriteLine(string.Format("Input set {0} (negative number to terminate):", title));
    for (;;) {
      long n = long.Parse(Console.ReadLine());
      if (n < 0) {break;}
      result.Add(n);
    }
    return result;
  }

  // декартово произведение
  static HashSet<long> cartesian_product(HashSet<long> set_1, HashSet<long> set_2) {
    HashSet<long> result = new HashSet<long>();
    foreach (long e1 in set_1) {
      foreach (long e2 in set_2) {
        result.Add(concat_numbers(e1, e2));
      }
    }
    return result;
  }

  static HashSet<long> cartesian_product(HashSet<long> set_1, HashSet<long> set_2, HashSet<long> set_3) {
    HashSet<long> result = new HashSet<long>();
    foreach (long e1 in set_1) {
      foreach (long e2 in set_2) {
        foreach (long e3 in set_3) {
          result.Add(concat_numbers(e1, e2, e3));
        }
      }
    }
    return result;
  }

  // если например n1 = 12 и n2 = 34, то возвращает 1234
  static long concat_numbers(long n1, long n2) {
    long limit = 10;
    while (n2 >= limit) {
      limit *= 10;
    }
    return n1 * limit + n2;
  }

  static long concat_numbers(long n1, long n2, long n3) {
    return concat_numbers(concat_numbers(n1, n2), n3);
  }
}
Использовал тип long, потому что в него больше цифр влезает, чем в тип int.
Пётр Седов вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Для заданных трех строк S1, S2 и S3 определить, какая из них является палиндромом megas666 Помощь студентам 8 11.01.2017 16:26
У трех четырехугольников, заданных координатами своих вершин в трехмерном пространстве определите площади Nikproc Паскаль, Turbo Pascal, PascalABC.NET 3 24.12.2016 17:51
Ассемблер. Написать процедуру объединения элементов множеств, заданных в виде массивов YuliYu Помощь студентам 0 19.05.2015 13:10
функцию VBA для нахождения среди трех заданных чисел x, y и z среднего по значению aleksskay Microsoft Office Excel 2 11.06.2013 01:31
Составьте функцию VBA для нахождения среди трех заданных чисел x, y и z aleksskay Помощь студентам 0 10.06.2013 22:07