Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Юлия_nev
0 / 0 / 0
Регистрация: 24.11.2013
Сообщений: 24
#1

Строки (Удаление слова из строки) - C++

30.06.2014, 17:17. Просмотров 345. Ответов 3
Метки нет (Все метки)

с нахождением слова проблем не возникает, а вот с удалением всех вхождений этого слова проблема!
задание:Найти самое длинное слово сообщения и удалить все его вхождения.
вот что у меня получается :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include "stdafx.h"
#include <iostream>
#include <cstring>
using namespace std;
 
int main();
int _tmain(int argc, _TCHAR* argv[])
{
    char string[200];
 
    cout << "vvedite stroky:\n";
    cin.getline(string,200);
 
    char * slovo = strtok (string," "),  // получаем первое слово
         * word = 0; // самое длинное слово
 
    int length = strlen(slovo);          // определяем длинну первого слова
 
    int max = 0; // самое длинное слово
 
      while (slovo != NULL)                         // пока есть слова
      {
          length = strlen(slovo);        // определяем длинну слова
 
          if (max < length )        // определяем самое длинное слово
          {
              max = length;
              word = slovo;              // сохраняем указатель на текущее слово
          }
 
          slovo = strtok (NULL, " "); // получаем следующее слово
      }
 
      cout << "samoe dlinnoe slovo: " << word
           << " , ego dlinna ravna: " << max
           << " simvolam " << endl;
      string.replace(string.find(word), word.size(), "");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2014, 17:17     Строки (Удаление слова из строки)
Посмотрите здесь:

C++ удаление из строки слова
C++ Строки. Удаление слова
C++ Удаление слова из строки
Удаление слова из строки C++
Удаление слова из строки C++
удаление слова из строки C++
Удаление слова после запятой из строки, упростить программу C++
С++ удаление слова из строки C++
Удаление последнего слова из строки C++
C++ Удаление слова из строки
C++ Переместить первую букву слова в конец слова(Строки)
C++ Напечатайте все слова из строки, отличные от заданного слова

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4758 / 4096 / 1367
Регистрация: 14.04.2014
Сообщений: 16,079
30.06.2014, 17:28     Строки (Удаление слова из строки) #2
string заменить на s, подключить <string>
C++
1
2
3
size_t i;
string str(s);
while((i = str.find(word)) != string::npos) str.replace(i, strlen(word), "");
Юлия_nev
0 / 0 / 0
Регистрация: 24.11.2013
Сообщений: 24
30.06.2014, 19:45  [ТС]     Строки (Удаление слова из строки) #3
Сделала как нужно... но беда , печаль в том что он удаляет полученное слово и все те которые следуют за ним... как с этим бороться?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include "stdafx.h"
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
 
int main();
int _tmain(int argc, _TCHAR* argv[])
{std::string mystring;
    char s[200];
 
    cout << "vvedite stroky:\n";
    cin.getline(s,200);
 
    char * slovo = strtok (s," "),  // получаем первое слово
         * word = 0; // самое длинное слово
 
    int length = strlen(slovo);          // определяем длинну первого слова
 
    int max = 0; // самое длинное слово
 
      while (slovo != NULL)                         // пока есть слова
      {
          length = strlen(slovo);        // определяем длинну слова
 
          if (max < length )        // определяем самое длинное слово
          {
              max = length;
              word = slovo;              // сохраняем указатель на текущее слово
          }
 
          slovo = strtok (NULL, " "); // получаем следующее слово
      }
 
      cout << "samoe dlinnoe slovo: " << word
           << " , ego dlinna ravna: " << max
           << " simvolam " << endl;
     size_t i;
     
string str(s);
while((i = str.find(word)) != string::npos) str.replace(i, strlen(word), "");
cout<< "polyhim:"<<s;
 
    return 0;
}
nmcf
4758 / 4096 / 1367
Регистрация: 14.04.2014
Сообщений: 16,079
30.06.2014, 20:35     Строки (Удаление слова из строки) #4
40-ю строку поставить сразу после cin.getline().
Yandex
Объявления
30.06.2014, 20:35     Строки (Удаление слова из строки)
Ответ Создать тему
Опции темы

Текущее время: 04:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru