Loading...

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

sninov avatar sninov 3 Точки

C++ FUNDAMENTALS, STRING & STREAMS, 7.The Noise and the Signal

Здравейте, 

На два теста ми дава грешен отговор, а ми се струва, че съм взел предвид всички възможни случаи. Някой може ли да даде идея какви може да са тестовете, които ме спъват?

Реших, че единия е празен вход и печатам "no noise" , но това явно го няма в тестовете.

Поздрави,

Симеон 

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

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

Колкото и да ми се иска да съм магьосник - не съм :)
Щеше да е по-лесно, ако споделиш кода си тук.
Единствения друг начин е да извадя магическата топка и да гадая какво си написал :D

Шегата на страна.
Ако наистина го беше направил не само аз, но и други колеги също щяха да имат възможност да се включат и да дадат съвет.

Поздрави

0
sninov avatar sninov 3 Точки

Това е кода:

https://pastebin.com/Qx0ATDss

0
sninov avatar sninov 3 Точки

Разбрах си грешката. Сравнявам само лексикографски, бях пропуснал, че трябва първо да се намери най-дългия "noise", а чак ако са повече с еднаква дължина да се сравняват лексикографски.

0
20/04/2021 21:31:20
j.petrov_90 avatar j.petrov_90 373 Точки

Радвам се, че си я намерил.

Добре се справяш с модулирането на кода.
Опитай да скъсиш функцията getFirstLexNoise още повече.

Това, което не виждам в решението ти е ползването на потоци.
Те със сигурност щяха да намалят сложността на написания код.

Само напред и нагоре!
Продължавай в същия дух.

0
sninov avatar sninov 3 Точки

Благодаря за напътствията!

Мисля, че имате предвид това: https://pastebin.com/waDPrwvY

Може ли да ви питам още нещо - каква е  причината следния код да не извлича нищо?

 if (lineStream >> currentWord) {
            words += currentWord;
            words += ' ';
            continue;

}

ето и целия: https://pastebin.com/2zwRhBWQ

while (lineStream >> currentWord) не ми върши работа, защото искам да извлече само 1 стринг, ако може.

 

0
22/04/2021 13:12:13
j.petrov_90 avatar j.petrov_90 373 Точки

Кодът 

 if (lineStream >> currentWord) {
            words += currentWord;
            words += ' ';
            continue;

}

не извлича нищо, защото на предишния ред ти вече си извлякъл всичко от потока в while цикъл.
Т.е. след цикъла потока ти е празен. Това води if-a да се evaluate-не до false.

0
sninov avatar sninov 3 Точки

На предишния ред извличам числа, докато стигна до края или до стринг. Не мога ли да  извлека и стринга след това и да се върна към извличането на числа? Опитах и да заменя while с if, но пак спира до първия стринг и не извлича повече. Явно не мога да редувам извличане на числа и стрингове.

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