Объясните пожалуйста решение данной задачи по программированию (C++). (Выбранный ответ неправильный) - Вопросы по С+

Вопрос Объясните пожалуйста решение данной задачи по программированию (C++). (Выбранный ответ неправильный)

Регистрация
17 Май 2013
Сообщения
94
Репутация
0
Спасибо
0
Монет
0
239079317_631283ab3b23157dbe81ba65840a9995_800.png

 
Регистрация
5 Ноя 2013
Сообщения
80
Репутация
0
Спасибо
0
Монет
0
Сперва вычисляется минимальная длина для этих двух строк (N), в рамках которой имеет смысл сравнивать символы.

Дальше идём по первым N символам, сравнивая их числовые значения, причём автор, задумывал сделать словарное сравнение, но у него это не получилось. Кроме того, в представленных нет правильного ответа вовсе.

[примеры будут рабочими, если добавить const, иначе придется создавать отдельные переменные для передачи в функцию]
а - неверно, если первые N символов одинаковы, но на этом s2 закончилась, а в s1 есть еще символы, либо эти строки одинаковы, скажем для строк a("mytest1f", "mytest1") и a("m", "m") результат будет false.
b - неверно, скажем, в случае равных по длине строк a("aa", "ab") результат будет true
c - неверно, true выдается и для неодинаковых строк, например a("aa", "ab")
d - неверно, ф-ция выдаст true для случая a("abb", "abaa"), при этом "раньше по алфавиту" находится вторая строка.
e - неверно. Адреса строк нигде не сравниваются. Берем первый пример с a("m", "m"), вместо "m" используем разные переменные, затем меняем их порядок, в обоих случаях результат будет false, адреса, естественно, будут различными.
 
Регистрация
10 Мар 2013
Сообщения
85
Репутация
0
Спасибо
0
Монет
0
Возвращает true если хоть один символ меньшей строки меньше (раньше) соответсвующего символа в большей строке ИЛИ если первая строка короче второй.
 
Сверху Снизу