程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> c++簡單復數計算器

c++簡單復數計算器

編輯:關於C++

1.有關計算器的功能

A,實現多個復數(包括實數)的加減乘除,大小比較,

B.實現十進制實數的進制轉換,可以轉換任意進制

2.有關設計的原理

A.復數計算的部分,采用運算符的重載,進行復數的加減乘除以及大小比較

對於輸入輸出,(>>和<<),加減乘除運算進行重載。

輸入的重載,實現a+bi形式的復數的輸入。

輸出的重載,實現實數的輸出(實現特殊的只輸出實部虛部之類的)。

加減乘除的重載,實現有關復數的運算。

B.進制轉換的部分,采用進制轉換的方法,實現10進制的任意進制轉換。輾轉相除,記錄每次的余數,存儲在數組中來記錄轉換得到的數字

3.有關設計的特點

A.采用函數對所實現功能進行封裝。

B.采用運算符的重載,使復數運算更加方便

C.考慮所有的輸入輸出情況,對選擇的操作,輸入復數的類型等進行判斷與相應的處理

D.程序在完成以後,我發了自己的博客,之後在博客上接受大家建議,規范代碼格式,自己在制作過程有所收獲也有所學習。

1,登錄界面:

 

這裡寫圖片描述

 

2,實現界面:

 

這裡寫圖片描述
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define EPS 1e-5                //定義精度常數

using namespace std;            //使用標准空間命名std

namespace NameCCom          //定義命名空間NameCCom
{
  class CCom               //定義一個CCom類
  {
    public:
      double Real, Image;//實部和虛部
    CCom(double real = 0, double image = 0)         //構造函數
    {
      Real=real;
      Image=image;
    }
     friend istream & operator >> (istream &is, CCom &com);        //重載輸入
     friend ostream & operator <<(ostream &os, CCom &com);        //重載輸出
     CCom operator + (CCom &com);                             //加法重載
     CCom operator - (CCom &com);                              //減法重載
     CCom operator * (CCom &com);                             //乘法重載
     CCom operator / (CCom &com);                               //除法重載
     CCom operator + = (CCom &com);                             //加法賦值重載
     CCom operator - = (CCom &com);                             //減法賦值重載
     CCom operator * = (CCom &com);                            //乘法賦值重載
     CCom operator / = (CCom &com);                            //除法賦值重載
  };

  struct User          //定義用戶結構體類型
  {
    char szName[20];     //用戶名
  }user;                 //定義全局變量


  int CCom::operator>(CCom &com)    //重載運算符">",比較模的大小
  {
    if(mod() > com.mod())
      return 1;    //若大,則返回1
    else
      return 0;    //否則,則返回0
  }
  int CCom::operator <(CCom &com)    //重載運算符"<",比較模的大小
  {
    if(mod() < com.mod())
      return 1;           //若小,則返回1
    else
      return 0;           //否則,則返回0
  }
  int CCom::operator!=(CCom &com)   //重載運算符"!=",分別判斷復數的實部和虛部
  {
    if(*this == com)
      return 0;           //若相等,則返回0
    else
      return 1;           //否則,則返回1
  }

  istream & operator >> (istream &is, CCom &com) //重載輸入,可以輸入a+bi的形式
  {
    cout<<"請輸入復數:";
    char s[80];
    is>>s;                   //用字符串的形式接受復數
    int len = strlen(s);       //求出字符串的長度
    int n = 0,sign = 1; //n為當前從字符串中提取出來的數字,初始化為0;sign是標記符號,初始化為正
    com.Image = com.Real = 0;
    for(int k=0;k '9') && (s[k]!='+' && s[k]!='-' && s[k]!='i'))
      {
        cout<<"error"<= '0' && s[k] <= '9')   //如果當前字符在0~9之間,將數字字符轉換成數字數值
      {
        n=n*10+s[k]-'0';
        k++;
      }
    }
    if(s[len-1] != 'i' && n! = 0)        //如果最後一個字符不是'i',表示復數對象內只有實部,沒有虛部
    {
      com.Real = n*sign;
    }
    return is;
  }

  ostream & operator << (ostream &os,CCom &com)  //重載輸入
  {
    if(fabs(com.Image) < EPS)       // 如果虛部為0
      os< 0)
                os<>num1;
     cout<<"第二個復數:";
     cin>>num2;
     sum=num1+num2;
     cout<<"第三個復數:";
     cin>>num1;
     int i=4;
     while(!(num1==Zero))
     {
       sum=sum+num1;
       cout<<"第"<>num1;
       i++;
     }
     cout<<"加法結果是:"<>num1;
     cout<<"第2個復數:";
     cin>>num2;
     sub=num1-num2;
     cout<<"第3個復數:";
     cin>>num1;
     int i=4;
     while(!(num1==Zero))
     {
         sub=sub-num1;
         cout<<"第"<>num1;
          i++;
     }
     cout<<"減法結果是:"<>num1;
     cout<<"第二個復數:";
     cin>>num2;
     mul=num1*num2;
     cout<<"第三個復數:";
     cin>>num1;
     int i=4;
     while(!(num1==Zero))
     {
         mul*=num1;
         cout<<"第"<>num1;
         i++;
     }
     cout<<"乘法結果是:"<>num1;
     cout<<"第二個復數:";
     cin>>num2;
     div=num1/num2;
     cout<<"第三個復數:";
     cin>>num1;
     int i=4;
     while(!(num1==Zero))
     {
        div/=num1;
        cout<<"第"<>num1;
        i++;
     }
     cout<<"除法結果是:"<>num1;
      cout<<"第二個復數\n";
      cin>>num2;
      if(num1==num2)
        cout<<"這兩個復數相等\n";
      else if(num1>num2)
        cout<>n;
        cout<<"輸入要轉換的進制:\n";
        cin>>p;
        cout<<"("<= 1; k--)//輸出轉換後的序列
        {
            if(s[k]>=10) //若為十六進制等則輸出相對應的字母
            cout<<(char)(s[k]+55);
            else         //否則直接輸出數字
            cout<>szName;
   system("cls");
   do
    {
      system("cls");
      cout<<"\t這是一個計算器,可實現以下功能,請按對應的按鍵(0-6)\n\n\n";
      cout<<"\t*----------Hpioneer小計算器菜單---------*\n";
      cout<<"\t|      1:多個復數加法,以0結束          |\n";
      cout<<"\t|      2:多個復數減法,以0結束          |\n";
      cout<<"\t|      3:多個復數乘法,以0結束          |\n";
      cout<<"\t|      4:多個復數除法,以0結束          |\n";
      cout<<"\t|      5:復數比較                       |\n";
      cout<<"\t|      6:進制轉換                       |\n";
      cout<<"\t|      0:退出程序                       |\n";
      cout<<"\t|      請您選擇:                        |\n";
      cout<<"\t*---------------------------------------*\n";
}

}

using namespace NameCCom;

int main() //主函數
{
    int h;
    output();
    cin>>h;//每步操作
    if(h == 1)     //用戶選1則調用Add()函數
        Add();
    else if(h == 2)  //用戶選2則調用Sub()函數
        Sub();
    else if(h == 3)   //用戶選3則調用Mul()函數
        Mul();
    else if(h == 4)   //用戶選4則調用Div()函數
        Div();
    else if(h == 5)     //用戶選6則調用Compare()函數
        Compare();
    else if(h == 6)  //用戶選7則調用函數Jinzhi()函數
        Jinzhi();
    else if(h == 0)
        cout<<"非常感謝您的使用\n";
    else
        break;
    }
  return 0;
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved