Eliminacja calego wyrazu ze stringa

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

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 " ".

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).

0
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;
}
0

Albo tak:

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;
  }
0

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

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;

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