Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

DimovIvan avatar DimovIvan 16 Точки

C++Fundamentals-Strings and Streams-Exercise-Replace All

Write a program which is given a line of text, another line with a "find" string and another line with a "replace" string. Any part of text which matches the "find" string should be replaced with the "replace" string. Print the resulting text on the console.
Examples
 
Input                                                                                   Output       
I am the night. Dark Night! No, not the knight                    I am the day. Dark Night! No, not the kday 
night
day     

Явно не съм разбрал как работи функцията replase() защото ми подменя само първата срещната дума:

https://pastebin.com/4et85Vrm

A  когато пробвам да завъртя изречението по думи и на всяка дума да викам функцията, програмата ми се чупи:

https://pastebin.com/cBfRA45t

Ще съм благодарен ако някой ми обясни къде греша.

Тагове:
0
C++ Fundamentals
j.petrov_90 avatar j.petrov_90 373 Точки

Привет, колега,

Теснах решението ти. Judge дава 100 от 100.
Вторият линк за жалост е изтекъл и виждам само първият.

Като цяло не виждам проблем в решението ти на първо четене.

Това, което ми прави впечатление, обаче е, че използваш подходът 
find в while цикъл, като всеки път добавяш + 1 на индекса.
Това ще работи, ако стринга не се променяше.

Обаче ти хем го променяш, хем разчиташ, че не е променен.
Например find ти е върнало индекс 10. 
Да де, ама ти смениш стринг с 3 букви със стринт 13 букви проверката индекс + 1 ще продължава ли да е валидна? 

0
DimovIvan avatar DimovIvan 16 Точки

Благодаря за забележката!

indexToFind = line.find(strToFind, indexToFind + strToReplace.size());

Това ли е правилният начин за промяна на стъпката на индекса?

0
19/04/2021 09:40:23
j.petrov_90 avatar j.petrov_90 373 Точки

Изглежда вяпно.
Дано не пропускам нещо :)

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.