Если буквы в строке упорядочены по алфавиту, то вывести 0 - C#
Формулировка задачи:
Знаю что такая тема уже была, но в ней не было подробного ответа.
Задание:
Дана строка, содержащая цифры и строчные латинские буквы. Если буквы в строке упорядочены по алфавиту, то вывести 0. В противном случае вывести номер первого символа строки, нарушающего алфавитный порядок.
Для начала сделал так:Далее работаю только с массивом куда были записаны все буквы. (Есть еще вторая часть задания где нужно будет работать с числами, её пока не трогаю)
После запуска и некоторых тестов следующие проблемы:
1)Выводит 0 только если алфавитный порядок начат с «а». Если ввести «bcd» выдаст «b», а не «0»
2) Если ввести «12a33b5c», то в первый раз покажет, что порядок алфавитный, а второй раз выдаст «а» (Я так понимаю нужно обнулять массив каждый раз)
Так же я не понимаю как именно реализовать: "В противном случае вывести номер первого символа строки, нарушающего алфавитный порядок." Ведь если в строке есть еще и цифры, то нужно учитывать при выводе и их.
Буду благодарен за любые объяснения и подсказки.
P.S Не кидайте тапки, автор глупый студент.
public void Sorted(string DataSort) //Сортировка введенных символов на цифры и буквы. { char temp; foreach (char ch in DataSort) { if (char.IsDigit(ch)) { Number[KeepDigit] = ch; KeepDigit++; } if (char.IsLetter(ch)) { Letter[KeepLetter] = ch; KeepLetter++; } } }
//В методе Task реализуется выполнение задания. public void Task() { //Проверка букв на алфавитный порядок Sorted(Data); char FirstSymb = 'a'; { for (int i = 0; i < Letter.Length-1; i++) { if (Letter[i] == FirstSymb) { FirstSymb++; } else { break; } } } if ((FirstSymb - 97) == KeepLetter) { this.Result = Convert.ToString("0"); } else { this.Result = Convert.ToString(Letter[FirstSymb-97]); }
Result //Использую для вывода на экран в "label" позже
Решение задачи: «Если буквы в строке упорядочены по алфавиту, то вывести 0»
textual
Листинг программы
static void Main(string[] args) { string str = "1q1w2y12".ToLower(); char tmp = ' '; bool flag = true; Console.WriteLine(str); for (int i = 0; i < str.Length; i++) { if (!(char.IsDigit(str[i]))) { if (tmp <= str[i]) { tmp = str[i]; } else { Console.WriteLine("Последовательность нарушена на {0} символе в строке", i + 1); flag = false; break; } } } if (flag == true) { Console.WriteLine("Последовательность алфавита НЕ нарушена"); } Console.ReadKey(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д