哇哦~这就是我
This is my way ~
C++博客
首页
新随笔
联系
聚合
管理
<
2008年3月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
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
1
2
3
4
5
统计
随笔 - 10
文章 - 0
评论 - 2
引用 - 0
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔档案
2008年5月 (2)
2008年4月 (3)
2008年3月 (5)
搜索
最新评论
1. re: C++第五次上机作业
你似乎还是不会使用批处理文件和命令行参数哟~~
--一个你的同学
2. re: 我可怜的第三次C++作业啊~~~只有70分~~~
可能是写的过程中有错,所以你要flash一下io或重设io的状态!
--梦在天涯
阅读排行榜
1. C++第四次上机作业(异或加密)(1378)
2. C++第五次上机作业(313)
3. 我恨死这道题了。。。。。。(292)
4. 详细解说 STL 排序(Sort) (288)
5. 我可怜的第三次C++作业啊~~~只有70分~~~(284)
评论排行榜
1. 我可怜的第三次C++作业啊~~~只有70分~~~(1)
2. C++第五次上机作业(1)
3. 第七次(0)
4. 11(0)
5. push!(0)
C++第五次上机作业(提高)
#include
<
iostream
>
#include
<
sstream
>
#include
<
map
>
#include
<
string
>
#include
<
vector
>
#include
<
iomanip
>
#include
<
fstream
>
#include
<
algorithm
>
using namespace std;
typedef map
<
string
, vector
<
int
>
>
WORD;
void init ( WORD
&
m )
{
ifstream fin;
fin.open(
"
keywords.txt
"
);
string
keyword;
while
( fin
>>
keyword )
m[keyword];
fin.close();
}
void count ( WORD
&
m )
{
int
line
=
0
;
ifstream fin;
fin.open(
"
text.txt
"
);
string
str;
while
( getline(fin,str) )
{
line
++
;
for
( WORD::iterator iter
=
m.begin () ; iter!
=
m.end( ); iter
++
)
if
( str.find ( iter
->
first )!
=
string
::npos )
m[iter
->
first].push_back(line);
}
fin.close();
}
void only( WORD
&
m )
{
for
( WORD::iterator i
=
m.begin() ; i!
=
m.end(); i
++
)
{
vector
<
int
>
::iterator new_end
=
unique(i
->
second
.begin(),i
->
second
.end());
i
->
second
.erase(new_end,i
->
second
.end());
}
}
void sort_list ( WORD m , map
<
int
,
string
>
&
mm )
{
for
( WORD::iterator iter_m
=
m.begin() ; iter_m !
=
m.end() ; iter_m
++
)
mm[iter_m
->
second
.size ()]
=
iter_m
->
first;
}
void output ( WORD m , map
<
int
,
string
>
mm )
{
string
keyword;
for
( map
<
int
,
string
>
::reverse_iterator iter
=
mm.rbegin() ; iter!
=
mm.rend() ; iter
++
)
{
cout
<<
setw(
10
)
<<
iter
->
second
<<
"
:
"
<<
"
(
"
;
for
( vector
<
int
>
::iterator iter_vector
=
m[iter
->
second
].begin() ; iter_vector!
=
m[iter
->
second
].end(); iter_vector
++
)
{
if
( iter_vector!
=
m[iter
->
second
].begin() )
cout
<<
"
,
"
;
cout
<<*
iter_vector;
}
cout
<<
"
)
"
<<
endl;
}
}
int
main ()
{
WORD m;
map
<
int
,
string
>
mm;
init(m);
count(m);
sort_list(m,mm);
only(m);
output(m,mm);
}
posted on 2008-04-02 23:21
chinaeli
阅读(239)
评论(0)
编辑
收藏
引用
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理