CCCPaste

952abd891eba0

StreamReader sr = new StreamReader(@"C:\Users\ilyae\OneDrive\Рабочий стол\textlab2.txt");// открываем текстовый файл // читаем первую строчку 
List a = new List(); // конвертируем строчку в тип "CharArray" и записываем в список
List b = new List(); // создаем список для записи конечного результата
List count = new List(); // создаем список для записи количества символов
while (!sr.EndOfStream) // читаем файл до конца
{
    string st = sr.ReadLine(); //читаем строчку из файла
    a = new List(st.ToCharArray()); //конвертируем ее в тип Char и добавляем в список

    for (int i = 0; i < a.Count; i++)  // счётчик для списка
    {
        int k = 1; //счётчик для записи количества символом
        for (int j = i + 1; j < a.Count; j++) // счётчик для перебора элементов списка
        {
            if (a[i] == a[j]) // если найдены одинаковые символы,
            {
                k++; // счётчик увеличивается 
                a.RemoveAt(j); // а элемент из второго массива удаляется.
            }
        }
        count.Add(k); // добавляем конечное количество символом в список
    }
    int n = b.Count - 1; // количество символов во втором списке
    for (int i = 0; i < b.Count; i++) // счётчик для списка b
    {
        for (int j = 0; j < a.Count; j++) // счётчик для списка a
        {
            if (b[i] == a[j]) // если элемент из списка b совпадает с элементом из a, 
            {
                count[i] += count[j + n]; // то к элементу из списка b суммируется количество элементов из списка a
                a.RemoveAt(j); // удаляем элемент из списка а
                count.RemoveAt(j + n); // удаляем элемент из списка количества символов, т.к. он уже суммирован
            }
        }
    }
    for (int j = 0; j < a.Count; j++) b.Add(a[j]); // оставшиеся элементы из списка a добавляем в список b
}
for (int i = 0; i < b.Count; i++) Console.Write(b[i] + " - " + count[i] + "\r\n"); // выводим символы и их количество
sr.Close(); // закрываем файл