Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.58/40: Рейтинг темы: голосов - 40, средняя оценка - 4.58
1 / 1 / 0
Регистрация: 11.02.2019
Сообщений: 23

Вывод строки между первым и последним вхождением

03.01.2020, 21:43. Показов 9472. Ответов 31

Студворк — интернет-сервис помощи студентам
Добрый вечер, помогите пожалуйста разобраться, есть задание:

Дана строка S и 2 слова из нее. Нужно выдать часть строки, находящуюся между самым
первым вхождением первого слова и самым последним второго.
Input
Со стандартного устройства ввода вводится строка, соседние слова в которой разделены
одним пробелом. В конце строки стоит перевод строки. Во второй и третьей строках идут
слова. Гарантируется, что первое слово встретится в строке раньше второго. Длина текста
не превышает 1000 символов.
Output
Нужно выдать на стандартное устройство вывода требуемую часть строки.
Sample Input
Anton and Peter both are little boys, but Anton is greater than Peter.
both
greater
Sample Output
are little boys, but Anton is

Есть решение:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <sstream>
#include <string>
 
using namespace std;
 
int main()
{
    string str1, a, b, d;
    int p, r;
    getline(cin, str1); str1 = ' ' + str1 + ' ';
    cin >> a;
    cin >> b;
    p = str1.find(a, 0);
    str1.erase(str1.begin(), str1.begin() + (p + a.size()));
    r = str1.rfind(b);
    d = str1.substr(0, r);
 
    cout << d;
    return 0;
}


Но, суть в том, что задание проверяет сайт автоматически и прогоняет данное решение через 20 тестов, итог таков что решение проходит только 14 тестов из 20, какие именно тесты проходят - не известно. В чем может быть проблема? Может есть другой вариант решения этого задания?

Скрин тестов
Кликните здесь для просмотра всего текста
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.01.2020, 21:43
Ответы с готовыми решениями:

Вывести подстроку, расположенную между первым и последним пробелом исходной строки
Дана строка, содержащая по крайней мере один символ пробела. Вывести подстроку, расположенную между первым и последним пробелом исходной...

Вывести строку, расположенную между первым и последним пробелом исходной строки
Дана строка, содержащая по крайней мере один символ пробела. Вывести строку, расположенную между первым и последним пробелом исходной...

Вывести подстроку, расположенную между первым и последним пробелом исходной строки
Дана строка, содержащая, по крайней мере, один символ пробела. Вывести подстроку, расположенную между первым и последним пробелом...

31
199 / 155 / 45
Регистрация: 11.11.2019
Сообщений: 348
05.01.2020, 00:34
Студворк — интернет-сервис помощи студентам
То есть убираем из фразы все разделители, кроме пробелов, токенизируем строку и тогда начинаем поиск в массиве слов
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
05.01.2020, 00:47
zayats80888, различие подстроки и слова ? согласен, нужно учитывать. напишите код ?
0
05.01.2020, 00:57

Не по теме:

Цитата Сообщение от Yetty Посмотреть сообщение
напишите код ?
Лень

0
1 / 1 / 0
Регистрация: 11.02.2019
Сообщений: 23
05.01.2020, 11:35  [ТС]
Yetty, этот вариант проходит так же как и мой, 14 тестов из 20. По условию задачи нужно вывести подстроку находящуюся после первого вхождения "а" и последнего вхождения "b", если строка выглядит "aaa a bbb c ccc", то выведется "aa a bb" и это правильно, но только по логике и условию задачи. А программа, которая проходит 20 тестов из 20, и за нее дают максимальные 100 баллов что странно, не выводит результат вообще, если строка выглядит "aaa a bbb c ccc" и как условие идут буквы "а" и "b".
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
05.01.2020, 16:20
iProton, не совсем так, слово это частный случай подстроки
Цитата Сообщение от iProton Посмотреть сообщение
"aaa a bbb c ccc" и как условие идут буквы "а" и "b".
в задаче не буквы, а слова (слово 'a' есть, слова 'b' нет)

проверьте такой вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
 
int main()
{    
    std::string src, sub1, sub2;
    std::getline(std::cin, src);
    std::cin >> sub1 >> sub2;
    size_t f1, f2;
    
    src=" " + src + " ";
    sub1=" " + sub1 + " ";
    sub2=" " + sub2 + " ";
    
    f1 = src.find(sub1) + sub1.size() - 1;    
    f2 = src.rfind(sub2) + 1;
 
    std::cout << src.substr(f1, f2 - f1);
    return 0;
}
0
199 / 155 / 45
Регистрация: 11.11.2019
Сообщений: 348
05.01.2020, 16:33
Yetty, boys but - не проходит
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
05.01.2020, 16:50
fao,
Цитата Сообщение от iProton Посмотреть сообщение
соседние слова ... разделены одним пробелом
т.е. слова boys в строке нет
0
199 / 155 / 45
Регистрация: 11.11.2019
Сообщений: 348
05.01.2020, 16:59
В начале темы дан пример фразы, которая может тестироваться. Согласно примеру в предложении возможны разделители: точки, запятые и т.д.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
05.01.2020, 17:16
fao, Вы наверное не разобрались что такое слово. В этой задаче слово – это последовательность непробельных символов, ограниченная пробелами или концами строки. ещё раз:
Цитата Сообщение от Yetty Посмотреть сообщение
слова boys в строке нет
есть слово boys, (из 5 символов)
0
199 / 155 / 45
Регистрация: 11.11.2019
Сообщений: 348
05.01.2020, 17:35
Yetty, Вот-Вот. Хорошее определение. Только где оно в условии. Люди, привыкшие в математическим формулировкам и определениям могут неверно истолковать то упоминание о пробелах
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
05.01.2020, 18:21
iProton, перевод строки ещё нужно учесть
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>
 
int main()
{      
    std::string src, sub1, sub2;
    std::getline(std::cin, src);
    std::cin >> sub1 >> sub2;
    size_t f1, f2;
    
    src[src.size()-1]=' ';
    src=" " + src;    
    sub1=" " + sub1 + " ";
    sub2=" " + sub2 + " ";
    
    f1 = src.find(sub1) + sub1.size() - 1;    
    f2 = src.rfind(sub2) + 1;
 
    std::cout << src.substr(f1, f2 - f1);
    return 0;
}
Цитата Сообщение от fao Посмотреть сообщение
Только где оно в условии
из условия (уже цитировал, повторить не сложно)
Цитата Сообщение от iProton Посмотреть сообщение
соседние слова ... разделены одним пробелом
0
199 / 155 / 45
Регистрация: 11.11.2019
Сообщений: 348
05.01.2020, 18:33
Yetty, если в задаче используется понятие, которое имеет неоднозначное толкование, то всегда необходимо предварительно (явно) давать этому понятию строгое определение. У понятия "слово" есть ряд толкований и если не указать какое из них актуально в данном контексте, то у людей, решающих эту задачу, может быть головняк.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.01.2020, 18:33

Необходимо получить подстроку, расположенную между первым и последним пробелом исходной строки
помогите пожалуйста!!! Дана строка S. Необходимо получить подстроку, расположенную между первым и последним пробелом исходной строки....

Найти сумму положительных элементов, расположенных между первым и последним отрицательными элементами строки
Помогите найти сумму положительных элементов, расположенных между первым и последним отрицательными элементами этой же строки. #include...

Дана строка S. Необходимо получить подстроку, расположенную между первым и последним пробелом исходной строки
Пожалуйста, помогите разобраться! Дана строка S. Необходимо получить подстроку, расположенную между первым и последним пробелом исходной...

Удалить из строки все символы, расположенные между первым и последним вхождением заданного символа
используя стандартные процедуры и функции для работы со строками. Дана строка S и символ C. удалить из нее все символы, расположенные...

В списке переставить в обратном порядке элементы между первым и последним вхождением элемента
Пусть L обозначает кольцевой двунаправленный список с заглавным звеном. Описать функцию или процедуру, которая в списке L переставляет...


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru