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

Поменять местами самое длинное слово и самое короткое слово в тексте - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Задачка про массивы http://www.cyberforum.ru/cpp-beginners/thread14860.html
Только начала изучать программирование, пытаюсь разбиратся ,но не всё так просто , помогите пжлст решить задачку на массивы Даны два массива размера N, элементы которых упорядоченны по возростанию объединить эти массивы так, чтобы результирующий массив остался упорядоченным. Желательно с коментариями ,я хочу понять как она решается.
C++ С чего начать изучение С++ Здравствуйте все. Я хочу научиться программировать на С++, а в дальнейшем писать игры (на профессиональном уровне), но на данный момент в программировании я абсолютный ноль. подскажите пожалуйста какую ИДЕ и какой компилятор мне нужен, где его скачать и какую-нибудь литературу. заранее спасибо http://www.cyberforum.ru/cpp-beginners/thread14854.html
Существуют ли методы побитового сравнения строк? C++
Существуют ли методы побитового сравнения строк? Нужно искать и сравнивать комбинацию 126 бит. Комбинация известна. А сравнивать надо с одержимым файла. Как сделать это?
Передача параметров, оператор << C++
Я вот решил написать простенькую программку на свеже скачанной среде. Программка создает функцию, которая перемножает 2 числа а также хранит в глобальной переменной kol количество, сколько раз функцию вызывали. Так вот почему в варианте, где только один оператор cout. при выводе kol имеет значение 0, а не один как по идее должно быть? И даже если несколько раз вызвать функцию значение kol будет...
C++ Значения функции F на интервале http://www.cyberforum.ru/cpp-beginners/thread14804.html
Кому не трудно, помогите пожалуйста решить 2 задачки! Си++ в универе совсем не обучают, а 2 лабы нужно срочно сдать уже! Я бы с радостью и сам покапался, разобрался, но требуют уже срочно, а долгов ещё выши крыши! Буду вам очень благодарен! №1 Вычислить и вывести на экран в виде таблицы значения функции F на интервале от Хнач. до Хкон. с шагом dX. (-a)*(x^2) + b при х<0 и b...
C++ Код обратной матрицы на С++ Мне очень нужен код программы обратной матрицы. подробнее

Показать сообщение отдельно
Inlight
43 / 42 / 2
Регистрация: 17.09.2008
Сообщений: 98
30.10.2008, 17: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
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
#include <iostream>
#include <conio.h> // для _getch()
#include <string>
 
#define COUNT 40
#define LENGTH 2 // символ + нулевой символ
 
using namespace std;
 
int main()
{
    string bufString;
    string tempString = "";
    string minString;
    string maxString;
    char arrayOfChars[COUNT][LENGTH] = {
        "b","b"," ","c","c","c"," ","a"," ","e"," ",
        "f","f"," ","d","d","d","d","d","d","d","d","d"," ",
        "g","g","g","g","g","g","g","g","g"," ","h","h"," ","i","i","i"
    };
    minString = arrayOfChars[0][0];
    maxString = arrayOfChars[0][0];
    int min = 0;
    int max = 0;
    for (int c = 0; c < COUNT; c++) {
        // заполняем исходную строку
        bufString += arrayOfChars[c][0];
        // добавляем символы в строку, пока не встретим пробел
        if (arrayOfChars[c][0] != 32) {
            tempString +=  arrayOfChars[c][0];
        }
        else {
            if (tempString.size() <= minString.size()) {
                // если строка меньше минимальной
                if (tempString.size() < minString.size()) {
                    // делаем минимальной текущую
                    minString = tempString;
                    min = c-tempString.size();
                }
                else { // если строка равна минимальной, сравниваем посимвольно
                    if (minString.compare(tempString) > 0) {
                        // делаем минимальной строку с меньшими символами
                        minString = tempString;
                        min = c-tempString.size();
                    }
                }
            }
            if (tempString.size() >= maxString.size()) {
                // если строка больше максимальной
                if (tempString.size() > maxString.size()) {
                    maxString = tempString;
                    max = c-tempString.size();
                }
                else {
                    // если строка равна максимальной, сравниваем посимвольно
                    if (maxString.compare(tempString) < 0) {
                        // делаем максимальной строку с бОльшими символами
                        maxString = tempString;
                        max = c-tempString.size();
                    }
                }
            }
            tempString = "";
        }
    }
    // выводим исходную
    cout << "Before: ";
    for (int c = 0; c < COUNT; c++) {
        cout << arrayOfChars[c][0];
    }
    cout << endl;
    if (min < max) {
        // если минимальная строка левее максимальной, то сначала
        // заменяем максимальную строку минимальной
        bufString.erase(max,maxString.size());
        bufString.insert(max,minString);
        bufString.erase(min,minString.size());
        bufString.insert(min,maxString);
    }       
    else {
        // если минимальная строка правее максимальной, то сначала
        // заменяем минимальную строку максимальной
        bufString.erase(min,minString.size());
        bufString.insert(min,maxString);
        bufString.erase(max,maxString.size());
        bufString.insert(max,minString);
    }
    // выводим результат
    cout << "After: " << bufString << endl;
    // ждём нажатия клавиши
    _getch();
    return 0;
}
PS. Делал в VS 2008
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru