черканите если есть время

Ответить
sid1868
Сообщения: 1
Зарегистрирован: 30 мар 2010, 23:49

Дана строка, состоящая из слов, разделенных пробелами (одним или несколькими). Определить длину самого короткого слова.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Перемещено из раздела "С и С++".
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Идем по строке, сравниваем очередной символ с пробелом. Если не пробел - увеличиваем счетчик на 1. Если пробел - сравниваем счетчик с предыдущим минимумом, если счетчик меньше - объявляем его новым минимумом. Обнуляем счетчик, идем дальше.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
rangerx
Сообщения: 28
Зарегистрирован: 01 июл 2009, 10:30

Код: Выделить всё

#include <iostream>
#include <sstream>
#include <algorithm>
#include <iterator>

bool compare(const std::string& a, const std::string& b) { return a.length() < b.length(); }

int main()
{
	std::istringstream iss("asdasd sadfsdfas  dfgr sdqw lsdjkflk afd qgew");
	std::istream_iterator<std::string> iword(iss);
	std::cout << (*std::min_element(iword, std::istream_iterator<std::string>(), compare)).length() << std::endl;

	return 0;
}
Ответить