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

Определить самое короткое слово в строке - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Microsoft Visual Studio 2010 (rus)по настройке. http://www.cyberforum.ru/cpp-beginners/thread441285.html
Что это означает? http://***************/question/70790618/
C++ Написать функцию к программе Есть программа: #include<stdio.h> #include<iostream.h> #include<conio.h> #include<math.h> #include<stdlib.h> #include<string.h> int N; int MASP1() http://www.cyberforum.ru/cpp-beginners/thread441264.html
Сортировка одномерного массива C++
Массив из 10 целых чисел заполнить случайными числами от -5 до 5. Произвести сортировку массива. Вывести на экран исходный и отсортированный массивы. Сортировать по убыванию прямым выбором Добавлено через 39 минут up up
Microsoft Visual Studio 2010 (rus) настройка unicod C++
Microsoft Visual Studio 2010. Не подскажите где в нстройках найти Unicod ? Чтобы после компиляции,отображались русские символы,а не каракули. Язык Си.
C++ Найти произведение елементов таблицы с парными элементами! http://www.cyberforum.ru/cpp-beginners/thread441246.html
Найти добуток елементов таблицы с парными элементами! Чесно говоря не могу понять,что знаит парные элементы,и вообще как их определить..Помогите.. мне всю програму..зараенее спасибо! если таблица это например двумерный масив .. Официальным языком форума является русский язык. Словарь открой, "добуток"!
C++ Можно ли передать в функцию массив произвольного размера ? Хочу создать функцию для детекта количества элементов в массиве sizeof(array)/sizeof(array); и надо чтобы функция принимала произвольный размер массива как сделать такую функцию на с++ ? подробнее

Показать сообщение отдельно
Сtrl
 Аватар для Сtrl
138 / 128 / 3
Регистрация: 19.07.2011
Сообщений: 184
05.02.2012, 19:21     Определить самое короткое слово в строке
Цитата Сообщение от Alex_Reilly Посмотреть сообщение
go, тяжеловато для меня
Я постарался сделать побольше комментариев.
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
#include <iostream>
#include <fstream>
#include <string>
#include <queue>
#include <cctype>
 
using namespace std;
 
string ShortWord(const string &line)
{
    string shortWord = ""; // переменная с результатом
 
    // перебираем побуквенно строку
    for (string::const_iterator it = line.begin(); it != line.end();)
    {
        string buffer;
        while (it != line.end() && isalpha(*it))        // пока текующий символ - буква
            buffer += *(it++);                          // добавляем его в буфер и переходим к следующему
        while (it != line.end() && !isalpha(*it)) ++it; // пропускаем небуквенные символы
        if (shortWord.empty() ||                        // если самое короткое слово пустое (не найдено) или
            shortWord.length() > buffer.length())       // найдено более короткое слово
            shortWord = buffer;                         // устанавливаем новое значение
    }
 
    return shortWord;
}
 
int main()
{
    ifstream fileStream("x.txt"); // поток для чтения из файла
    queue<string> lines;          // список из строк файла
    {
        // заполнение lines
        string line;
        while (fileStream) // пока поток доступен для чтения
        {
            getline(fileStream, line); // считываем одну строку
            if (!line.empty())         // если она не пуста
                lines.push(line);      // добавляем в список
        }
    }
    queue<string> shortWords; // список самых коротких слов
    {
        // заполнение shortWords
        string shortWord;
        while (!lines.empty()) // пока остались строки
        {
            shortWord = ShortWord(lines.front()); // находим самое короткое слово
            if (!shortWord.empty())               // если оно не пустое
                shortWords.push(shortWord);       // добавляем в список
            lines.pop();                          // переход к следующей строке
        }
    }
 
    while (!shortWords.empty()) // пока остались короткие слова
    {
        cout << shortWords.front() << endl; // выводим на экран
        shortWords.pop();                   // переход к следующему короткому слову
    }
    fileStream.close();
    cin.get();
}
 
Текущее время: 00:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru