Andy's First Dictionary(uva 10815)多种写法

题意:给你一段文字,把所有的单词挑出来,然后排序打印、

打印的时候不能打印重复的,因此,在打印的时候一个判断就好。

  集合set的用法 :​​​​​​​     

       1.set是数学上的一个集合,每个元素最多只出现一次,使得省略去重操作。

       2.由于string已经定义了“小于”符号,使得存入set中的元素已经从小到大排好序

      ,所以直接用set保存单词集合。

       3.steringstream ss,是用来把一些数据定义成一个流,然后向一个东西里面输入。​​​​​​​

stringstream ss(s);
        while(ss>>buf)
                dict.insert(buf);

      4.因为前面已经把s里面的非字母内容全部变成了空格,所以buf会一个单词一个单词的读入,不读空格。 

      5.set::iterator 的意思是迭代器,是STL中的重要概念,类似于指针的用法。

for(set::iterator it = dict.begin();it != dict.end();++it)
        cout << *it << endl;

 

#include
#include
#include
#include
using namespace std;
set dict;  //string 集合 
int main()
{
	string s,buf;
	while(cin>>s)
	{
		for(int i=0;i>buf)
		   dict.insert(buf);		
	}
	for(set::iterator it=dict.begin();it!=dict.end();it++)
	   cout<<*it<
#include
using namespace std;
set dict;
int iszimu(char ch)
{
	if(ch>='A'&&ch<='Z'||ch>='a'&ch<='z')
	{
		return 1;
	}
	return 0;
}
char lowerzimu(char ch)
{
	if(ch>='A'&&ch<='Z')
	{
		return ch+32;
	}
	return ch;
}
int main()
{
	string s,buf;
	//freopen("shuju.txt","r",stdin);
	while(cin>>s)
	{
		for(int i=0;i>buf)
		{
			dict.insert(buf);
		}
	}
	set::iterator it=dict.begin();
	while(it!=dict.end())
	{
		cout<<*it<<"\n";
		++it;
	}
	return 0;
}

 

道题不算难,只需要把所有的单词统计下来进行排序,然后输出不同的就可以了

      1.利用struct来存放字符串数组,对字符串数组进行操作

      2.int cmp的升序排列问题

      3.去重!

#include
using namespace std;
struct word    //字符串数组存储方式 !!! 
{
	char s[205];
}x[200005];
int iszimu(char ch)
{
	if(ch>='A'&&ch<='Z'||ch>='a'&ch<='z')
	{
		return 1;
	}
	return 0;
}
char lowerzimu(char ch)
{
	if(ch>='A'&&ch<='Z')
	{
		return ch+32;
	}
	return ch;
}
int cmp(word a,word b)
{
	return strcmp(a.s,b.s)<0;
	//从小到大,升序排列 
}
int main()
{
	char ch;int cnt=0,i=0;
	//freopen("shuju.txt","r",stdin);
	while((ch=getchar())!=EOF)//字符串数组的输入 
	{
		if(iszimu(ch))//是字母 
		{
			x[cnt].s[i++]=lowerzimu(ch);//转化为小写 
		}
		else if(!iszimu(ch)&&iszimu(x[cnt].s[0]))
		{
			x[cnt++].s[i]=0;
			i=0;
		}
	}
	sort(x,x+cnt,cmp);//升序排列 
	printf("%s\n",x[0].s);
	for(int i=1;i

  

 

 

 

 

 

你可能感兴趣的:(ac)