| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 925 人关注过本帖
标题:[求助]一个集合问题
只看楼主 加入收藏
菜鸟1号
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2006-4-7
收藏
 问题点数:0 回复次数:10 
[求助]一个集合问题
求集合的交集(数组)


我自己做的是
#include<stdio.h>
main()
{int i,j,n=0;
char str1[100],str2[100],str3[100];
printf("please input two strings:");
gets(str1);
gets(str2);
for(i=0;i<=strlen(str1);i++)
for(j=0;j<=strlen(str2);j++)
if(str1[i]==str2[j])
str3[n++]=str1[i];
for(n=0;n<=strlen(str3);n++)
printf("%c",str3[n]);
getch();
}
可是因为集合有单一性,就是一个集合中不能有相同的元素存在
比如我输入:HOOPCHINA 和JOPINA
输出就是OOPINA
OO就重复了,怎么解决这个问题啊>?
搜索更多相关主题的帖子: int main HOOPCHINA JOPINA 
2006-05-03 18:16
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
以下是引用菜鸟1号在2006-5-3 18:16:00的发言:
求集合的交集(数组)
可是因为集合有单一性,就是一个集合中不能有相同的元素存在
比如我输入:HOOPCHINA 和JOPINA
输出就是OOPINA
OO就重复了,怎么解决这个问题啊>?

我的建议是:像婚姻介绍所学习,“对上眼”就撤资料呀,总不能一女二嫁吧。

再不清楚就回我帖子好了。


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-03 19:03
wwc160
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-4-11
收藏
得分:0 
#include<stdio.h>
main()
{int i,j,n=0,m,k=0;
char str1[100],str2[100],str3[100];
printf("please input two strings:");
gets(str1);
gets(str2);
for(i=0;i<strlen(str1);i++)
for(j=0;j<strlen(str2);j++)
if(str1[i]==str2[j])
{str3[n++]=str1[i];k++;}
for(n=0;n<k;n++)
for(m=n+1;m<k;m++)
if(str3[n]==str3[m]) str3[n]=0;
for(n=0;n<k;n++)
if(str3[n])
printf(" %c",str3[n]);
}
大家帮我再优化下,谢谢!
2006-05-03 20:40
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 

从您的程序看,还没有理解我打的比方。
我的意思是一但找到“交集”元素不仅
要往str3[]里存,更要从str1和str2中
予以删除。您的最新努力却是删除str3
中的重复字符,这是有逻辑漏洞的,例
如str1="Happy",str2="apple"。


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-03 21:00
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 

从您的程序看,还没有理解我打的比方。
我的意思是一找到“交集”元素不仅
要往str3[]里存,更要从str1和str2中
予以删除。您的最新努力却是删除str3
中的重复字符,这是有逻辑漏洞的,例
如str1="Happy",str2="apple"。

[订正]上文“一但”应改为“一旦”。


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-03 21:03
菜鸟1号
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2006-4-7
收藏
得分:0 
谢谢!可是我不会删除啊

虽然我是一只菜鸟...但是菜鸟也有飞上蓝天的那一天...
2006-05-03 21:29
wwc160
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-4-11
收藏
得分:0 
以下是引用–★–在2006-5-3 21:03:00的发言:

从您的程序看,还没有理解我打的比方。
我的意思是一找到“交集”元素不仅
要往str3[]里存,更要从str1和str2中
予以删除。您的最新努力却是删除str3
中的重复字符,这是有逻辑漏洞的,例
如str1="Happy",str2="apple"。

[订正]上文“一但”应改为“一旦”。

不是很明白!
2006-05-03 21:44
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
/*以下是–★–修改后的程序*/
void delete(int i, char str[ ])
{
while(str[i]){str[i]=str[i+1];i++;}
}
#include<stdio.h>
#include<string.h>
main()
{unsigned int i,j,n=0;
char str1[100],str2[100],str3[100];
printf("please input string 1: ");
gets(str1);
printf("please input string 2: ");
gets(str2);
for(i=0;i<strlen(str1);i++)
{ char ch1=str1[i];
for(j=0;j<strlen(str2);j++)
if(ch1==str2[j])
{ str3[n++]=ch1;
delete(i--,str1);
delete(j,str2);
break;
}
}
str3[n]='\0';
puts(str3);
}


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-03 22:12
菜鸟1号
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2006-4-7
收藏
得分:0 
以下是引用–★–在2006-5-3 22:12:00的发言:
/*以下是–★–修改后的程序*/
void delete(int i, char str[ ])
{
while(str[i]){str[i]=str[i+1];i++;}
}
#include<stdio.h>
#include<string.h>
main()
{unsigned int i,j,n=0;
char str1[100],str2[100],str3[100];
printf("please input string 1: ");
gets(str1);
printf("please input string 2: ");
gets(str2);
for(i=0;i<strlen(str1);i++)
{ char ch1=str1[i];
for(j=0;j<strlen(str2);j++)
if(ch1==str2[j])
{ str3[n++]=ch1;
delete(i--,str1);
delete(j,str2);
break;
}
}
str3[n]='\0';
puts(str3);
getch();
}

这个程序运行后比方我输入PPPP
PPPP还是显示PPPP啊!还是没有解决问题!


虽然我是一只菜鸟...但是菜鸟也有飞上蓝天的那一天...
2006-05-10 18:42
lanen995
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2006-5-6
收藏
得分:0 
if(str1[i]==str2[j])
str3[n++]=str1[i];
我想问题在这里
加个for循环
问题可以解决
2006-05-10 20:14
快速回复:[求助]一个集合问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012988 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved