C++利用结构体计算复数和

#include<iostream.h>
struct fushu
{
float real;
float image;
};//利用结构体实部虚部特征建立两个元素
fushu add(fushu x,fushu y)
{
fushu x3;
x3.real=x.real+y.real;
x3.image=x.image+y.image;
return x3;
}//求和结构体函数 实部虚部分别求和
int main()
{
fushu n,s,x;
cin>>n.real>>n.image>>s.real>>s.image;
x=add(n,s);
cout<<x.real;
if(x.image>0)
{
cout<<"+";
cout<<x.image<<“i”<<endl;
}
else if(x.image<0)
cout<<x.image<<“i”<<endl;
else
cout<<endl;
return 0;
} //if语句用来判断正负输出

\编写不易 有帮助的话请点个赞,谢谢。
附上运行截图
在这里插入图片描述

### 回答1: 下面是一个利用 C++ 计算复数矩阵的普通乘法的示例代码: ```cpp #include <iostream> #include <complex> #include <vector> using namespace std; typedef complex<double> Complex; vector<vector<Complex>> matmul(vector<vector<Complex>> A, vector<vector<Complex>> B) { int N = A.size(); int M = B.size(); int K = B[0].size(); vector<vector<Complex>> C(N, vector<Complex>(K, 0)); for (int i = 0; i < N; i++) { for (int j = 0; j < K; j++) { for (int k = 0; k < M; k++) { C[i][j] += A[i][k] * B[k][j]; } } } return C; } int main() { vector<vector<Complex>> A = {{1, 2}, {3, 4}}; vector<vector<Complex>> B = {{5, 6}, {7, 8}}; vector<vector<Complex>> C = matmul(A, B); for (int i = 0; i < C.size(); i++) { for (int j = 0; j < C[0].size(); j++) { cout << C[i][j] << " "; } cout << endl; } return 0; } ``` 在这个示例代码中,我们使用了 STL 中的 vector 来表示矩阵,并使用了 C++ 中的复数类型 complex<double> 来表示复数。matmul 函数接受两个矩阵 A 和 B 作为输入参数,并返回它们的乘积矩阵 C。在函数中,我们利用三重循环计算矩阵 C 的每个元素。最后,在 main 函数中,我们将 A 和 B 初始化为两个 2x2 的复数矩阵,计算它们的乘积,然后输出乘积矩阵 C 的每个元素。 ### 回答2: 利用C++计算复数矩阵的普通乘法可以通过以下步骤实现。 首先,我们需要定义一个复数结构体,包括实部和虚部。可以使用结构体或者类来表示。 然后,我们可以定义一个函数来实现复数矩阵的乘法。函数的参数应该包括两个复数矩阵及其维度。 在函数内部,我们可以使用两个嵌套的循环来遍历乘法操作。外层循环迭代矩阵的行,而内层循环迭代矩阵的列。 在每个迭代步骤中,我们可以定义一个复数变量来保存乘积的结果。然后,使用一个额外的循环来计算每个元素的乘积。内层循环迭代第一个矩阵的列和第二个矩阵的行。 最后,将乘积结果存储在一个新的复数矩阵中。 下面是一个简单的示例代码: ```cpp #include <iostream> // 复数结构体定义 struct Complex { double real; double imag; }; // 复数矩阵乘法函数 void multiplyMatrix(Complex** mat1, Complex** mat2, Complex** result, int rows1, int cols1, int cols2) { for (int i = 0; i < rows1; i++) { for (int j = 0; j < cols2; j++) { Complex prod = {0, 0}; // 初始化乘积结果 for (int k = 0; k < cols1; k++) { prod.real += mat1[i][k].real * mat2[k][j].real - mat1[i][k].imag * mat2[k][j].imag; prod.imag += mat1[i][k].real * mat2[k][j].imag + mat1[i][k].imag * mat2[k][j].real; } result[i][j] = prod; } } } int main() { // 示例代码 // 定义两个3x3的复数矩阵 Complex mat1[3][3] = {{ {1, 2}, {3, 4}, {5, 6} }, { {7, 8}, {9, 10}, {11, 12} }, { {13, 14}, {15, 16}, {17, 18} } }; Complex mat2[3][3] = {{ {1, 2}, {3, 4}, {5, 6} }, { {7, 8}, {9, 10}, {11, 12} }, { {13, 14}, {15, 16}, {17, 18} } }; int rows1 = 3; int cols1 = 3; int cols2 = 3; // 定义结果矩阵 Complex result[3][3]; // 调用函数进行矩阵乘法 multiplyMatrix(mat1, mat2, result, rows1, cols1, cols2); // 输出结果 for (int i = 0; i < rows1; i++) { for (int j = 0; j < cols2; j++) { std::cout << "(" << result[i][j].real << ", " << result[i][j].imag << ") "; } std::cout << std::endl; } return 0; } ``` 以上示例代码实现了两个3x3的复数矩阵的乘法计算,并输出结果。你可以根据实际需修改矩阵的大小和具体的矩阵元素值。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值