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

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

10.01.2013, 04:59. Показов 3290. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru