Eliminacja calego wyrazu ze stringa

Eliminacja calego wyrazu ze stringa
CR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
0

mamy np string:

"Darek Damian Magda Kasia Ala Monika Norbert"

jak napisac petle (?), aby program znalazl wszystkie wyrazy w tym 1 stringu zaczynajace sie na M i je usuna. czyli po rezultacie ma pozostac string:

"Darek Damian Kasia Ala Norbert" % po usunietym wyrazie zostaje spacja

probowalem cos takiego

Kopiuj
for i = 1:1:length(string)
    if string(i) == 'M'
        while string(i) ~= ' '
            del string(i)
            i = i + 1;
       end
    end
end
 

czyli najpierw znajduje pozycje w tablicy CHAR w ktorej mam znak "M" a nastepnie startujac od niej usuwam element tablicy CHAR, az napotkam spacje " ".

aurel
  • Rejestracja: dni
  • Ostatnio: dni
0

czyli najpierw znajduje pozycje w tablicy CHAR w ktorej mam znak "M" a nastepnie startujac od niej usuwam element tablicy CHAR, az napotkam spacje " ".

Prawie. Musisz jeszcze się upewnić, że to "M" jest początkiem wyrazu, tj. np. gdy znajdziesz "M", sprawdź, czy poprzedni znak to spacja (lub "M" jest pierwszym znakiem).

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
void removeWordsStartingWith(char *src, char c, char *dest) {
    while(*src) {
        if (*src==c) {
             while(*src && !isspace(*src)) {
                 src++;
             }
        } else {
            while(*src && !isspace(*src)) {
                *dest++=*src++;
            }
        }
        while(*src && isspace(*src)) {
            *dest++=*src++;
        }
    }
    *dest = 0;
}
_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0

Albo tak:

Kopiuj
void removeWordsStartingWith(char *src,char c,char *dest)
  {
   bool sp=true,cpy=true;
   while(*src)
     {
      char ch=*src;
      if(isspace(ch)) sp=true; 
      else
        {
         if(sp) cpy=(ch!=c);
         sp=false;
        }
      if(cpy) *dest++=ch;
      ++src;
     }
   *dest=0;
  }
satirev
  • Rejestracja: dni
  • Ostatnio: dni
0

W C++ możesz napisać coś w ten deseń:

Kopiuj
std::string in, temp, out;
in = "Darek Damian Magda Kasia Ala Monika Norber";
std::istringstream iss(in);
while(std::getline(iss, temp, ' '))
  if(!temp.empty())
    out += (temp[0] == 'M' ? " " : temp) + " ";

std::cout << out << std::endl;

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.