Помогите найти ошибку в коде С++
Задача: подсчитать количество слов с лексикографическим возрастанием латинского алфавита.
Для решения этой задачи вам потребуется написать программу на языке С++. Ниже приведен код, который решает данную задачу:
#include <iostream>
#include <string>
using namespace std;
int main() {
int n;
cin >> n;
int count = 0;
for (int i = 0; i < n; i++) {
string word;
cin >> word;
bool isSorted = true;
for (int j = 1; j < word.length(); j++) {
if (word[j] <= word[j-1]) {
isSorted = false;
break;
}
}
if (isSorted) {
count++;
}
}
cout << "Количество слов с лексикографическим возрастанием: " << count;
return 0;
}
Проблема
Одна из ошибок в данном коде заключается в том, что при сравнении символов строки word
используется оператор <=
. Однако для определения лексикографического возрастания нужно использовать оператор <
.
Исправленный код
Вот исправленная версия кода, в которой оператор <=
заменен на <
:
#include <iostream>
#include <string>
using namespace std;
int main() {
int n;
cin >> n;
int count = 0;
for (int i = 0; i < n; i++) {
string word;
cin >> word;
bool isSorted = true;
for (int j = 1; j < word.length(); j++) {
if (word[j] < word[j-1]) {
isSorted = false;
break;
}
}
if (isSorted) {
count++;
}
}
cout << "Количество слов с лексикографическим возрастанием: " << count;
return 0;
}
Теперь программа должна правильно подсчитывать количество слов с лексикографическим возрастанием латинского алфавита.
Примечание: Важно учитывать, что данный код предполагает, что вводимые слова состоят только из латинских букв и не учитывает регистр символов. Если требуется учитывать регистр или другие символы, необходимо внести соответствующие изменения в код.