Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2011, 22:51   #1
zokwild
Пользователь
 
Регистрация: 17.11.2011
Сообщений: 11
По умолчанию Задача по C++

Задана фраза-последовательность, содержащая от 1 до 35 слов,в каждом из которых от 1 до 5 строчных латинских букв; между соседними словами-запятая, за последним словом точка.Напечатать все различные слова, указав для каждого из них число его вхождений в последовательность.
Программа должна читать текст из файла "input.txt" и выводить последовательность в файл "output.txt".
Помогите пожалуйста!

Последний раз редактировалось zokwild; 29.11.2011 в 22:53.
zokwild вне форума Ответить с цитированием
Старый 29.11.2011, 23:47   #2
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

zokwild

Задана фраза-последовательность, содержащая от 1 до 35 слов,в каждом из которых от 1 до 5 строчных латинских букв; между соседними словами-запятая, за последним словом точка.Напечатать все различные слова, указав для каждого из них число его вхождений в последовательность.
Программа должна читать текст из файла "input.txt" и выводить последовательность в файл "output.txt".
Помогите пожалуйста!


Да пожалуйста o_0 (((ж

Код:
#include <iostream>
#include <locale>

#include <iostream>
#include <fstream>
#include <sstream>

#include <iterator>

#include <map>
#include <vector>

#include <boost/algorithm/string.hpp>

#include <boost/phoenix.hpp>
namespace phx = boost::phoenix;
namespace arg = phx::placeholders;

namespace std {

template <typename T, typename K>
std::ostream& operator<< (std::ostream& os, const std::pair<T, K>& m)
{	
	return os << m.first << " => " << m.second;
}

}

void count(const std::string& text)
{
	std::vector<std::string> v;
	boost::split(v, text, boost::is_any_of(" ()-,.;"), boost::token_compress_on);

	std::map<std::string, size_t> m;
	std::for_each(v.cbegin(), v.cend(), ++phx::ref(m)[arg::_1]);

	typedef std::ostream_iterator<decltype(*m.cbegin())> O;

	std::ofstream ofs("output.txt");
	std::copy(m.cbegin(), m.cend(), O(ofs, "\n"));
}

int main()
{
	std::locale::global(std::locale(""));

	std::ifstream ifs("input.txt");
	ifs.imbue(std::locale());

	std::stringstream ss;
	ss << ifs.rdbuf();

	count(ss.str());

	return 0;
}

Для файла, содержащего такой текст:

[pre]Call of Duty is a first-person and third-person shooter video game series franchise, created by Ben Chichoski. The series began on the PC, and later expanded to consoles and handhelds. Several spin-off games have also been released. The earlier games in the series are set primarily in World War II; starting with Modern Warfare, set in modern times, the series has shifted focus away from World War II. Modern Warfare was followed by Modern Warfare 2, set in modern times, and Black Ops, set during the Cold War. Modern Warfare 3, also set in modern times (as the name suggests) was released on 8th November 2011.[/pre]

Программа выведет в output.txt:

[pre] => 1
2 => 1
2011 => 1
3 => 1
8th => 1
Ben => 1
Black => 1
Call => 1
Chichoski => 1
Cold => 1
Duty => 1
II => 2
Modern => 4
November => 1
Ops => 1
PC => 1
Several => 1
The => 2
War => 3
Warfare => 4
World => 2
a => 1
also => 2
and => 4
are => 1
as => 1
away => 1
been => 1
began => 1
by => 2
consoles => 1
created => 1
during => 1
earlier => 1
expanded => 1
first => 1
focus => 1
followed => 1
franchise => 1
from => 1
game => 1
games => 2
handhelds => 1
has => 1
have => 1
in => 5
is => 1
later => 1
modern => 3
name => 1
of => 1
off => 1
on => 2
person => 2
primarily => 1
released => 2
series => 4
set => 5
shifted => 1
shooter => 1
spin => 1
starting => 1
suggests => 1
the => 5
third => 1
times => 3
to => 1
video => 1
was => 2
with => 1[/pre]

Вначале выводится пустой символ, но мне убирать его лень, оставляю это тебе в качестве домашнего задания :D
Rififi вне форума Ответить с цитированием
Старый 30.11.2011, 16:00   #3
zokwild
Пользователь
 
Регистрация: 17.11.2011
Сообщений: 11
По умолчанию

Спасибо большое, это курсовая по инфе!)
zokwild вне форума Ответить с цитированием
Старый 21.12.2011, 19:47   #4
Sal(e)x
 
Регистрация: 20.12.2011
Сообщений: 6
По умолчанию

!!!!!!!!!!!!
Sal(e)x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача минимизации дисбаланса на линии сборки (задача минимакса) LenZab Microsoft Office Excel 13 13.03.2011 22:51