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

Строки: найти первое из самых длинных и последнее из самых коротких слов и поменять их местами - C++

Восстановить пароль Регистрация
 
girlsbest
0 / 0 / 0
Регистрация: 27.10.2008
Сообщений: 14
08.11.2008, 11:42     Строки: найти первое из самых длинных и последнее из самых коротких слов и поменять их местами #1
Помогите написать прогу)
1. Строка состоит не менее чем из двух слов. Преобразовать её по следующему правилу: найти первое из самых длинных и последнее из самых коротких слов и поменять их местами. Количество пробелов между словами должно остаться таким же, как и в исходной строке. Задачу решить без использования дополнительных строк.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2008, 11:42     Строки: найти первое из самых длинных и последнее из самых коротких слов и поменять их местами
Посмотрите здесь:

C++ Сформируйте новую строку из пяти самых длинных слов.
C++ В файле найти первую из самых длинных последовательностей соседних символов, состоящую только из цифр
C++ Пять самых длинных слов
C++ Работа с текстом: Выделить две группы самых коротких слов
Найти 3 самых больших и 3 самых маленьких числа в двумерном массиве C++
C++ Поменять местами первое и последнее слово, найти слова-палиндромы
Найти 50 самых длинных слов в файле C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,315
08.11.2008, 12:04     Строки: найти первое из самых длинных и последнее из самых коротких слов и поменять их местами #2
Что ты уже написал(а) ? Приведи код. В чем конкретно проблема, что не работает?
Alhimic
 Аватар для Alhimic
5 / 5 / 0
Регистрация: 16.10.2008
Сообщений: 77
08.11.2008, 15:20     Строки: найти первое из самых длинных и последнее из самых коротких слов и поменять их местами #3
Решай её с помощью строкового массива. Самые большие исщи в начале массива, а самые маленькие с конца
girlsbest
0 / 0 / 0
Регистрация: 27.10.2008
Сообщений: 14
09.11.2008, 13:57  [ТС]     Строки: найти первое из самых длинных и последнее из самых коротких слов и поменять их местами #4
у меня не получается для начала ввести строку а потом ее вывести printfом
Alhimic
 Аватар для Alhimic
5 / 5 / 0
Регистрация: 16.10.2008
Сообщений: 77
09.11.2008, 20:13     Строки: найти первое из самых длинных и последнее из самых коротких слов и поменять их местами #5
Чтобы ввести строку, а потом вывести используй:
C++
1
2
3
4
5
6
7
void main(void)
{
    char buffer[100];       // массив (буфер) для вводимой строки
 
    gets(buffer);            // вводим строку и нажимаем enter
    printf("%s",buffer);    // вывод введённой строки на экран
}
girlsbest
0 / 0 / 0
Регистрация: 27.10.2008
Сообщений: 14
09.11.2008, 20:52  [ТС]     Строки: найти первое из самых длинных и последнее из самых коротких слов и поменять их местами #6
с этим я уже разобралась...еще бы алгоритм самой задачи сделать...)))хм...но с этим нужна помощь...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2008, 02:39     Строки: найти первое из самых длинных и последнее из самых коротких слов и поменять их местами
Еще ссылки по теме:

Найти 5 самых длинных слов C++
C++ Функция, ввести произвольный текст и получить фразу из самых длинных слов
C++ Вывести 10 самых длинных (по числу символов) предложений
Найти произведение самых длинных последовательностей отрицательных чисел каждой строки матрицы C++
Поиск самых длинных и комбинированных слов в файле C++

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

Или воспользуйтесь поиском по форуму:
УЫЕУЕ
2 / 2 / 0
Регистрация: 04.11.2008
Сообщений: 37
10.11.2008, 02:39     Строки: найти первое из самых длинных и последнее из самых коротких слов и поменять их местами #7
Как-то так, хоть и коряво немного получилось:

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
#include <stdio>
#include <ctype>
#include <conio>
 
void main(void)
{
    char buffer[100];       // массив (буфер) для вводимой строки
 
    gets(buffer);            // вводим строку и нажимаем enter
 
    int i(0);
    int i_min[2];          // небольшой массив, нулевой элемент которого
                           // указывает на начальный символ слова в строке buffer,
                           // а первый элемент равен количеству букв/символов в слове
 
    int i_max[2];          // аналогично как и в предыдущем
 
    int temp;              // временная переменная, просто будет держать позицию первого символа в новом слове
 
 
    while (ispunct(buffer[i]) || buffer[i] == ' ') i++;    // поиск первой буквы слова
    i_min[0] = i_max[0] = i;                               //запоминаем первую букву слова
    while (!ispunct(buffer[i]) || !buffer[i] == ' ') i++;  // поиск конца слова
    i_min[1] = i_max[1] = i;                               //запоминаем конец слова
    // весь предыдущий кусок принимает первое слово одновременно и за самое
    // маленькое и за самое большое слово.
 
 
 
    while (buffer[i]!= NULL){ //buffer[i]!=NULL  - условие того, что конец строки не достигнут
         while ((ispunct(buffer[i]) || buffer[i] == ' ') && buffer[i]!= NULL) i++;
         temp = i;
         while ((!ispunct(buffer[i]) || !buffer[i] == ' ') && buffer[i]!= NULL) i++;
 
         //если нет конца файла:
         if  (buffer[i]!= NULL){
 
             // если длина максимального слова i_max[1]-i_max[0] меньше,
             // чем длина текущего слова i - temp, то запоминаем новое слово
             if ((i_max[1] - i_max[0]) < (i - temp)){
                 i_max[0] = temp;
                 i_max[1] = i;
             }
 
             if ((i_min[1] - i_min[0]) >= (i - temp)){
                 i_min[0] = temp;
                 i_min[1] = i;
             }
          }
          // если конец файла достигнут:
          else if (!ispunct(buffer[i-1]) || !buffer[i-1] == ' '){
              if ((i_max[1] - i_max[0]) < (i - temp)){
                 i_max[0] = temp;
                 i_max[1] = i;
             }
 
             if ((i_min[1] - i_min[0]) >= (i - temp)){
                 i_min[0] = temp;
                 i_min[1] = i;
             }
          }
 
    }
    printf(" Max = ");
    //выводим максимальное слово на экран посимвольно
    for (i=i_max[0]; i<i_max[1]; i++) printf("%c", buffer[i]);
    printf("\n");
    printf(" Min = ");
    //выводим минимальное слово на экран посимвольно
    for (i=i_min[0]; i<i_min[1]; i++) printf("%c", buffer[i]);
 
    getch();
}
Yandex
Объявления
10.11.2008, 02:39     Строки: найти первое из самых длинных и последнее из самых коротких слов и поменять их местами
Ответ Создать тему
Опции темы

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