Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помощь в решении задачи на C++

Андрей Стрелков Ученик (141), закрыт 1 неделю назад
A. Петя и строки
ограничение по времени на тест2 seconds
ограничение по памяти на тест256 megabytes
вводстандартный ввод
выводстандартный вывод
Маленький Петя очень любит подарки. Его мама подарила ему на день рождения две строки равной длины, состоящие из больших и маленьких букв латинского алфавита. Теперь Петя хочет сравнить эти строки лексикографически. При этом регистр букв значения не имеет, то есть большая буква считается эквивалентной соответствующей маленькой букве. Помогите Пете выполнить сравнение.

Входные данные
В каждой из первых двух строк записано по одной подаренной строке. Длина строк находится в пределах от 1 до 100 включительно. Гарантируется, что строки имеют одинаковую длину, а также состоят из больших и маленьких букв латинского алфавита.

Выходные данные
Если первая строка меньше второй, выведите «-1». Если вторая строка меньше первой, выведите «1». Если строки равны, выведите «0». Учтите, что регистр букв не учитывается при сравнении.

Примеры
Лучший ответ
Любопытный исследователь Мастер (1102) 1 месяц назад
 #include  
#include
using namespace std;
int main() {
string a, b;
cin>>a>>b;
if (a == b) cout<<0;
else
{
if (a > b) cout<<1;
else cout<<-1;
}
return 0;
}
Но вообще тестов не помешало бы добавить.
Остальные ответы
Николай Веселуха Высший разум (360854) 1 месяц назад
 #include  
#include
using namespace std;
int compare(const char* a, const char* b) {
size_t i = 0;
while (a[i] && b[i]) {
if (tolower(a[i]) < tolower(b[i])) return -1;
if (tolower(b[i]) < tolower(a[i])) return 1;
++i;
}
if (!a[i] && !b[i]) return 0;
return a[i] ? 1 : -1;
}
int main() {
constexpr size_t n = 101;
char first[n]{};
cin.getline(first, n);
char second[n]{};
cin.getline(second, n);
cout << compare(first, second) << '\n';
}
Похожие вопросы