Czesc! Mam problem, mianowicie, jestem poczatkujacym programista, mam na zadanie napisac program ktory bedzie normalizowal zdanie, chodzi konkretnie o zastapienie kilku spacji jedna, np majac zdanie "Ala ma kota." na wyjsciu powinienem otrzymac "Ala ma kota."
Nie moge uzywac funkcji erase, delete,replace....
Prosze o pomoc!
Myslalem nad zrobieniem dodatkowej funkcji ktora bedzie liczyla ile jest spacji i cos z nia kombinowac, niestety nie wiem jak sie za to zabrac.
0
2
xyzzyx napisał(a):
Nie moge uzywac funkcji erase, delete,replace....
Jak masz takie ograniczenia, to niżej masz algorytm:
- pod wynik podstawiasz ciąg pusty
- w pętli po kolejnych znakach ciągu wejściowego:
2a. jeśli napotkany znak to spacja i poprzedni to też spacja, nie robisz nic
2b. w przeciwnym razie dopisujesz znak do wyniku - zwracasz wynik
Włala!
1
Rozwiązanie @koszalek-opalek nie uwzględnia tego, że wypisywać musisz od znaku o indeksie 0, ale sprawdzać poprzedni znak możesz dopiero od znaku o indeksie 1.
1
eh, co to za udziwnienia, żeby nie używać stl'a... a tak to wystarczyłoby std::unique
z odpowiednim predykatem i po robocie. isspace()
z #include <cctype>
pomoże Ci w wymyślaniu koła na nowo :P