Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 17.11.2017
Сообщений: 8

Сравнить 2 строки на соответствие

30.11.2018, 01:21. Показов 3719. Ответов 4

Студворк — интернет-сервис помощи студентам
Итак, по заданию требуется следующие, имеется файл "input.txt", в котором записаны 2 каких либо строки. Допустим, "море солнце трава песок" - S1, представим, что строки эквивалентны и в S2 записано "море солнце трава песок", то есть, исходный файл выглядит следующим образом:
море солнце трава песок
море солнце трава песок
Требуется вывести в другой файл "output.txt" значение true, если в обоих строках все слова одинаковы, иначе false.
То есть, в примере выше, будет true, однако метод strcmp(s1,s2) не подойдет, потому что проверка должна идти не по всей строке, а именно по ее словам (что и вызвало у меня затруднения по разбиению строки на слова и сравнивание их отдельно со словами второй строки). То есть, слова могут быть размещены на строке в любом порядке, но если они присутствуют и в S1 и S2 и их количество совпадает (другими словами, при желании можно выстроить абсолютно эквивалентные предложения, как в примере выше), то вывести True, иначе False.
Заранее спасибо
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.11.2018, 01:21
Ответы с готовыми решениями:

Сравнить две строки на соответствие
Здравствуйте! Подскажите пожалуйста, какая ошибка в этом коде; если я всё правильно понял, то должно выводиться в консоль...

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

Проверить соответствие строки строке
Проверить, соответствует ли введенная строка строке ="689ваыргшм09-"

4
 Аватар для alkl
119 / 94 / 35
Регистрация: 18.12.2012
Сообщений: 654
30.11.2018, 01:35
Как вариант :
Чтение слов в массив строк.
Сортировка.
Сравнение.
0
 Аватар для igorrr37
2872 / 2019 / 991
Регистрация: 21.12.2010
Сообщений: 3,754
Записей в блоге: 9
30.11.2018, 10:42
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <string>
#include <regex>
#include <set> 
 
 
int main()
{
    std::string s1{ "песок,море солнце трава песок" }, s2{ "трава, песок, море песок,солнце." }, sr{"А-Яа-яЁё\\d[:alpha:]"};
    std::regex rgx{ "(?:^|[^" + sr + "])([" + sr + "]+)(?=$|[^" + sr + "])" };
    std::multiset<std::string> st1{ std::sregex_token_iterator{s1.begin(), s1.end(), rgx, 1}, {} };
    std::multiset<std::string> st2{ std::sregex_token_iterator{s2.begin(), s2.end(), rgx, 1}, {} };
    std::cout << std::boolalpha << (st1 == st2) << std::endl;
}
1
0 / 0 / 0
Регистрация: 17.11.2017
Сообщений: 8
03.12.2018, 02:38  [ТС]
Спасибо, добавил чтение из файла - все работает, не могли бы вы дать комментарии по коду, чтобы он был понятен, раньше с подобным не сталкивался, если только в Java шаблонах
0
 Аватар для igorrr37
2872 / 2019 / 991
Регистрация: 21.12.2010
Сообщений: 3,754
Записей в блоге: 9
03.12.2018, 09:49
Лучший ответ Сообщение было отмечено Honey58 как решение

Решение

плес
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
#include <regex>
#include <set> 
 
 
int main()
{
    std::string s1{ "песок,море солнце трава песок" }, s2{ "трава, песок, море песок,солнце." }, sr{ "А-Яа-яЁё\\d[:alpha:]" }; // где sr - это строка, содержащая\
    словесные символы (СС), т.е. символы, которые могут входить в состав слов (А-Яа-яЁё - рус. буквы, \\d - цифры, [:alpha:] - англ. буквы)
    std::regex rgx{ "(?:^|[^" + sr + "])([" + sr + "]+)(?=$|[^" + sr + "])" }; // правило, согласно которому будем искать слова в строке. Правило состоит из трёх частей:\
    (?:^|[^" + sr + "]) - перед словом должно быть начало строки или не СС\
    ([" + sr + "] + ) - само слово должно состоять из одного или более СС\
    (?=$|[^" + sr + "]) - после слова должен быть конец строки или не СС
    std::multiset<std::string> st1{ std::sregex_token_iterator{s1.begin(), s1.end(), rgx, 1}, {} };// sregex_token_iterator ищет слова в строке s1 и вставляет их в мультимножество st1
    std::multiset<std::string> st2{ std::sregex_token_iterator{s2.begin(), s2.end(), rgx, 1}, {} };
    std::cout << std::boolalpha << (st1 == st2) << std::endl; // st1 содержит все слова из s1, а st2 содержит все слова из s2. Так как в классе multiset есть оператор сравнения, то просто сравниваем их этим оператором
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.12.2018, 09:49
Помогаю со студенческими работами здесь

Прверка на соответствие адресной строки
Как проверить соответствует ли адрес условию ? Например у нас есть адрес http://localhost/catalog/63/ и нам нужно проверить является...

Определить соответствие строки заданному формату
Я пишу программу и хочу чтобы когда в одно поле (TextBox) вводится команда, потом нажимаешь кнопку Выполнить и выполнялась команда. Команды...

Проверка строки в массиве на соответствие шаблону
Есть двумерный массив типа string List&lt;List&lt;string&gt;&gt;, кол-во столбцов 3 штуки, необходимо проверить по 2 столбцу строку на соответствие...

Установить соответствие строки регулярному выражению
Нужно сделать чтобы при нахождении строки a(ba)*b* появлялось сообщение что строка соответствует рег.выражению, но почему то если убрать...

Проверка строки на точное соответствие шаблону RegEx
Добрый день! Скажите, могу ли я проверить строку на точное совпадение шаблону RegEx? То есть мне нужно выполнять поиск в строке, я хочу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru