Zastąpienie kilku spacji jedna

0

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.

2
xyzzyx napisał(a):

Nie moge uzywac funkcji erase, delete,replace....

Jak masz takie ograniczenia, to niżej masz algorytm:

  1. pod wynik podstawiasz ciąg pusty
  2. 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
  3. 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

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0