Професионална програма
Loading...
Smeshan avatar Smeshan 76 Точки

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
sninov avatar sninov 3 Точки

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

https://pastebin.com/UfHFbsXx

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

0