Я новичок в C++, и у меня такая же проблема при выполнении программы сравнения текста.Сравнение абзацев C++
Я использовал вектор для хранения моего массива строк, так как мы не знаем длины абзацев. Я создал слова и слова1 для ввода 2 абзацев из 2 txt. файлы. слова для оригинального один как ссылка. words1 - это пользовательский ввод, тот, который нам нужно сравнить с оригинальным, чтобы проверить, сколько ошибок сделал пользователь.
while (fin1 >> str)
{
words1.push_back(str);
}
fin.close();
Затем я использовал цикл for для сравнения.
for (int i = 0; i < words.size(); ++i)
{
if (words.at(i) != words1.at(i))
count++;
}
Но, проблема в том, что если длина двух параграфов отличается, то это будет возвращает мне ошибку, так как words.size() отличается.
Примеры, Оригинальный текст (слова): Сегодня среда, я так счастлив поговорить с вами, ребята. Один вход пользователей (слов1 Встроенные): Сегодня вторник, я так рад сказать для вас, ребята.
Это хорошо, моя программа может показать мне количество ошибок 2. Но если есть какие-либо недостающие слова или некоторые дополнительные слова. Программа просто сокрушит.
Примеры: Оригинальный txt: Сегодня среда, я так счастлив поговорить с вами, ребята.
Один вход пользователя: Сегодня вторник, я должен поговорить с вами, ребята.
Вторник не соответствует среда и 'happy' и 'to' отсутствуют Таким образом, это должно быть как 3 ошибки.
Или
Один вход пользователей: Сегодня вторник, я так рад к в поговорить с вами, ребята.
Вторник не совпадает со средой и двумя дополнительными «до». Таким образом, это должно учитываться как 3 ошибки.
Я не уверен, если есть способ подсчета такого рода ошибки
Так самый простой способ решить эту проблему просто, чтобы добавить манекен в короткий массив, чтобы убедиться, что их длиной, как же ?
Надеюсь, что кто-то может обсудить со мной :) Спасибо!
Найдите размер каждой строки и посмотрите, какой из них меньше или равен, и только увеличивайте эту сумму в цикле for. –
У вас означает размер каждого слова?если u означает размер всего массива, я думаю, что не могу использовать меньший, поскольку, если пользовательский ввод меньше исходного. Эти недостающие слова должны считаться ошибками – starf15h
@ Starf15h..в некоторой путанице в том, как вы принимаете входные данные и что хотите сравнить. Пожалуйста, упомяните об этом. – RDX