#include <stdioh>
#include <stdlibh>
#include <iostream>
using namespace std;
//交集
void Intersection(int a[], int b[], int m, int n)
{
cout<<"两集合交集:";
for(int i = 0; i < m; i++)
{
for(int j = 0; j < n; j++)
{
if(a[i] == b[j])
{
cout<<a[i]<<' ';
break;
}
}
}
cout<<endl;
}
//并集
void AddSets(int a[], int b[], int m, int n)
{
int flag;
cout<<"两集合并集:";
for(int i = 0; i < m; i++)
{
flag = true;
for(int j = 0; j < n; j++)
{
if(a[i] == b[j])
{
flag = false;
break;
}
}
if(flag) cout<<a[i]<<' ';
}
for(int j = 0; j < n; j++)
{
cout<<b[j]<<' ';
}
cout<<endl;
}
//差集
void SubSets(int a[], int b[], int m, int n)
{
int flag;
cout<<"两集合差集:";
for(int i = 0; i < m; i++)
{
flag = true;
for(int j = 0; j < n; j++)
{
if(a[i] == b[j])
{
flag = false;
break;
}
}
if(flag) cout<<a[i]<<' ';
}
cout<<endl;
}
void main()
{
int n1;
int n2;
int a[100];
int b[100];
cin>>n1;
cout<<"请输入第一个数组元素:";
for (int i = 0; i < n1; i++)
{
cin>>a[i];
}
cout<<"请输入第二个数组大小:";
cin>>n2;
cout<<"请输入第二个数组元素:";
for (i = 0; i < n2; i++)
{
cin>>b[i];
}
Intersection(a, b, n1, n2);
AddSets(a, b, n1, n2);
SubSets(a, b, n1, n2);
getchar();
}
#include <stdioh>
#include <stdlibh>
#include <stringh>
//mat97
//以下是双链表的节点结构,每个节点存储一个4位的数,比如1,0031,0056存入链表后就是1,31,56三个节,输出的时候再补0输出!
typedef struct node{
int n;
struct node next;
struct node prev;
} node;
node p;
char num1[1024],num2[1024];
int conv(char a)
{
int n=0,i;
for(i=0;a[i];++i)
{
n=10;
n+=(a[i]-'0');
}
return n;
}
int main()
{
char c[2];
int i,f;
node q;
p=(node)malloc(sizeof(node));
p->next=p->prev=0;
q=p;
num1[0]=num2[0]=',';
printf("Enter num 1:\n");
scanf("%s",num1+1);
for(i=strlen(num1);i>=0;--i)
{
if(num1[i]==',')
{
num1[i]=0;
q->next=(node)malloc(sizeof(node));
q->next->prev=q;
q->next->next=0;
q=q->next;
q->n=conv(num1+i+1);
}
}
q->next=p;
p->prev=q;
printf("Enter op:\n");
scanf("%s",c);
c=c=='+'0:1;
printf("Enter num 2:\n");
scanf("%s",num2+1);
q=p;f=0;
if(!c) //+
{
for(i=strlen(num2);i>=0;--i)
{
if(num2[i]==',')
{
num2[i]=0;
if(q->next==p)
{
q->next=(node)malloc(sizeof(node));
q->next->next=p;
q->next->prev=q;
q->next->n=0;
p->prev=q->next;
}
q=q->next;
q->n+=(conv(num2+i+1)+f);
if(q->n<10000)
f=0;
else
{
f=1;
q->n-=10000;
}
}
}
if(f)
{
if(q->next==p)
{
q->next=(node)malloc(sizeof(node));
q->next->next=p;
q->next->prev=q;
q->next->n=1;
}
else
{
while(q->next!=p)
{
q=q->next;
q->n+=1;
if(q->n<10000)
{
f=0;
break;
}
else
{
q->n=0;
f=1;
}
}
if(f)
{
q->next=(node)malloc(sizeof(node));
q->next->next=p;
q->next->prev=q;
q->next->n=1;
}
}
}
printf("%d,",p->prev->n);
for(q=p->prev->prev;q!=p;q=q->prev)
printf("%04d,",q->n);
}
else //-
{
for(i=strlen(num2);i>=0;--i)
{
if(num2[i]==',')
{
num2[i]=0;
if(q->next==p)
{
q->next=(node)malloc(sizeof(node));
q->next->next=p;
q->next->prev=q;
q->next->n=0;
p->prev=q->next;
}
q=q->next;
q->n-=(conv(num2+i+1)+f);
if(q->n>=0)
f=0;
else
{
f=1;
q->n+=10000;
}
}
}
if(f)
{
if(q->next==p)
{
q->n-=10000;
}
else
{
while(q->next!=p)
{
q=q->next;
q->n-=1;
if(q->n>=0)
{
f=0;
break;
}
else
{
q->n+=10000;
f=1;
}
}
if(f)
{
q->n-=10000;
}
}
}
printf("%d,",p->prev->n);
for(q=p->prev->prev;q!=p;q=q->prev)
printf("%04d,",q->n);
}
return 0;
}
纯手打,已测试,楼主先看着,有不懂的再追问
加法:
减法:
编码辛苦,希望各位大神不要copy,小弟跪谢……
#include <iostream>
using namespace std;
int main()
{
double sum=0,s=0,e;
int n;
cout << "输入数组元素个数" <<endl;
cin>>n;
int a=new int[n];
for(int i=0; i<n;i++){
cout<<"输入第"<<i<<"个数"<<endl;
cin>>a[i];
}
for(i=0;i<n;i++) //求和
sum+=a[i];
e=sum/n; //求平均值
cout<<"[" ;
for(i=0;i<n;i++){ //求方差
cout<<"("<<a[i]<<"-"<<e<<")("<<a[i]<<"-"<<e<<")";
if(i!=n-1)
cout<<"+";
s+=(a[i]-e)(a[i]-e);
}
cout<<"]/"<<n;
s=s/n;
cout <<"="<<s<<"(方差)"<<endl;
return 0;
}
以上就是关于如何用数组实现集合的并,交和差运算全部的内容,包括:如何用数组实现集合的并,交和差运算、设计一个程序实现两个任意长的整数求和与差的运算、用C++写一个计算方差的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)