zoukankan      html  css  js  c++  java
  • 试题 算法训练 P1103

     
    资源限制
    时间限制:1.0s   内存限制:256.0MB
      
    问题描述
      编程实现两个复数的运算。设有两个复数 和 ,则他们的运算公式为:

      要求:(1)定义一个结构体类型来描述复数。
      (2)复数之间的加法、减法、乘法和除法分别用不用的函数来实现。
      (3)必须使用结构体指针的方法把函数的计算结果返回。
      说明:用户输入:运算符号(+,-,*,/) a b c d.
      输出:a+bi,输出时不管a,b是小于0或等于0都按该格式输出,输出时a,b都保留两位。

    样例输入:
      - 2.5 3.6 1.5 4.9

    样例输出:
      1.00+-1.30i
     
     
    这题只要知道复数的运算法则就好了,当然,我没有按题目要求来做.
     
    复数运算法则:
      1. 加法:(a+bi) + (c+di) = (a+c) + (b+d)i;
      2. 减法:(a+bi) - (c+di) = (a-c) + (b-d)i;
      3. 乘法:(a+bi) * (c+di) = (ac-bd) + (bc+ad)i;
      4. 除法:(这里用到分母实例化)
        (a+bi) / (c+di) = ((a+bi)*(c-di)) / ((c+di)*(c-di))
                = ((ac+bd)+(bc-ad)i) / (c2+d2)
                = (ac+bd)/(c2+d2) + (bc-ad)i/(c2+d2)
      
     
     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstdlib>
     4 #include <cstring>
     5 #include <string>
     6 #include <cmath>
     7 #include <algorithm>
     8 #define INF 0x3f3f3f3f
     9 #define zero 1e-7
    10 
    11 using namespace std;
    12 typedef long long ll;
    13 const ll mod=50000;
    14 const ll max_n=2e5+7;
    15 
    16 int main() {
    17     double a, b, c, d, x, y;
    18     char ch;
    19     cin>>ch>>a>>b>>c>>d;
    20     switch(ch) {
    21         case '+': x=a+c; y=b+d; break;
    22         case '-': x=a-c; y=b-d; break;
    23         case '*': x=a*c-b*d; y=b*c+a*d; break;
    24         case '/': x=(a*c+b*d)/(c*c+d*d); y=(b*c-a*d)/(c*c+d*d); break;
    25         default : break;
    26     }
    27     printf("%.2f+%.2fi
    ", x, y);
    28     return 0;
    29 }
  • 相关阅读:
    Android TP出现小圆点解决方法
    Android的SAFE MODE(安全模式)
    Linux TCP透传到OneNET
    C读取BMP数据
    OLED显示BMP数据
    电脑出现DNS错误无法上网怎么办
    办公室如果没有网络怎么办呢?
    微信扫一扫获取地理位置
    win10系统程序与功能查找,卸载程序
    手把手学习数据库
  • 原文地址:https://www.cnblogs.com/wwqzbl/p/13549161.html
Copyright © 2011-2022 走看看