Важная информация
Показано с 1 по 10 из 10

Тема: Проверка алфавитного порядка символов в строке

  1. #1 Проверка алфавитного порядка символов в строке 
    Новичок
    Регистрация
    11.09.2018
    Сообщений
    7
    Сказал(а) спасибо
    0
    Поблагодарили 1 раз в 1 сообщении
    Прошу вашей помощи, я новичок в разработке на платформе .NET и по мере изучения C# сталкиваюсь с разными проблемами. На сей раз я столкнулся с такой проблемой: передо мной поставлена задача - Дана строка, содержащая цифры и строчные латинские буквы. Если буквы в строке упорядочены по алфавиту, то вывести 0; в противном случае вывести номер первого символа строки, нарушающего алфавитный порядок. - с которой я не смог разобраться до конца. Для получения массива состоящего русских букв стоящих в алфавитном порядке я воспользовался вот такой конструкцией:
    C# Code:
    1. char ch;
    2. int n = 0;
    3. char[] mass = [Ссылки могут видеть только зарегистрированные пользователи. ] char[32];
    4. for (int i = 1072; i < 1104; i++)
    5. {
    6.     ch = Convert.ToChar(i);
    7.     mass[n] = ch;
    8.     n++;
    9. }

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

  2. #2  
    Профи
    Регистрация
    09.11.2013
    Сообщений
    271
    Сказал(а) спасибо
    17
    Поблагодарили 80 раз(а) в 54 сообщениях
    Оформи в виде функции, в которую передается строка, далее посимвольный перебор входящей строки. В чем сложность? Зачем ты генерируешь массив символов?
    Ответить с цитированием  
     

  3. #3  
    Новичок
    Регистрация
    11.09.2018
    Сообщений
    7
    Сказал(а) спасибо
    0
    Поблагодарили 1 раз в 1 сообщении
    Цитата Сообщение от ur_naz Посмотреть сообщение
    Оформи в виде функции, в которую передается строка, далее посимвольный перебор входящей строки. В чем сложность? Зачем ты генерируешь массив символов?
    Проблема в том, что мне нужно проверить для каждой буквы не нарушается ли правило (индекс буквы (1072-1104) меньше индекса следующей буквы), а для этого мне нужно каким-то образом выполнить обратное этой строке - ch = Convert.ToChar(i);, то есть, мне нужно получить индекс этой буквы, а осуществить это я не знаю как.
    Ответить с цитированием  
     

  4. #4  
    Новичок
    Регистрация
    11.09.2018
    Сообщений
    7
    Сказал(а) спасибо
    0
    Поблагодарили 1 раз в 1 сообщении
    Я решил проблему. На MSDN нашёл метод с перегрузкой обратный тому, что я указал выше, им оказался тот же самый Convert.ToChar() с аргументом типа char. Вот такой у меня получился код, намного меньше и проще чем извращение, которое я решил использовать с самого начала.

    C# Code:
    1. Console.Write("Введите строку: ");
    2. string s = Console.ReadLine();
    3. for (int i = 0; i<s.Length-1;i++)
    4. {
    5.     if (Convert.ToChar(s[i+1])<Convert.ToChar(s[i]))
    6.     {
    7.         Console.WriteLine(i+1);
    8.         break;
    9.     }
    10. }
    Ответить с цитированием  
     

  5. Пользователь сказал cпасибо:

    Anton812 (23.04.2019)

  6. #5  
    Профи
    Регистрация
    09.11.2013
    Сообщений
    271
    Сказал(а) спасибо
    17
    Поблагодарили 80 раз(а) в 54 сообщениях
    какой первый и какой последний индекс символа у строки?
    Ответить с цитированием  
     

  7. #6  
    Новичок
    Регистрация
    11.09.2018
    Сообщений
    7
    Сказал(а) спасибо
    0
    Поблагодарили 1 раз в 1 сообщении
    Цитата Сообщение от ur_naz Посмотреть сообщение
    какой первый и какой последний индекс символа у строки?
    Первый индекс - 0, последний индекс - количество букв минус один. А что, я где-то что-то не так сделал?
    Ответить с цитированием  
     

  8. #7  
    Профи
    Регистрация
    09.11.2013
    Сообщений
    271
    Сказал(а) спасибо
    17
    Поблагодарили 80 раз(а) в 54 сообщениях
    Цитата Сообщение от Liquid Hamster Посмотреть сообщение
    for (int i = 0; i<s.Length-1
    Цитата Сообщение от Liquid Hamster Посмотреть сообщение
    Convert.ToChar(s[i+1])
    Что будет если второго индекса нет? да и вообще не многовато ли операций? то ты плюсуешь то минусуешь? зачем? и что будет если сравнивать без предварительного преобразования?
    Ответить с цитированием  
     

  9. Пользователь сказал cпасибо:

    Free Admin (01.10.2018)

  10. #8  
    Новичок
    Регистрация
    11.09.2018
    Сообщений
    7
    Сказал(а) спасибо
    0
    Поблагодарили 1 раз в 1 сообщении
    Цитата Сообщение от ur_naz Посмотреть сообщение
    Что будет если второго индекса нет? да и вообще не многовато ли операций? то ты плюсуешь то минусуешь? зачем? и что будет если сравнивать без предварительного преобразования?
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    Как видно на скриншоте - компилятор не выдаёт ошибку если ввести одну букву. Не знаю с чем именно это связано, но этот код работает вполне сносно. По поводу количества операций: не знаю как уменьшить их количество, если есть предложение, то я с радостью приму его к сведению.
    Ответить с цитированием  
     

  11. #9  
    Профи
    Регистрация
    09.11.2013
    Сообщений
    271
    Сказал(а) спасибо
    17
    Поблагодарили 80 раз(а) в 54 сообщениях
    а должен? тут главное - что с чем сравнивается. второй элемент, которого нет, и первый, который есть. И ничего, что метод ToChar и козу с бидоном к букве привести может?
    Ответить с цитированием  
     

  12. #10  
    Новичок
    Регистрация
    23.04.2019
    Адрес
    Питер
    Сообщений
    3
    Сказал(а) спасибо
    1
    Поблагодарили 0 раз(а) в 0 сообщениях
    По-моему отличное решение.
    Ответить с цитированием  
     

Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Проверка актуальности установленного ПО
    от AndreyXX в разделе Программы
    Ответов: 1
    Последнее сообщение: 14.04.2018, 13:27
  2. Автоматическая проверка контента
    от Anna Atanasova в разделе Софт
    Ответов: 0
    Последнее сообщение: 16.03.2017, 13:47
  3. Ответов: 1
    Последнее сообщение: 12.12.2016, 15:38
  4. LINE.PR-CY проверка позиций в ПС
    от Вячеслав Иванов в разделе Архив
    Ответов: 0
    Последнее сообщение: 02.09.2015, 17:59
  5. Ответов: 1
    Последнее сообщение: 03.06.2011, 04:15
Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •