Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int main()
- {
- int n; // инициализируем n
- cin >> n; // считываем n
- char *s = new char[n + 1]; // Создаем динамический массив символов, \
- n + 1 т.к. один символ резервируем для '\0'
- cin.ignore(n, '\n'); // чтобы не пропускал считывание строки
- cin.getline(s, n + 1); // считываем символы как строку
- int minWord = 0, // позиция первой буквы самого короткого слова
- maxWord = 0, // позиция первой буквы самого длинного слова
- minLen = n, // длина самого короткого слова
- maxLen = 0, // длина самого длинного слова
- len = 0; // текущая длина (нужно в цикле)
- // Проходимся по всем символа динамического массива
- // цикл до n включительно, т.к. нужно определять конец строки
- for (int i = 0; i <= n; i++)
- {
- // если текущий символ пробел или символ конца строки
- // Условие выполняется, когда мы находим слово
- if (s[i] == ' ' || s[i] == '\0')
- {
- if (len == 0) continue; // чтобы не было слов нулевой длины
- // если найденное слово длинее длинного
- if (len > maxLen)
- {
- maxWord = i - len;
- maxLen = len;
- }
- // если найденное слово короче короткого
- if (len < minLen)
- {
- minWord = i - len;
- minLen = len;
- }
- len = 0; // сбрасываем длину текущего слова
- } else len++; // иначе увеличиваем текущую дину на 1
- }
- cout << "Min (" << minLen << ") = ";
- for (int i = minWord; i < minWord + minLen; i++)
- cout << s[i]; // посимвольно выводим слово
- cout << "\nMax (" << maxLen << ") = ";
- for (int i = maxWord; i < maxWord + maxLen; i++)
- cout << s[i]; // посимвольно выводим слово
- delete[] s; // Освобождаем выделенную под динамический массив символов память
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement