C++ FUNDAMENTALS, STRING & STREAMS, 7.The Noise and the Signal
Здравейте,
На два теста ми дава грешен отговор, а ми се струва, че съм взел предвид всички възможни случаи. Някой може ли да даде идея какви може да са тестовете, които ме спъват?
Реших, че единия е празен вход и печатам "no noise" , но това явно го няма в тестовете.
Поздрави,
Симеон
Това е кода:
https://pastebin.com/Qx0ATDss
Разбрах си грешката. Сравнявам само лексикографски, бях пропуснал, че трябва първо да се намери най-дългия "noise", а чак ако са повече с еднаква дължина да се сравняват лексикографски.
Радвам се, че си я намерил.
Добре се справяш с модулирането на кода.
Опитай да скъсиш функцията getFirstLexNoise още повече.
Това, което не виждам в решението ти е ползването на потоци.
Те със сигурност щяха да намалят сложността на написания код.
Само напред и нагоре!
Продължавай в същия дух.
Благодаря за напътствията!
Мисля, че имате предвид това: https://pastebin.com/waDPrwvY
Може ли да ви питам още нещо - каква е причината следния код да не извлича нищо?
if (lineStream >> currentWord) {
words += currentWord;
words += ' ';
continue;
}
ето и целия: https://pastebin.com/2zwRhBWQ
while (lineStream >> currentWord) не ми върши работа, защото искам да извлече само 1 стринг, ако може.
Кодът
if (lineStream >> currentWord) {
words += currentWord;
words += ' ';
continue;
}
не извлича нищо, защото на предишния ред ти вече си извлякъл всичко от потока в while цикъл.
Т.е. след цикъла потока ти е празен. Това води if-a да се evaluate-не до false.
На предишния ред извличам числа, докато стигна до края или до стринг. Не мога ли да извлека и стринга след това и да се върна към извличането на числа? Опитах и да заменя while с if, но пак спира до първия стринг и не извлича повече. Явно не мога да редувам извличане на числа и стрингове.