天天看點

離散數學:判斷任意一個關系是否為函數,若是函數,判定其是否為單射、滿射或雙射題目:函數的判定内容:判斷任意一個關系是否為函數,若是函數,判定其是否為單射、滿射或雙射。要求:代碼:

題目:函數的判定

内容:判斷任意一個關系是否為函數,若是函數,判定其是否為單射、滿射或雙射。

要求:

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;
}

           

結果展示:

離散數學:判斷任意一個關系是否為函數,若是函數,判定其是否為單射、滿射或雙射題目:函數的判定内容:判斷任意一個關系是否為函數,若是函數,判定其是否為單射、滿射或雙射。要求:代碼:
離散數學:判斷任意一個關系是否為函數,若是函數,判定其是否為單射、滿射或雙射題目:函數的判定内容:判斷任意一個關系是否為函數,若是函數,判定其是否為單射、滿射或雙射。要求:代碼:

按照這個格式來輸入就沒啥問題的

繼續閱讀