題目:函數的判定
内容:判斷任意一個關系是否為函數,若是函數,判定其是否為單射、滿射或雙射。
要求:
1、提供函數(f:A—>B)的輸入接口;(輸入包括集合A,集合B和具體的函數關系(序偶集));
2、對函數的性質進行判斷(判斷單射、滿射和雙射);
3、提供判斷結果的輸出。
代碼:
#include<string.h>
#include<iostream>
using namespace std;
char *A,*B,*F;
int a,b,f;
int Judge(char *A,char*B,char*F){
int i,j,k;
for(i=1;i<a;i=i+2){
k=0;
for(j=2;j<f;j+=6){
if(F[j]==A[i])
k++;
}
if(k==0||k>1)
return 0;
}
return 1;
}
int ds(char*A,char*B,char*F){
int i,j;
for(i=4;i<b;i=i+6)
for(j=4;j<f;j=j+6)
if(F[i]==F[j]&&F[i-2]!=F[j-2])return 0;
return 1;
}
int ms(char*A,char*B,char*F){
int i,j;
for(i=1;i<b;i=i+2){
for(j=4;j<f;j=j+6)
if(F[j]==B[i])break;
if(j>f)return 0;
}
return 1;
}
int main(){
A=new char;
B=new char;
F=new char;
cout<<"輸入集合A:"<<endl;
cin>>A;
cout<<"輸入集合B:"<<endl;
cin>>B;
cout<<"輸入A到B的關系:"<<endl;
cin>>F;
a=strlen(A);
b=strlen(B);
f=strlen(F);
cout<<"集合"<<A<<"到"<<B<<"的一個關系是:"<<F<<endl;
if(!Judge(A,B,F)){
cout<<"不滿足函數定義!"<<endl;
}
else if(ds(A,B,F)&&ms(A,B,F)){
cout<<"此為雙射!"<<endl;
}
else if(ds(A,B,F))cout<<"此為單射"<<endl;
else if(ms(A,B,F))cout<<"此為滿射"<<endl;
else cout<<"二者皆不是!"<<endl;
return 0;
}
結果展示:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2YfNWawNCM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TP35EeFRlT5NGROBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLxAzM2EDOxETMwIDMxAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
按照這個格式來輸入就沒啥問題的