Привіт! Розумію, що задачу можна скіпнути, але хочу розібратись, чому моє рішення неправильне, хоча програма, на перший погляд, відпрацьовує так, як повинна це робити за умовою задачі.
За умовами задачі команда має приймати інпут не 5 разів, а поки користувач не введе слово exit. Що якщо exit буде 2м? чи одразу? чи 7м інпутом? Оскільки ми не можемо вгадати наперед коли ми отримаємо exit, for loop тут не підходить. Що підходить краще?
Дуже і дуже цікаве рішення з числовим значенням літер. Однак з ним є дуже важлива проблема: якщо я не читала б умов задачі (а інші програмісти, які одразу відкривають код найчастіше не бачать, що просили зробити інших), то я б не змогла здогадатися які ж літери тут закодовані. C# дозволяє порівнювати напряму char:
letter >= 'k'
Такий варіант легше зрозуміти іншим і у тому числі знайти помилку, якщо вона є.
Точно! Я так захопилася конвертуванням символів в цифровий код, що навіть не помітила умову про exit.
Дякую за підказку, порівняння символів напряму значно простіше!
Поправила свій початковий код з порівнянням чисел, наче тепер спрацьовує корректно, в якому б місці не була команда exit. Розумію, що у вас в перевірку був закладений інший варіант, тому система мій варіант не приймає як вірний, але цікаво знати, чи можна використати такий варіант, чи й досі є помилки?
Дуже дякую за допомогу! Тепер КодІзі приймає за правильне обидва варіанти (з числовим порівнянням та з символьним). Ура!
Правильно я розумію, що у рішенні від КодІзі, команда exit - єдина, в якій регістр має значення, тому що ми переводимо першу літеру в нижній регістр вже після оголошення умови циклу?:
while (command != "exit")
{
char letter = command[0];
char letterInLowerCase = char.ToLower(letter);