C/C++实现复数ADT相关功能

C/C++实现复数相关运算

C/C++实现复数相关运算,相关解释在代码中进行注释。

原创亓官劼,请勿抄袭,转载请注明出处。


实现了复数的ADT,基本操作有创建复数、初始化、获取实部、获取虚部、加法、减法、乘法、打印复数等操作。

#pragma warning(disable : 4996)
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<string>
#include<algorithm>
using namespace std;
struct Complex{
    double Re;//实部
    double Im;//虚部
};
void CreatComplex(struct Complex input[],int Re,int Im,int n);//创建复数
void InitialComplex(struct Complex input[],int n);//初始化;
double GetRe(struct Complex input[],int n);//获得实部
double GetIm(struct Complex input[], int n);//获得虚部
Complex AddComplex(struct Complex input[], int n1, int n2);//加法
Complex MinusComplex(struct Complex input[], int n1, int n2);//减法
Complex MultiplicationComplex(struct Complex input[], int n1, int n2);//乘法
void PrintComplex(struct Complex input[],int n);//打印
int main(){
    //复数ADT
       int i;
       Complex a[100];
       int m = 0;
       printf("请输入需要进行的操作:\n");
       printf("1:初始化复数\n");
       printf("2:创建复数\n");
       printf("3:获得实部\n");
       printf("4:获得虚部\n");
       printf("5:两个复数的加法\n");
       printf("6:两个复数的减法\n");
       printf("7:两个复数的乘法\n");
       printf("8:打印已有所有复数\n");
       printf("9:退出程序\n");
       
       while (1)
       {
              scanf("%d", &i);
              switch (i)
              {
              case 1: {
                     for (int n = 0; n < 100; n++) {
                           InitialComplex(a,n);
                     }
                     printf("全部初始化完毕,请继续选择操作\n");
              }
                     break;
              case 2: {
                     double Re, Im;
                     printf("请输入创建复数的实部,虚部\n");
                     scanf("%lf%lf",&Re,&Im);
                     CreatComplex(a, Re, Im,m);
                     m++;
                     printf("创建完毕,请继续选择操作\n");
              }
                     break;
              case 3: {
                     int n;
                     printf("请输入获取第几个复数的实部:\n");
                     scanf("%d", &n);
                     printf("第%d个复数的实部为:%f", n, GetRe(a,n));
              }
                     break;
              case 4: {
                     int n;
                     printf("请输入获取第几个复数的虚部:\n");
                     scanf("%d", &n);
                     printf("第%d个复数的虚部为:%lf", n, GetIm(a,n));
              }
                     break;
              case 5: {
                     int n1, n2;
                     printf("请输入第几个复数和第几个复数相加:\n");
                     scanf("%d%d",&n1,&n2);
                     printf("相加后的结果为:%lf+%lf i", AddComplex(a,n1,n2).Re, AddComplex(a, n1, n2).Im);
              }
                     break;
              case 6: {
                     int n1, n2;
                     printf("请输入第几个复数和第几个复数相减:\n");
                     scanf("%d%d", &n1, &n2);
                     printf("相减后的结果为:%f+%f i", MinusComplex(a, n1, n2).Re, MinusComplex(a, n1, n2).Im);
              }
                     break;
              case 7: {
                     int n1, n2;
                     printf("请输入第几个复数和第几个复数相乘:\n");
                     scanf("%d%d", &n1, &n2);
                     printf("相乘后的结果为:%f+%f i", MultiplicationComplex(a, n1, n2).Re, MultiplicationComplex(a, n1, n2).Im);
              }
                     break;
              case 8: {
                     int n;
                     for (n = 0; n < m; n++) {
                           PrintComplex(a,n);
                     }
              }
                     break;
              case 9:return 0;
              default:printf("请输入正确选项\n");
                     break;
              }
       }
    return 0;
}
void CreatComplex(struct Complex input[], int Re, int Im,int n) {//创建复数
    input[n].Re=Re;
    input[n].Im=Im;
}
void InitialComplex(struct Complex input[],int n){//初始化;
    input[n].Re=0;
    input[n].Im=0;
}
double GetRe(struct Complex input[], int n) {//获得实部
    return input[n].Re;
}
double GetIm(struct Complex input[], int n) {//获得虚部
    return input[n].Im;
}
Complex AddComplex(struct Complex input[],int n1,int n2) {//加法
    Complex re;
    re.Re=input[n1].Re+input[n2].Re;
    re.Im=input[n1].Im+input[n2].Im;
    return re;
}
Complex MinusComplex(struct Complex input[], int n1, int n2){//减法
    Complex re;
    re.Re=input[n1].Re-input[n2].Re;
    re.Im=input[n1].Im-input[n2].Im;
    return re;
}
Complex MultiplicationComplex(struct Complex input[], int n1, int n2){//乘法
    Complex re;
    re.Re=((input[n1].Re*input[n2].Re)-(input[n1].Im*input[n2].Im));
    re.Im=((input[n1].Im*input[n2].Re)-(input[n1].Re*input[n2].Im));
    return re;
}
void PrintComplex(struct Complex input[],int n){//打印
    printf("%lf + %lf i\n",input[n].Re,input[n].Im);
}

  大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客,B站昵称为:亓官劼,地址为亓官劼的B站

本文原创为亓官劼,请大家支持原创,部分平台一直在盗取博主的文章!!!

猜你喜欢

转载自blog.csdn.net/qq_43422111/article/details/106290339