
Задание 8
Даны два целочисленных списка: L1 и L2. Сформировать новый список L из элементов, которые входят только в один из заданных списков.
Пример входа
3 -2 1 9 12 8 -1 1 1 3 5 -2 Пример вывода 9 12 8 -1 5
using System;
using System.Collections.Generic;
using System.Linq;
u
sing
System.Text;
namespace _4._8
{
class Program
{
static void Main(string[] args)
{
var L1 = new List<int>();
var L2 = new List<int>();
var L = new List<int>();
Random rnd = new Random();
//////////Заоносим 10 рандомных элементов в списки////////////////
for (int i = 0; i < rnd.Next(5, 10); i++)
{
L1.Add(rnd.Next(10));
}
for (int i = 0; i < rnd.Next(5, 10); i++)
{
L2.Add(rnd.Next(10));
}
L1.Sort();
L1.Sort();
///////Выводим их на экран
Console.Write("L1: ");
foreach (int element in L1)
Console.Write(element + " ");
Console.WriteLine();
Console.Write("L2: ");
foreach (int element in L2)
Console.Write(element + " ");
Console.WriteLine();
////////////Заносим в L элементы котрые входят только в один из сисков
foreach (int elem_L1 in L1)
{
if (L.BinarySearch(elem_L1) < 0)
if (L2.BinarySearch(elem_L1) < 0)
{
L.Add(elem_L1);
L.Sort();
}
}
foreach (int elem_L2 in L2)
{
if (L.BinarySearch(elem_L2) < 0)
if (L1.BinarySearch(elem_L2) < 0)
{
L.Add(elem_L2);
L.Sort();
}
}
/////////////Выводим список L
Console.Write("L: ");
foreach (int element in L)
Console.Write(element + " ");
}
}
}
/* "Для определения порядка элементов списка данный метод использует компаратор по умолчанию Comparer<T>.Default для типа T.
* Компаратор Comparer<T>.Default проверяет, реализует ли тип T универсальный интерфейс IComparable<T>, и использует
* эту реализацию, если она доступна. Если она недоступна, Comparer<T>.Default проверяет, реализует ли тип T интерфейс IComparable.
* Если тип T не реализует эти интерфейсы, Comparer<T>.Default генерирует исключение InvalidOperationException.
* Список List<T> уже должен быть отсортирован в соответствии с реализацией компаратора, в противном случае будет
* получен неверный результат." (c) MSDN */
Задание 9
Найти группы слов, записанных одними и теми же буквами, но отличающиеся их порядком. (Например: КОРМА, КОМАР). В файле используются только слова, записанные строчными латинскими буквами, отделенные друг от друга одним пробелом. Слова расположены в одной строке.
Пример входа
stop korma post komar ramka marka virus karma tops topic rekam marker
Пример вывода
stop post tops
k
orma
komar
ramka marka karma
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _4._9
{
class Program
{
static void Main(string[] args)
{
string str = "stop korma post komar ramka marka virus karma tops topic rekam marker";
string[] strArr = str.Split(' ');
Program ArrUpor = new Program();
string[] strArrUpor = ArrUpor.PoAlfavitu(strArr);
for (int i = 0; i < strArrUpor.Length; i++)
{
for (int j = 0; j < strArrUpor.Length; j++)
{
if (strArrUpor[i] == strArrUpor[j])
{
Console.Write(strArr[j] + " ");
}
}
Console.WriteLine();
}
}
string[] PoAlfavitu(string[] strArr)
{
int k = 0;
string[] StrArrRezultat = new string[strArr.Length];
foreach (string slovo in strArr)
{
string SlovoPoAlf = "";
char[] BukviSlova = new char[slovo.Length];
for (int i = 0; i < slovo.Length; i++)
{
BukviSlova[i] = slovo[i];
}
IEnumerable<char> BukviSlovaPoAlfavitu = from word in BukviSlova
orderby word
select word;
foreach (char bukva in BukviSlovaPoAlfavitu)
{
SlovoPoAlf += bukva;
}
StrArrRezultat[k] = SlovoPoAlf;
k++;
}
return StrArrRezultat;
} } }