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

Удаление из строки слов, длина которых меньше заданной - C++

Восстановить пароль Регистрация
 
snezhok@
0 / 0 / 0
Регистрация: 12.09.2013
Сообщений: 45
28.12.2013, 14:05     Удаление из строки слов, длина которых меньше заданной #1
Удалить из строки слова,длина которых меньше заданной,решите пожалуйста,за ранее спасибо)))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2013, 14:05     Удаление из строки слов, длина которых меньше заданной
Посмотрите здесь:

C++ Перепишите из входного файла в выходной только те строки, длина которых меньше 70
Напечатать все строки, длина которых меньше заданного числа C++
Если длина строки меньше заданной, то повторить ввод C++
C++ Вывод слов из файла длина которых больше N
C++ Вывести на консоль те строки, длина которых меньше (больше) средней, а также длину.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
volotomon
1 / 1 / 0
Регистрация: 09.06.2013
Сообщений: 10
28.12.2013, 19:56     Удаление из строки слов, длина которых меньше заданной #2
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
//delete word length small zadanoy
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    string words;
    int length;
    cout << "enter words:\n";
    getline(cin, words);
    cout << "enter length:\n";
    cin >> length;
    int wlen = words.length();
    int space_position = -1, numder_letter = 0;
    for(int j = 0; j < wlen; j++)
    {
        numder_letter++;
        if(words.at(j) == ' ')
        {
            numder_letter--;           //minus space
            if(numder_letter < length)
            {
                words.erase(space_position + 1, numder_letter);
                wlen = words.length();
                j = space_position + 1;
            }
            numder_letter = 0;
            space_position = j;
        }
        if(j == wlen - 1)
        {
            if(numder_letter < length)
            {
                words.erase(space_position + 1, numder_letter);
            }
        }
    }
    cout << words << endl;
    return 0;
}
Работает только если слова разделены пробелом.
MicM
 Аватар для MicM
820 / 487 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
28.12.2013, 20:28     Удаление из строки слов, длина которых меньше заданной #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 <iostream>
#include <string>
#include <cctype>
using std::string;
using std::cout;
using std::cin;
using std::endl;
 
int main()
{
    string str("ab abc abcdefghi abcd abcdef abc abcd abcdefg a ab abcdefg abcdef abcdefghijk");
    int n;
    cout <<str <<endl;
    cout <<"Length: ";
    cin >> n;
    unsigned int i = 0;
    string tmp;
    while (i<str.length())
    {
        if (isalpha(str[i]))
        {
            tmp.erase(0,tmp.size());
            while (i<str.length() && isalpha(str[i]))
            {
                tmp.append (1,str[i]);
                ++i;
            }
            if (tmp.size()<n)
            {
                str.erase(i-tmp.size(),tmp.size());
                i-=tmp.size();
            }
        }
        else ++i;
    }
    i = 0;
    while (i<str.length()-1)
    {
        if (str[i]==' ' && str[i+1]==' ')
            str.erase (i,1);
        else ++i;
    }
    cout <<str <<endl;
    return 0;
}
XRoy
848 / 698 / 217
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
28.12.2013, 21:22     Удаление из строки слов, длина которых меньше заданной #4
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
#include <iostream>
#include <sstream>
#include <string>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    string str ("avdblk lkdnglkfnb nglfnblfgngl rgmdkmdgjvndnvk dnvkdfjnvk njbfnjn ndfjknbjkfn ngjkrdnbkjdnkjbnfkdjn gnjngkjrnkdb lkdnbklfnblfnkl dnnjgn nngndlnbljgf nkbndlnblk");
    string subline, output;
    unsigned int length;
    stringstream split(str);
    cout << "Length: ";
    cin >> length;
 
    output.clear();
    while (split >> subline)
        if (subline.length() >= length)
            output.append(subline).append(" ");
            
    cout << output << endl;
 
    return 0;
}
snezhok@
0 / 0 / 0
Регистрация: 12.09.2013
Сообщений: 45
29.12.2013, 16:43  [ТС]     Удаление из строки слов, длина которых меньше заданной #5
Всем большое спасибо
Yandex
Объявления
29.12.2013, 16:43     Удаление из строки слов, длина которых меньше заданной
Ответ Создать тему
Опции темы

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