lab4_4.md 6.9 KB

Работа со строковыми переменными.

Напоминаю теорию

Строка, как и всё в c#, является объектом и у неё есть методы (более полный список можно посмотреть в лекции или интернете):

  • Length - длина строки

    Console.WriteLine(
        "Длина строки - {0}",
        Stroka.Length);
    
  • Contains - строка содержит подстроку

    if(SomeString.Contains(SubString)){
        ...
    }
    
  • StartsWith, EndsWith - строка начинается/заканчивается подстрокой

  • IndexOf - возвращает позицию подстроки в строке (Если искомый символ или подстрока не обнаружены, то возвращается значение -1)

  • Split - разделяет строку на массив строк. В примере ниже строка чисел разделенных пробелом преобразуется массив. Этим методом удобно разбирать параметры полученные методом Console.ReadLine();.

    var StringList = "1 2 3 4 5".Split([' ']);
    
  • ToUpper(), ToLower() - смена регистра

  • Substring() - Получение подстроки из строки

Элемент строки (символ) можно получить по индексу (в этом смысле строка является одномерным массивом):

var Stroka = "ABCDEF";
for(int i=0;i<Stroka.Length;i++)
{
    Console.WriteLine("{1}й символ - '{2}'",
        i, Stroka[i]);
}

Задание

  1. Номера автобусов

    Однажды Вася очень долго просидел на остановке, прежде чем дождался своего автобуса. Чтобы как-то занять время, он решил записывать на листочке государственные регистрационные номера проходящих мимо автобусов. При этом производилась запись лишь основного номера, без учета региональной принадлежности.

    Основная часть государственного регистрационного номера состоит из 6 символов: трех букв и трех цифр. Сначала идет буква, затем 3 цифры и еще 2 буквы заканчивают запись. В качестве цифр могут использоваться любые цифры от 0 до 9, а в качестве букв только прописные буквы, обозначения которых присутствуют как в английском, так и в русском алфавите, т.е. только следующие символы: A, B, C, E, H, K, M, O, P, T, X, Y. Например, «P204BT» - правильный номер, а «X182YZ» и «ABC216» - нет.

    Ваша задача заключается в проверке правильности проделанной Васей работы. А именно, нужно определить, какие из номеров соответствуют принятому стандарту, а какие нет.

    Номера читаем в цикле из консоли. Если номер пустой (нажали ENTER), то выходим из программы.

  2. Сжатие бинарных последовательностей

    Последовательность из символов «0» и «1» называется бинарной. Они широко применяются в информатике и других науках. Одно из неудобств бинарных последовательностей – их трудно запоминать. Для решения этой проблемы были предложены разные способы их сжатия. Программист Слава использует следующий способ: просматривая последовательность слева направо, он заменяет «1» на «a», «01» на «b», «001» на «c», …, «00000000000000000000000001» на «z». Напишите программу, которая поможет Славе автоматизировать этот способ сжатия.

  3. Стрелки

    Задана последовательность, состоящая только из символов ‘>’, ‘<’ и ‘-‘. Требуется найти количество стрел, которые спрятаны в этой последовательности. Стрелы – это подстроки вида ‘>>-->’ и ‘<--<<’ (наконечник стрелы, древко и оперение).

  4. Нумеролог

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

  5. Перестановка

    Если Вы читали Гарри Поттера, то знаете, что повелитель зла, Лорд Волдеморт создал свое имя путем перестановки букв в своем настоящем имени. Так из имени «Tom Marvolo Riddle» он получил «I am Lord Voldemort».

    Напишите программу, которая проверяет, можно ли получить из одного имени другое путем перестановки его букв. При этом регистром букв нужно пренебречь.

    На входе два слова (можно в разных строках, а можно вспомнить про метод Split)