Професионална програма
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 259 Точки

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

Колкото и да ми се иска да съм магьосник - не съм :)
Щеше да е по-лесно, ако споделиш кода си тук.
Единствения друг начин е да извадя магическата топка и да гадая какво си написал :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 259 Точки

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

Добре се справяш с модулирането на кода.
Опитай да скъсиш функцията 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 259 Точки

Кодът 

 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