Професионална програма
Loading...
+ Нов въпрос
Smeshan avatar Smeshan 73 Точки

Ultimate Reverse words (its over 9000)

Здравейте,
реших тази задача от тук.

Какво сътворих: https://pastebin.com/ZLdrFRHh

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

Това, което не ми харесва е този ред в кода ми е този ред:

39.    if (isalpha(text[i]) || text[i] == '+' || text[i] == char(39)) {

Пробвах да го напиша и така:

39.    if ((isalpha(text[i]) || !ispunct(text[i]) || text[i] == '+') && text[i] != ' ')

Но по двата начина ми се струва доста "нагласен" според случая(входа).
Отделно swapWords() фунцкията е доста сложна, но не измислих как лесно да я разхвърлям по фунцкии без те да приемат по 3-4 параметара, и за това я опростих максимално и я оставих така.
Сега като я загледах можеше броячите frontPos и backPos да прескачат по две позиции и да отпаднат повечето проверки. :?

Поздрави,
Илиян Павлов
 

Тагове:
0
C++ Fundamentals 12/05/2021 11:39:20
DimovIvan avatar DimovIvan 11 Точки

https://pastebin.com/HQbzLM0Q

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

0
j.petrov_90 avatar j.petrov_90 327 Точки

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

Поздравления, че сте преборили задачата.
Като цяло сте се справили добре.
Вече започвате да осъзнавате колко е важно да раздрабяваме кода на функции. Иначе всичко много бързо става на ... "мусака" :)

За жалост нявав възможност да Ви направя ревю.
Обаче мога да Ми дам жокер:
в този раздел на форума има 1 или 2 теми от изминали инстанции на курса за същата задача.
Вижте я нея и може да Ви дойде някой идея.

Поздрави,
Очаквам Ви на C++ Advanced

0
sninov avatar sninov 3 Точки

Ето и моя вариант:

https://pastebin.com/UfHFbsXx

По условие трябва да има "end" накрая на входа и аз съм направил readInput да чете до "end", макар и в примерите да няма "end".

0