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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Romantikkk
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 144
#1

Строки (Найти длину самого короткого и самого длинного слова, а также сами эти слова) - C++

08.12.2012, 16:11. Просмотров 1170. Ответов 9
Метки нет (Все метки)

Люди, подскажите, плиз, как написать програмку в с++ за условием, что дана строка, состоящая из слов, разделенных пробелами (одним или несколькими). Найти длину самого короткого и самого длинного слова, а также сами эти слова.
Помогите, чем можите, спасибо огромное.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2012, 16:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Строки (Найти длину самого короткого и самого длинного слова, а также сами эти слова) (C++):

Найти длину самого короткого и самого длинного слова, а также сами эти слова - C++
Народ, помогите, пожалуйста, как мне написать код в с++ програмки, в которой дана строка, состоящая из слов, разделенных пробелами (одним...

Найти длину самого короткого слова и самого длинного слова в строке - C++
помогите!!! Дана строка, содержащая текст. Найти длину самого короткого слова и самого длинного слова.

Дана строка, содержащая текст. Найти длину самого короткого и самого длинного слова. - C++
1. Дана строка, содержащая текст. Найти длину самого короткого и самого длинного слова. 2. 14.14. Имеется строка, содержащая буквы...

Дана строка содержащая текст. Найти длину самого короткого и самого длинного слова. - C++
помогите написать программу =) очень нужно=) Дана строка содержащая текст. Найти длину самого короткого и самого длинного слова.

Найти длину самого длинного и самого короткого слова - C++
Дана строка символов. Найти длину самого длинного и самого короткого символа. Написать задачу с обращением к процедуре...

Найти длину самого короткого и самого длинного слова. - C++
Дана строка, содержащая текст. Найти длину самого короткого и самого длинного слова.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
08.12.2012, 17:08 #2
Стандартная функция strtok. Ваша задача решается небольшой модификацией примера из MSDN.
0
yekka
385 / 149 / 8
Регистрация: 12.05.2011
Сообщений: 450
08.12.2012, 19:28 #3
лажу написал
0
Romantikkk
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 144
08.12.2012, 19:33  [ТС] #4
Цитата Сообщение от yekka Посмотреть сообщение
yekka@ENIAC:~/tmp [0] $ g++ minmax.cxx -std=c++11 -lboost_regex -o minmax yekka@ENIAC:~/tmp [0] $ ./minmax Исходная строка: Just do it! min: do max: Just yekka@ENIAC:~/tmp [0] $ ./minmax Исходная строка: Мама мыла раму. min: Мама max: Мама yekka@ENIAC:~/tmp [0] $ ./minmax Исходная строка: Дефрагментатор ntfs под linux. min: ntfs max: Дефрагментатор yekka@ENIAC:~/tmp [0] $
Что это ??? И почему
C++
1
#include <boost/regex.hpp>
не хочет открывать???
0
yekka
385 / 149 / 8
Регистрация: 12.05.2011
Сообщений: 450
08.12.2012, 19:56 #5
поправил багу, теперь вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <string>
#include <iostream>
#include <boost/regex.hpp>
 
int main() {
    std::setlocale(LC_ALL, "en_US.UTF-8");
    std::wstring min, max, original;
    std::wcout << L"Исходная строка: ";
    std::getline(std::wcin, original);
 
    const wchar_t * expr = L"[a-zA-Zа-яA-Я]+";
    boost::wregex rexp(expr);
    boost::wsregex_iterator begin(original.begin(), original.end(), rexp), end;
    std::for_each(begin, end, 
            [&](const boost::match_results<std::wstring::const_iterator> & sm) {
                    if (min.length() > sm[0].length()) min = sm[0];
                    if (min.length() == 0)             min = sm[0];
                    if (max.length() < sm[0].length()) max = sm[0];
            });
    std::wcout << "min: " << min << std::endl;
    std::wcout << "max: " << max << std::endl;
}
Код
$ g++ minmax.cxx -std=c++11 -lboost_regex -o minmax

$ ./minmax
Исходная строка: Just do it!
min: do
max: Just

$ ./minmax
Исходная строка: Мама мыла раму.
min: Мама
max: Мама

$ g++ minmax.cxx -std=c++11 -lboost_regex -o minmax
Исходная строка: Дефрагментатор ntfs под linux.
min: под
max: Дефрагментатор
2
gray_fox
What a waste!
1520 / 1223 / 70
Регистрация: 21.04.2012
Сообщений: 2,560
Завершенные тесты: 3
08.12.2012, 20:30 #6
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
#include <iostream>
#include <sstream>
#include <iterator>
#include <algorithm>
#include <string>
#include <vector>
 
 
int main() {
   std::string const str = "If ranges are to be a feature of the language "
         "then they should probably be supported at language level "
         "rather than by some trick";
 
   std::istringstream iss(str);
   std::vector<std::string> words(
         (std::istream_iterator<std::string>(iss))
        , std::istream_iterator<std::string>());
   auto minmax = std::minmax_element(
          words.begin()
        , words.end()
        , [] (std::string const& lhs, std::string const& rhs) {
             return lhs.length() < rhs.length();
          });
 
   std::cout << "Word with minimum length (" << minmax.first->length()
         << "): " << *minmax.first << std::endl;
   std::cout << "Word with maximum length (" << minmax.second->length()
         << "): " << *minmax.second << std::endl;
}
http://ideone.com/a4We3n
1
yekka
385 / 149 / 8
Регистрация: 12.05.2011
Сообщений: 450
08.12.2012, 20:36 #7
gray_fox, http://ideone.com/rtCQen
неправильно определено самое короткое слово (ntfs вместо под) и неправильно самое длинное (хотя здесь, конечно, зависит от определения слова)
1
gray_fox
What a waste!
1520 / 1223 / 70
Регистрация: 21.04.2012
Сообщений: 2,560
Завершенные тесты: 3
08.12.2012, 21:56 #8
yekka, как-нибудь так тогда:
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
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
 
#include <boost/algorithm/string/trim.hpp>
#include <boost/algorithm/string/split.hpp>
 
 
int main() {
   std::wstring str = L"Дефрагментатор ntfs под linux,,,,,,,,,,,,,,,,,,,,,,,,,";
 
   boost::trim_if(str, boost::is_any_of(L" .,!?:;\"'()"));
   std::vector<std::wstring> words;
   boost::split(words, str, boost::is_any_of(L" .,!?:;\"'()"), boost::token_compress_on);
   auto minmax = std::minmax_element(
          words.begin()
        , words.end()
        , [] (std::wstring const& lhs, std::wstring const& rhs) {
             return lhs.length() < rhs.length();
          });
 
   std::wcout << L"Word with minimum length (" << minmax.first->length()
         << L"): " << *minmax.first << std::endl;
   std::wcout << L"Word with maximum length (" << minmax.second->length()
         << L"): " << *minmax.second << std::endl;
}
Цитата Сообщение от yekka Посмотреть сообщение
неправильно самое длинное
Ну в задании - разделено пробелами, делал попроще)
Цитата Сообщение от yekka Посмотреть сообщение
неправильно определено самое короткое слово
char и русские символы, да.
1
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
08.12.2012, 22:19 #9
yekka, а почему бы не юзать <regex>, если юзаете
Цитата Сообщение от yekka Посмотреть сообщение
-std=c++11
Добавлено через 1 минуту
Цитата Сообщение от Romantikkk Посмотреть сообщение
не хочет открывать???
а библиотека буст есть?
0
yekka
385 / 149 / 8
Регистрация: 12.05.2011
Сообщений: 450
08.12.2012, 22:20 #10
go, в gcc-4.7 не реализовано пока
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2012, 22:20
Привет! Вот еще темы с ответами:

Найти длину самого короткого и самого длинного слова - C++
помогите решить Дана символьная строка, содержащая текст, который заканчивается точ¬кой. Найти длину самого короткого и самого длинного...

Определить длину самого длинного и самого короткого слова - C++
Помогите пожалуйста Я не понимаю как написать ввести массив символов, содержащий текст. Определить длину самого длинного и самого...

Строки. Найти длину самого короткого слова - C++
Добрый вечер. Хочу попросить у вас помощи с программой: нужно найти длину самого короткого слова в строке и вывести его. Все коды, что...

Разработать программу, осуществляющую поиск самого короткого и самого длинного слова во вводимом тексте - C++
Разработать программу, осуществляющую поиск самого короткого и самого длинного слова во вводимом тексте. С комментами)


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.12.2012, 22:20
Ответ Создать тему
Опции темы

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