Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
DebieCooper
34 / 34 / 1
Регистрация: 12.10.2011
Сообщений: 296
#1

Строки. Удалить слова наибольшей длины - C++

30.11.2011, 12:29. Просмотров 901. Ответов 11
Метки нет (Все метки)

В строке удалить слова наибольшей длины. Оставшиеся слова записать через пробел.
След-но пользователь должен сам вводить эти слова, а выдать ему нужно результат.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2011, 12:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Строки. Удалить слова наибольшей длины (C++):

В строке удалить слова наибольшей длины... - C++
Доброго времени суток всем. Учусь у универе и долго болел. Сейчас дали пару задач, вобще не понимаю как решать) Надеюсь на вашу помощь. ...

Определить слова наибольшей и наименьшей длины и величину длины. - C++
Дано предложение (символьная строка, где слова отделяются друг от друга запятой). Определить слова наибольшей и наименьшей длины и...

Необходимо найти строку наибольшей длины и увеличить остальные строк в массиве к длине наибольшей строки, используя символ "!" - C++
Вводится массив строк символов. Необходимо найти строку наибольшей длины и увеличить остальные строк в массиве к длине наибольшей строки,...

Нужно найти строку наибольшей длины и увеличить остальные строк в массиве к длине наибольшей строки, используя символ "!" - C++
Вводится массив строк символов. Необходимо найти строку наибольшей длины и увеличить остальные строк в массиве к длине наибольшей строки,...

Нахождение слова наибольшей длины в строке - C++
Строка состоит из слов,разделенных одним или несколькими пробелами.Найдите слово наибольшей длины.

В словах наибольшей длины удалить среднюю букву (средние буквы) - C++
В тексте все слова разделены пробелами и знаками препинания. Напечатать все слова, предварительно выполнив преобразования: в словах...

11
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
30.11.2011, 12:37 #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
42
43
44
45
46
47
#include <stdio.h>
#include <string.h>
#define DEL  " .,:;\n\t"
#define N 1024
 
int Max(char *s)
{
    int, i, j, max;
    i = max = 0;
    while (s[i])
    {
        while (s[i] && strchr(DEL, s[i]))
            i++;
        j = i;
        while (s[i] && !strchr(DEL, s[i]))
            i++;
        if (i - j > max)
           max = i - j;
    }
    return max;
}
 
int main( )
{
    char s[N];
    int i, j, k, max;
    printf("s = "); fgets(s, N, stdin);
    max = Max(s);
    i = k = 0;
    while (s[i])
    {
        while (s[i] && strchr(DEL, s[i]))
            i++;
        j = i;
        while (s[i] && !strchr(DEL, s[i]))
            i++;
        if (i - j < max)
        {
            strncpy(s + k, s + j, i - j);
            k += i - j;
            s[k++] = ' ';
        }
    }
    s[k] = '\0';
    puts(s);
    return 0;
}
1
DebieCooper
34 / 34 / 1
Регистрация: 12.10.2011
Сообщений: 296
30.11.2011, 12:49  [ТС] #3
Вот что м не выдаёт. Кстати мы работаем по 2008 студии.
1>z:\petrushkdv\строки. удалить слова\строки. удалить слова\строки.cpp(8) : warning C4091: '' : ignored on left of 'int' when no variable is declared
1>z:\petrushkdv\строки. удалить слова\строки. удалить слова\строки.cpp(8) : error C2143: syntax error : missing ';' before ','
1>z:\petrushkdv\строки. удалить слова\строки. удалить слова\строки.cpp(8) : error C2143: syntax error : missing ';' before ','
1>z:\petrushkdv\строки. удалить слова\строки. удалить слова\строки.cpp(9) : error C2065: 'i' : undeclared identifier
1>z:\petrushkdv\строки. удалить слова\строки. удалить слова\строки.cpp(9) : error C2065: 'max' : undeclared identifier
1>z:\petrushkdv\строки. удалить слова\строки. удалить слова\строки.cpp(10) : error C2065: 'i' : undeclared identifier
1>z:\petrushkdv\строки. удалить слова\строки. удалить слова\строки.cpp(10) : fatal error C1903: unable to recover from previous error(s); stopping compilation
0
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
30.11.2011, 12:51 #4
Цитата Сообщение от DebieCooepr Посмотреть сообщение
Вот что м не выдаёт. Кстати мы работаем по 2008 студии.

Не по теме:

приду домой, откомпилирую и проверю, но логика программы верная

1
-=ЮрА=-
Заблокирован
Автор FAQ
30.11.2011, 12:56 #5
DebieCooepr, выполнять в С/С++???
1
DebieCooper
34 / 34 / 1
Регистрация: 12.10.2011
Сообщений: 296
30.11.2011, 12:59  [ТС] #6
C++. Студия 2008.
0
-=ЮрА=-
30.11.2011, 13:10
  #7

Не по теме:

Цитата Сообщение от DebieCooepr Посмотреть сообщение
C++. Студия 2008.
- уже пишу код, подождите немножко...

1
DebieCooper
34 / 34 / 1
Регистрация: 12.10.2011
Сообщений: 296
30.11.2011, 13:18  [ТС] #8
Спасибо большое.
Я и не тороплюсь. Зачётная неделя скоро, нужно долги сдать)
0
-=ЮрА=-
Заблокирован
Автор FAQ
30.11.2011, 13:19 #9
Цитата Сообщение от DebieCooepr Посмотреть сообщение
В строке удалить слова наибольшей длины. Оставшиеся слова записать через пробел.
След-но пользователь должен сам вводить эти слова, а выдать ему нужно результат.
Вот код на плюсах и скрин работы
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
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
 
int main()
{
    string word;
    string text;
    cout<<"Enter text : \n";
    getline(cin,text);
    stringstream ss;
    ss.str(text);//Г‡Г*Г*îñèì ГІГҐГЄГ±ГІ Гў ñòðîêîâûé ïîòîê
    //Âû÷èñëÿåì Г¬Г*ГЄГ± äëèГ*Г*Гі ñëîâГ* Гў text
    long maxlen = 0;
    while(ss>>word)
    {
        if(maxlen < word.length())
            maxlen = word.length();
    }
    cout<<"Max length of word in string : "<<maxlen<<endl;
    ss.clear();//ÂñòðÿõГ*ВёГ¬ Г*Г*Гё ñòðîêîâûé ïîòîê
    ss.str(text);//Г‡Г*Г*îñèì ГІГҐГЄГ±ГІ Гў ñòðîêîâûé ïîòîê
    cout<<"Text after removing words with maxlen\n";
    while(ss>>word)
    {
        if(word.length() < maxlen)
            cout<<word.c_str()<<" ";
    }
    cout<<endl;
    system("pause");
    return 0;
}
0
Миниатюры
Строки. Удалить слова наибольшей длины  
-=ЮрА=-
Заблокирован
Автор FAQ
30.11.2011, 13:24 #10
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
getline(cin,text);
- так можно ввести string с пробелами, однако при компиляции на старых компиляторах после того как напечатали строку Enter нужно нажать 2 раза, в 2008-й такого бага уже нет и Enter жать всего один раз

Об std::string читайте здесь http://www.cplusplus.com/reference/string/string/
Об stringstream здесь http://www.cplusplus.com/reference/iostream/stringstream/stringstream/
и здесь http://www.cplusplus.com/reference/iostream/stringstream/
Успешной сдачи!
1
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
30.11.2011, 16:00 #11
DebieCooepr, если алгоритм еще нужен, то вот. В том алгоритме запятая лишняя закралась(без компилятора писал):

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
46
47
#include <stdio.h>
#include <string.h>
#define DEL  " .,:;\n\t"
#define N 1024
 
int Max(char *s)
{
    int i, j, max;
    i = max = 0;
    while (s[i])
    {
        while (s[i] && strchr(DEL, s[i]))
            i++;
        j = i;
        while (s[i] && !strchr(DEL, s[i]))
            i++;
        if (i - j > max)
           max = i - j;
    }
    return max;
}
 
int main( )
{
    char s[N];
    int i, j, k, max;
    printf("s = "); fgets(s, N, stdin);
    max = Max(s);
    i = k = 0;
    while (s[i])
    {
        while (s[i] && strchr(DEL, s[i]))
            i++;
        j = i;
        while (s[i] && !strchr(DEL, s[i]))
            i++;
        if (i - j < max)
        {
            strncpy(s + k, s + j, i - j);
            k += i - j;
            s[k++] = ' ';
        }
    }
    s[k] = '\0';
    puts(s);
    return 0;
}
1
DebieCooper
34 / 34 / 1
Регистрация: 12.10.2011
Сообщений: 296
30.11.2011, 18:14  [ТС] #12
Спасибо большое. Уже сдал задачу
0
30.11.2011, 18:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2011, 18:14
Привет! Вот еще темы с ответами:

Вводится строка. Выведите все слова наибольшей длины в этой строке - C++
Вводится строка. Выведите все слова наибольшей длины в этой строке. Очень нужна помощь!Заранее огромное спасибо!

В файле заменить все слова максимальной длины на слова минимальной длины - C++
Нужно в считанном из файла тексте заменить все слова максимальной длины на слова минимальной длины, а результат записать в новый файл....

Из текста удалить все слова заданной длины,начинающиеся с согласных букв - C++
Из текста удалить все слова заданной длины,начинающиеся с согласных букв нужна программа в Visual Studio.

Строки: вывести слова с наименьшим количеством букв; удалить слова, начинающиеся с маленькой буквы - C++
Здравствуйте. Помогите, пожалуйста сделать программу... Задание: Составить программу, которая выводит на экран слова с наименьшим...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

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