Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
5 / 5 / 0
Регистрация: 16.06.2018
Сообщений: 22
1

Поменять местами слова максимальной и минимальной длины в строке

27.09.2018, 16:47. Просмотров 5033. Ответов 10

Задание:
Дана строка. Подсчитать количество символов в каждом слове. Сформировать новую строку, в которой слова с максимальной и минимальной длиной поменять местами. Удалить из строки все символы, не являющиеся буквами.

Строка вводится с клавиатуры.

Вот наработки:
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
48
49
50
51
52
#include "stdafx.h"
#include <ctype.h>
#include <cctype>
#include <conio.h>
#include <string> //библиотека для работы со строками
#include <string.h>
#include <ctime>
#include <iostream>
#include <sstream> //библиотека для работы со строками, через интерфейс потоков
#include <iterator>
#include <algorithm>
#include <locale>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "ru");
    cout.flush();
    string str, word;
    int i, k = 0, j = 1, min = 0, max = 0, h = 0, maxi = 0, mini = 0;
    cout << endl << " Введите строку: ";
    getline(cin, str); //считывание строки
    istringstream s(str); //превращение символьную строку str в поток данных
    cout << endl << " Количество символов в каждом слове: ";
    while (s >> word) //чтение из потока данных, разделителем является пробел
    {
        for (h; h <= 1; h++)
        {
            max = word.size();
            min = word.size();
        }
        int length = word.size(); //подсчёт символов в слове
        cout << "[" << j++ << "] " << length << ", "; //вывод номера слова и количества символов в слове
        if (max < length)
        {
            max = length;
            maxi = j;           //индекс max
        }
        if (min > length)
        {
            min = length;
            mini = j;           //индекс min
        }
    }
    cout << endl;
    cout << min << " " << max << endl;           //это я проверял работоспособность)
    
 
    cout << "\n Время работы программы = " << clock() / 1000.0 << endl << "\n";
    system("pause");
    return 0;
}

Допустим, я нашел min и max слова, но как их поменять местами, используя string, а не char-ский массив - не знаю. Использовать char не хочу.

Следующая часть задания: " Удалить из строки все символы, не являющиеся буквами." - допустим, я знаю как проверить символы, являются ли они буквами или нет, используя isalpha(c), но как их удалить я не знаю.


Все делается в консоли на C++, если что).
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.09.2018, 16:47
Ответы с готовыми решениями:

Определить в предложении слова максимальной и минимальной длины и поменять их местами. C
Доброе время суток!:) Уважаемы программисты, помогите, пожалуйста решить задачу: Дана строка...

Поменять местами слово максимальной и минимальной длины.
Поменять местами слово максимальной и минимальной длины. строки char*. Как это можно сделать? Слова...

В предложении поменять местами слова с максимальной и минимальной длинами
Для решения задачи необходимо подобрать подходящую динамическую структуру данных. В предложении...

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

10
5 / 5 / 0
Регистрация: 16.06.2018
Сообщений: 22
03.10.2018, 02:38  [ТС] 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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include "stdafx.h"
#include <ctype.h>
#include <cctype>
#include <string> //библиотека для работы со строками
#include <string.h>
#include <ctime>
#include <iostream>
#include <sstream> //библиотека для работы со строками, через интерфейс потоков
#include <algorithm>
#include <locale.h>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "ru");                       //подключение языкового пакета "Russian"
    cout.flush();                                  //очистка буфера
    string str, word, maxar, minar;                //объявление переменных типа string
    int i, k = 0, j = 1, min = 0, max = 0, h = 0;  //объявление переменных типа int
    cout << endl << " Введите строку: ";
    getline(cin, str);                             //считывание строки
    istringstream s(str);                          //превращение символьной строки str в поток данных
    //подсчёт букв в строке:
    int letterCount = 0;
    for (i = 0; i < str.size(); i++)
    {
        if ((str[i]>64 && str[i]<91) || (str[i]>96 && str[i]<123) || (str[i]>191 && str[i]<256)) letterCount++; //если символ является буквой, то идёт увеличение счётчика
    }
    cout << "\n Количество букв в строке: " << letterCount << endl;
    cout << " Количество символов в каждом слове: ";
    while (s >> word)                              //чтение из потока данных, разделителем является пробел
    {
        for (h; h <= 1; h++)                       //определение начальных значений
        {
            max = word.size();
            min = word.size();
            maxar = word;
            minar = word;
        }
        int length = word.size();                     //подсчёт символов в слове
        cout << "[" << j++ << "] " << length << ", "; //вывод номера слова и количества символов в слове
        if (max < length)
        {
            max = length;                         //определение количества символов в максимальном слове
            maxar = word;                         //определение максимального слова
        }
        if (min > length)
        {
            min = length;                         //определение количества символов в минимальном слове
            minar = word;                         //определение минимального слова
        }
    }
    cout << endl;
    cout << " Минимальное слово:  " << minar << " (" << min << ");\n";
    cout << " Максимальное слово:  " << maxar << " (" << max << ").\n";
 
    string temp;
    temp = maxar;
    maxar = minar;
    minar = temp;
    
    for (i = 0; i < str.size(); i++)              //цикл проверки и удаления символов, не являющиеся буквами
    {
        if ((str[i] > 64 && str[i] < 91) || (str[i] > 96 && str[i] < 123) || (str[i] > 191 && str[i] < 256))
            goto l2;
        else
            str.erase(i, 1);
    l2:;
    }
    cout << "\n Преобразованная строка: " << str << "\n" << endl;  //вывод преобразованной строки
    
    cout << "\n\n Время работы программы = " << clock() / 1000.0 << "\n\n";  //вывод времени работы программы
    system("pause");
    return 0;
}
0
5264 / 3578 / 2118
Регистрация: 18.12.2017
Сообщений: 11,355
03.10.2018, 14:58 3
MysteriousLord, то что можно сделать двумя строками как-то сложно происходит в Вашем коде. например
зачем цикл for (h; h <= 1; h++) я не смог разобраться. многие строки лишние мне кажется из-за неверного восприятия условия задачи.
Цитата Сообщение от MysteriousLord Посмотреть сообщение
Дана строка.
если по условию дана строка и в ней нужно работать со словами эти слова должны быть чем-то отделены друг от друга (например пробелом или пробелами или знаком ',' или ';' или чередованием этих знаков)
Цитата Сообщение от MysteriousLord Посмотреть сообщение
Подсчитать количество символов в каждом слове.
с этим Вы справились, но лучше, т.е. более наглядно выводить слова и количество символов.
Цитата Сообщение от MysteriousLord Посмотреть сообщение
Сформировать новую строку, в которой слова с максимальной и минимальной длиной поменять местами.
конечно можно найти все слова с max и min длинами (это несложно) - но тогда возникает вопрос в каком порядке их менять - что на что ? в условии это не указано, поэтому считаем что речь идёт о работе со строкой с одним max и одним min
Цитата Сообщение от MysteriousLord Посмотреть сообщение
слова с максимальной и минимальной длиной поменять местами.
сформируйте строковый динамический массив string Words[count_words] и забросьте в него все слова - дальше думаю разберётесь - судя по всему у Вас всё должно получиться
Цитата Сообщение от MysteriousLord Посмотреть сообщение
Удалить из строки все символы, не являющиеся буквами... как их удалить я не знаю
делаем цикл
C++
1
2
3
4
5
6
int=0;
while(str[i])
{ 
if (str[i]==' ' || srt[i]=="," ..............) {str.erase (i, 1); i--;}
i++;
}
обратите внимание на i-- (это нужно для удаления подряд идущих)
вместо ...................... напишите что посчитаете нужным
описание функции erase http://www.cplusplus.com/refer... ing/erase/

для основы кода можете использовать:
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
#include <iostream>
#include <string>
#include <sstream> 
using namespace std;
 
int main()
{
    setlocale( LC_ALL,"Russian" );    
    size_t max_size=0, min_size=0, count_words=0;
    string str, word, max_word, min_word;
    cout << "String:\n";
    getline(cin, str);
   
    stringstream words(str);
    while (words >> word)
    {       
    count_words++;
    if (count_words==1||word.size()>max_size) {max_size=word.size();max_word=word;}
    if (count_words==1||word.size()<min_size) {min_size=word.size();min_word=word;}
    cout <<word<<" "<<word.size()<<endl;
    }
    
    cout <<"\nmax_word="<<max_word<<"\nmin_word="<<min_word<<endl;
 
system("pause");
return 0;
}
p.s. - без крайней необходимости (здесь такой нет) - не применяйте goto.

если считаете что знаков ' ' ',' ';' недостаточно (я бы удалял только их в такой задаче) используйте
if ( !isalpha(str[i]) ) // если текущий символ строки не буква

Добавлено через 7 минут
...
0
5 / 5 / 0
Регистрация: 16.06.2018
Сообщений: 22
03.10.2018, 17:10  [ТС] 4
Цитата Сообщение от Yetty Посмотреть сообщение
MysteriousLord, то что можно сделать двумя строками как-то сложно происходит в Вашем коде. например
зачем цикл for (h; h <= 1; h++) я не смог разобраться. многие строки лишние мне кажется из-за неверного восприятия условия задачи.
Этот цикл нужен для того, чтобы определить начальные значения переменных, иначе после прохода главного цикла, эти переменные так и останутся нулями (min = 0, дальше по условию он сравнивается с length - min > length, т.е. 0 > length, т.е. условие не будет выполняться вообще)

Цитата Сообщение от Yetty Посмотреть сообщение
Подсчитать количество символов в каждом слове.
с этим Вы справились, но лучше, т.е. более наглядно выводить слова и количество символов.
Как бы у меня так и выводит. Сначало слово, потом количество символов в нём.

Цитата Сообщение от Yetty Посмотреть сообщение
Сформировать новую строку, в которой слова с максимальной и минимальной длиной поменять местами.
конечно можно найти все слова с max и min длинами (это несложно) - но тогда возникает вопрос в каком порядке их менять - что на что ? в условии это не указано, поэтому считаем что речь идёт о работе со строкой с одним max и одним min
Минимальное (min длина) и максимальное (max длина) слова могут существовать только в единичном экземпляре), все последующие с такими же длинами не учитывать, т.е. до первых min и max слов.

Цитата Сообщение от Yetty Посмотреть сообщение
Удалить из строки все символы, не являющиеся буквами... как их удалить я не знаю
делаем цикл
C++Выделить код
1
2
3
4
5
6
int=0;
while(str[i])
{
if (str[i]==' ' || srt[i]=="," ..............) {str.erase (i, 1); i--;}
i++;
}
обратите внимание на i-- (это нужно для удаления подряд идущих)
вместо ...................... напишите что посчитаете нужным
описание функции erase http://www.cplusplus.com/refer... ing/erase/
для основы кода можете использовать:
Я новом коде уже сделал это.

P.S.: Мне преподаватель сказал, что лучше делать не в потоке, а посимвольно все делать или найти подходящие функции для потока. Посимвольно, т.е. делать подсчёт символов в каждом слове, находить min и max слова и запоминать индексы их первых и последних символов. Потом посимвольно выводить строку: сначала выводить до начала min/max слова, потом само min/max слово, потом все остальное до max/min слова, и потом собственно само max/min слово и все, что осталось. Поэтому я уже начал переделывать все, только у меня некорректно считывает начальный и конечный символ min слова, если оно стоит первым в строке, а количество его символов нормально, также само слово не может считать в потоке. Также мне пришлось добавить пробел в конец строки, чтобы считалось последнее слово, но из-за этого у меня теперь не все символы, не являющиеся буквами, удаляет, что очень странно, алгоритм нормальный, рабочий.
P.P.S.: Новый код скину позже, он на ноуте, а я с компа пишу.
0
5264 / 3578 / 2118
Регистрация: 18.12.2017
Сообщений: 11,355
03.10.2018, 20:45 5
Лучший ответ Сообщение было отмечено MysteriousLord как решение

Решение

Цитата Сообщение от MysteriousLord Посмотреть сообщение
Этот цикл нужен для того, чтобы...
Этот цикл не нужен (см. предложенный код)
Цитата Сообщение от MysteriousLord Посмотреть сообщение
Как бы у меня так и выводит. Сначало слово, потом количество символов в нём.
согласен (сказанное относилось к первому варианту)
Цитата Сообщение от MysteriousLord Посмотреть сообщение
Минимальное (min длина) и максимальное (max длина) слова могут существовать только в единичном экземпляре), все последующие с такими же длинами не учитывать, т.е. до первых min и max слов.
такие вещи лучше сообщать сразу
Цитата Сообщение от MysteriousLord Посмотреть сообщение
Я новом коде уже сделал это.(erase)
сделали но неправильно. так не будет удалять подряд идущие.
Цитата Сообщение от MysteriousLord Посмотреть сообщение
Мне преподаватель сказал, что лучше делать не в потоке
сомневаюсь что это лучше
Цитата Сообщение от MysteriousLord Посмотреть сообщение
или найти подходящие функции для потока.
лучше так, тем более что Вы уже всё нашли.
Цитата Сообщение от MysteriousLord Посмотреть сообщение
я уже начал переделывать все
зачем переделывать ? Вы не поняли как реализовать предложенный алгоритм ?
Цитата Сообщение от Yetty Посмотреть сообщение
сформируйте строковый динамический массив string Words[count_words] и забросьте в него все слова
count_words (если его переместить на пару строк ниже) - это и будет индекс для массива. т.е. индекс первого max и первого min запоминаете прямо в первом цикле, потом просто меняете элементы массива местами и выводите на экран.

Добавлено через 19 минут
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
#include <iostream>
#include <string>
#include <sstream> 
using namespace std;
 
int main()
{
    setlocale( LC_ALL,"Russian" );    
    size_t max_size=0, min_size=0, count_words=0, k=0, imax=0, imin=0;
    string str, word, max_word, min_word;
    cout << "String:\n";
    getline(cin, str);
   
    stringstream words(str);
    while (words >> word)
    {       
    if (count_words==0||word.size()>max_size) {max_size=word.size();max_word=word;imax=count_words;}
    if (count_words==0||word.size()<min_size) {min_size=word.size();min_word=word;imin=count_words;}
    count_words++;
    cout <<word<<" "<<word.size()<<endl;
    }
    cout <<"\nmax_word="<<max_word<<"\nmin_word="<<min_word<<endl;
    
    string*Words = new string[count_words];
    
    stringstream words1(str);    
    while (words1 >> word)
    {       
    Words[k]=word;
    k++;
    }
    
    swap(Words[imin],Words[imax]);
    
    cout <<"New string:\n";
    for (size_t i = 0; i <count_words; i++)      
      cout <<Words[i]<<" ";      
    cout <<endl;
    delete[]Words;
system("pause");
return 0;
}
erase прикрутите сами (не знаю из какой строки удалять). только правильный erase (см. предложенный блок)

строка 22 - информационная (по условию не нужна). если будете её убирать, уберите заодно нахождение max_word=word; в строке 18 и min_word=word; в строке 19
1
5 / 5 / 0
Регистрация: 16.06.2018
Сообщений: 22
04.10.2018, 14:55  [ТС] 6
Цитата Сообщение от Yetty Посмотреть сообщение
erase прикрутите сами (не знаю из какой строки удалять). только правильный erase (см. предложенный блок)
Это конечно же хорошо, но он не удаляет символы. Я по разному писал условие, все равно не удаляет. Я и на буквы проверял, и на цифры, и делал даже char-ий массив со всеми символами, и по отдельности каждый символ писал - всё равно не удаляет.

А за остальное спасибо, все работает (кроме удаления).
0
5264 / 3578 / 2118
Регистрация: 18.12.2017
Сообщений: 11,355
04.10.2018, 16:21 7
Цитата Сообщение от MysteriousLord Посмотреть сообщение
все работает (кроме удаления).
так удаления там и нет, я Вам предлагал его самостоятельно добавить:
Цитата Сообщение от Yetty Посмотреть сообщение
erase прикрутите сами (не знаю из какой строки удалять)
если не получается, напишите из какой строки нужно удалять (первоначальной или полученной) и что именно нужно удалять.
0
5 / 5 / 0
Регистрация: 16.06.2018
Сообщений: 22
04.10.2018, 18:21  [ТС] 8
Цитата Сообщение от Yetty Посмотреть сообщение
так удаления там и нет, я Вам предлагал его самостоятельно добавить:
Цитата Сообщение от Yetty Посмотреть сообщение
делаем цикл
C++Выделить код1
2
3
4
5
6
int=0;
while(str[i])
{
if (str[i]==' ' || srt[i]=="," ..............) {str.erase (i, 1); i--;}
i++;
}обратите внимание на i-- (это нужно для удаления подряд идущих)
вместо ...................... напишите что посчитаете нужным
описание функции erase http://www.cplusplus.com/refer... ing/erase/
А как же это?

Цитата Сообщение от Yetty Посмотреть сообщение
если не получается, напишите из какой строки нужно удалять (первоначальной или полученной) и что именно нужно удалять.
Удалять из преобразованной (последней), т.е. задание по порядку делать, там про удаление идёт в конце.
0
5264 / 3578 / 2118
Регистрация: 18.12.2017
Сообщений: 11,355
04.10.2018, 20:21 9
Цитата Сообщение от MysteriousLord Посмотреть сообщение
А как же это?
вопрос не понятен. я дал Вам блок, чтобы Вы его добавили самостоятельно. если не получается, добавляю я.
требуется чтобы слова исходной строки разделялись пробелом.
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
48
49
50
51
52
53
54
#include <iostream>
#include <string>
#include <sstream> 
#include <cctype>
using namespace std;
 
int main()
{
    setlocale( LC_ALL,"Russian" );    
    size_t max_size=0, min_size=0, count_words=0, k=0, imax=0, imin=0;
    string str, word, max_word, min_word, str1="";
    cout << "String:\n";
    getline(cin, str);
   
    stringstream words(str);
    while (words >> word)
    {       
    if (count_words==0||word.size()>max_size) {max_size=word.size();max_word=word;imax=count_words;}
    if (count_words==0||word.size()<min_size) {min_size=word.size();min_word=word;imin=count_words;}
    count_words++;
    cout <<word<<" "<<word.size()<<endl;
    }
    cout <<"\nmax_word="<<max_word<<"\nmin_word="<<min_word<<endl;
    
    string*Words = new string[count_words];
    
    stringstream words1(str);    
    while (words1 >> word)
    {       
    Words[k++]=word;    
    }
    
    swap(Words[imin],Words[imax]);
    
    for (size_t i=0; i<k; i++)
    if (i==0) str1+=Words[0];
    else str1+=" "+Words[i];
    
    cout <<"New string:\n";
    cout <<str1<<endl; 
    
    int i=0;
    while(str1[i])
    { 
    if (!isalpha(str1[i])) {str1.erase (i, 1); i--;}
    i++;
    }   
    
    cout <<"Modified string:\n";
    cout <<str1<<endl;
    delete[]Words;
system("pause");
return 0;
}
1
5 / 5 / 0
Регистрация: 16.06.2018
Сообщений: 22
05.10.2018, 04:15  [ТС] 10
Спасибо огромное), всё заработало.



P.S.: Если кому пригодится, то вот окончательный код программы:
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/*Задание:
     Вариант 3.   Дана  строка. Подсчитать количество символов  в каждом слове.
 Сформировать новую строку, в которой слова с максимальной и минимальной 
 длиной поменять местами.  Удалить из строки все символы, не являющиеся буквами.*/
 
#include "stdafx.h"
#include <ctype.h>
#include <cctype>
#include <string>       //библиотека для работы со строками
#include <string.h>
#include <ctime>
#include <iostream>
#include <sstream>   //библиотека для работы со строками, через интерфейс потоков
#include <algorithm>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");         //подключение языкового пакета "Russian"
    cout.flush();                                  //очистка буфера
    string str, str1 = "", word, max_word, min_word;        //объявление переменных типа string
    int i = 0, j = 1;                              //объявление переменных типа int
    size_t max_size = 0, min_size = 0, count_words = 0, k = 0, imax = 0, imin = 0;   //объявление переменных типа size_t
    cout << endl << " Введите строку: ";
    getline(cin, str);                             //считывание строки
    istringstream s(str);                       //превращение символьной строки str в поток данных
        //подсчёт букв в строке:
    int letterCount = 0, symbolCount = 0;          //объявление счётчиков типа int
    for (i = 0; i < str.size(); i++)
    {
        if ((str[i]>64 && str[i]<91) || (str[i]>96 && str[i]<123) || (str[i]>191 && str[i]<256)) letterCount++; //если символ является буквой, то идёт увеличение счётчика
    }
    for (i = 0; i < str.size(); i++)
        symbolCount++;          //подсчёт количества всех символов строки
 
    cout << "\n Количество символов в строке: " << symbolCount;
    cout << "\n Количество букв в строке: " << letterCount << endl;
    cout << " Количество символов в каждом слове: \n";
 
    stringstream words(str);
    while (words >> word)
    {
        if (count_words == 0 || word.size() > max_size) { max_size = word.size(); max_word = word; imax = count_words; }    //нахождение максимального слова и его индекса
        if (count_words == 0 || word.size() < min_size) { min_size = word.size(); min_word = word; imin = count_words; }    //нахождение минимального слова и его индекса
        count_words++;                              //счётчик символов в слове
        cout << " [" << j++ << "]: " << word << " " << "(" << word.size() << ")" << endl;
    }
    cout << "\n Максимальное слово: " << max_word << " (" << max_size << ");";
    cout << "\n Минимальное слово: " << min_word << " (" << min_size << ").\n";
 
    string*Words = new string[count_words];
    stringstream words1(str);
    while (words1 >> word)                         //создание массива слов
    {
        Words[k] = word;
        k++;
    }
 
    swap(Words[imin], Words[imax]);                //функция, меняющая местами максимальное и минимальное слова в строке
 
    cout << "\n Преобразованная строка: ";
    for (size_t i = 0; i < k; i++)                //для удаления лишних символов требуется, чтобы слова исходной строки разделялись пробелом
    {
        if (i == 0)
            str1 += Words[0];
        else
            str1 += " " + Words[i];
    }
 
    cout << str1 << endl;
 
    i = 0;
    while (str1[i])                                //цикл проверки и удаления символов, не являющиеся буквами
    {
        if (!isalpha(str1[i]))
        {
            str1.erase(i, 1); 
            i--;                                   //нужно для удаления подряд идущих символов
        }
        i++;
    }
    
    cout << " Преобразованная строка после очистки лишних символов: " << str1 << endl;
    
    delete[] Words;                                                          //очистка памяти
 
    cout << "\n\n Время работы программы = " << clock() / 1000.0 << "\n\n";  //вывод времени работы программы
    system("pause");
    return 0;
}
0
5264 / 3578 / 2118
Регистрация: 18.12.2017
Сообщений: 11,355
05.10.2018, 13:38 11
MysteriousLord, уберите строки 27-37, по условию:
Цитата Сообщение от MysteriousLord Посмотреть сообщение
Подсчитать количество символов в каждом слове.
это происходит в строке 46

комментарий строки 53 относится к строке 51.
комментарий строки 62 крайне неудачен (это не требуется для удаления). это формирование новой строки. чтобы были слова они должны быть чем-то разделены, каким-то символом. чаще всего это пробел. посмотрите как обычно формулируются подобные задачи например здесь:
Посчитать количество слов содержащих определённые буквы
если такое условие подходит, добавьте точку в конце предложения при формировании новой строки (после цикла)

строки 55-56 можно заменить одной (см.выше)
комментарий 85 точнее: освобождение памяти
уменьшите количество библиотек (хедеров). зачем применять аналогичные библиотеки С и С++ ?

функция isalpha не работает для русских букв, какие есть варианты, посмотрите здесь:
Какой есть аналог isalpha для работы с русским алфавитом?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.10.2018, 13:38

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

В заданном списке слов поменять местами слова с максимальной и минимальной длинами
В заданном списке слов поменять местами слова с максимальной и минимальной длинами. Работаю с...

Поменять местами подстроки минимальной и максимальной длины
Дана строка длиной не более 40 символов. Строка разделена точками на подстроки. Поменять местами...

Поменять местами слова с максимальной и минимальной длиной
Здравствуйте, нужно решение задачи: Поменять местами слова с максимальной и минимальной длиной при...

Поменять местами слова с максимальной и минимальной длиной при условии, что такие слова единственные
Поменять местами слова с максимальной и минимальной длиной при условии, что такие слова...

Напишите программу, которая во введенном предложении меняет местами слова минимальной и максимальной длины.
Напишите программу, которая во введенном предложении меняет местами слова минимальной и...

Подсчитать количество слов в строке, вывести на экран слова минимальной и максимальной длины
Ввести строку. Подсчитать количество слов в строке, вывести на экран слова минимальной и...


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

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

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