Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 15.09.2012
Сообщений: 40

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

10.01.2013, 04:59. Показов 3307. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Поменять местами слово максимальной и минимальной длины. строки char*. Как это можно сделать? Слова в строке разделены пробелом или пробелами, знаками препинания.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.01.2013, 04:59
Ответы с готовыми решениями:

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

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

Слово максимальной длины заменить на слово минимальной длины
Задача: Создать 2 объекта разработанного класса. Одной из компонент класса является символьная строка. В результате выполнения программы...

4
 Аватар для Евгений89
102 / 102 / 39
Регистрация: 17.04.2011
Сообщений: 554
10.01.2013, 13:02
сортировкой попробуй
0
 Аватар для David Sylva
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
10.01.2013, 14:04
Цитата Сообщение от rafiksaiti Посмотреть сообщение
Слова в строке разделены пробелом или пробелами, знаками препинания.
Разбить строку на слова можно с помощью http://www.cplusplus.com/reference/cstring/strtok/
0
96 / 96 / 21
Регистрация: 25.04.2012
Сообщений: 449
10.01.2013, 14:11
я вот не могу решить через char*
ну как могу
но как только, немного поменять условие к более реальным, что "размер входных данных не известен", программа перестанет работать.
string совсем не торт?
0
1 / 1 / 0
Регистрация: 15.09.2012
Сообщений: 40
10.01.2013, 17:34  [ТС]
Цитата Сообщение от David Sylva Посмотреть сообщение
Разбить строку на слова можно с помощью http://www.cplusplus.com/reference/cstring/strtok/
а как потом учесть если у меня было 10 пробелов между словами? да, я могу как вариант разбить строку на слова, занести их в массив, запомнить номера макс и минимального, потом создать новую, но я потеряю пробелы и знаки препинания. Есть еще вариант через for самому растягивать, потом сжимать строку, но это очень не хочется...

Добавлено через 2 минуты
Цитата Сообщение от Tiva Посмотреть сообщение
я вот не могу решить через char*
ну как могу
но как только, немного поменять условие к более реальным, что "размер входных данных не известен", программа перестанет работать.
string совсем не торт?
на самом деле можно и стринг, условие не стоит именно через char*.
Собственно вот, полное условие, если интересно:
В текстовом файле записаны строки длиной не более 255 символов, слова в которых разделены хотя бы одним пробелом или знаками препинания. В каждой строке поменять местами слова максимальной и минимальной длины. Если максимальных и/или минимальных слов.

Меня не интересует само считывание из файла и т.п. Просто фрагмент как поменять местам макс. и мин. слово в строке...

Добавлено через 2 часа 1 минуту
если кому интересно(особо не тестил, но работает):
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
91
92
93
94
95
96
97
98
99
100
#include<iostream>
#include<limits.h>
#include<string>
using namespace std;
bool prov(string,int);
int dlina(string,int);
int main()
{
    setlocale(LC_ALL,".1251");
    FILE* f_in;
    FILE* f_out;
    if((f_in=fopen("input.txt","r"))==NULL)
    {
        cout<<"Ошибка открытия файла"<<endl;
        return 1;
    }
    if((f_out=fopen("output.txt","w"))==NULL)
    {
        cout<<"Ошибка создания файла"<<endl;
        return 1;
    }
    char *s=new char[100];
    fgets(s,99,f_in);
    if(feof(f_in))
    {
        cout<<"Файл пуст"<<endl;
        return 1;
    }
    string st; string st_min; string st_max;
    st=s;
    int konec_max; int nach_max;
    int konec_min; int nach_min;
    int max=0; int min=INT_MAX;
    while(!feof(f_in))
    {
        st=s;
        for(int i=0;i<st.length();i++)
        {
            if(prov(st,i))
            {
                int dlin=dlina(st,i);
                if(dlin>=max)
                {
                    max=dlin;
                    konec_max=i+dlin;
                    nach_max=i;
                    st_max=st.substr(nach_max,konec_max-nach_max);
                }
                if(dlin<=min)
                {
                    min=dlin;
                    konec_min=i+dlin;
                    nach_min=i;
                    st_min=st.substr(nach_min,konec_min-nach_min);
                }
            }
        
        }
        if(nach_max>nach_min)
        {
            st.erase(nach_min,konec_min-nach_min);
            st.insert(nach_min,st_max);
            st.erase(nach_max+konec_max-nach_max-konec_min+nach_min,konec_max-nach_max);
            st.insert(nach_max+konec_max-nach_max-konec_min+nach_min,st_min);
        }
        else
        {
            st.erase(nach_max,konec_max-nach_max);
            st.insert(nach_max,st_min);
            st.erase(nach_min-(konec_max-nach_max-konec_min+nach_min),konec_min-nach_min);
            st.insert(nach_min+konec_min-nach_min-konec_max+nach_max,st_max);
        }
 
        strcpy(s,st.c_str());
        fputs(s,f_out);
        max=0;
        min=INT_MAX;
        fgets(s,99,f_in);
    }
    return 0;
}
 
bool prov(string st,int i)
{
    if(i==0&&(st[i]!=' '||st[i]!='.'||st[i]!=','||st[i]!=':'))
        return true;
    if((st[i]!=' '&&st[i]!='.'&&st[i]!=','&&st[i]!=':'&&st[i]!='\n')&&(st[i-1]==' '||st[i-1]=='.'||st[i-1]==','||st[i-1]==':'))
        return true;
    else return false;
}
int dlina(string st,int i)
{
    int dlina=0; int i2=i;
    while((st[i2]!=' '&&st[i2]!='.'&&st[i2]!=','&&st[i2]!=':'&&st[i2]!='\n'&&st[i2]))
    {
        dlina++;
        i2++;
    }
    return dlina;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.01.2013, 17:34
Помогаю со студенческими работами здесь

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

В целочисленной матрице поменять местами столбец с минимальной суммой со столбцом с максимальной суммой
Дана прямоугольная матрица nxm целых чисел (n,m&lt;10 – ввод с клавиатуры, значения элементов массива в диапазоне – вводятся случайным...

Строка содержит одно слово максимальной и одно минимальной длины. Поменять их местами.
Строка содержит одно слово максимальной и одно минимальной длины. Поменять их местами. Помогите решить заранее спасибо. Заголовок...

Поменять первое слово максимальной длины и последнее слово минимальной длины
Отсортировать по убыванию слова любого предложения. Поменять первое слово максимальной длины и последнее слово минимальной длины

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru