FAQ Infinity

Помогите найти ошибку в коде С++

Задача: подсчитать количество слов с лексикографическим возрастанием латинского алфавита.

Для решения этой задачи вам потребуется написать программу на языке С++. Ниже приведен код, который решает данную задачу:

#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;
}

Теперь программа должна правильно подсчитывать количество слов с лексикографическим возрастанием латинского алфавита.

Примечание: Важно учитывать, что данный код предполагает, что вводимые слова состоят только из латинских букв и не учитывает регистр символов. Если требуется учитывать регистр или другие символы, необходимо внести соответствующие изменения в код.