1. 程式人生 > >C++第七週【任務3】設計Complex,使實部和虛部的型別為定義物件時用的實際型別。

C++第七週【任務3】設計Complex,使實部和虛部的型別為定義物件時用的實際型別。

/* (程式頭部註釋開始)
* 程式的版權和版本宣告部分
* Copyright (c) 2011, 煙臺大學計算機學院學生 
* All rights reserved.
* 檔名稱: C++第七週任務3                             
* 作    者: 李洪懸                             
* 完成日期:   2012      年   4    月   3     日
* 版 本 號:          

* 對任務及求解方法的描述部分
* 輸入描述: 輸入點的座標
* 問題描述:設計Complex,使實部和虛部的型別為定義物件時用的實際型別。 
* 程式輸出: 求點的座標的和
* 程式頭部的註釋結束
*/
【任務3】閱讀P314的例10.1(電子版的在平臺上見txt檔案)。該例實現了一個複數類,但是美中不足的是,複數類的實部和虛部都固定是double型的。可以通過模板類的技術手段,設計Complex,使實部和虛部的型別為定義物件時用的實際型別。
(1)要求類成員函式在類外定義。
(2)在此基礎上,再實現減法、乘法和除法
你可以使用的main()函式如下。
int main( )
{	Complex<int> c1(3,4),c2(5,-10),c3;  
	c3=c1.complex_add(c2);  
	cout<<"c1+c2="; 
	c3.display( );  
	Complex<double> c4(3.1,4.4),c5(5.34,-10.21),c6;  
	c6=c4.complex_add(c5);  
	cout<<"c4+c5="; 
	c6.display( ); 
	system("pause");
	return 0;
}
//原始碼如下
#include <iostream>
using namespace std;
template <class numtype>
class Complex   
{
public:
	Complex( )
	{
		real=0;
		imag=0;
	}     
	Complex(double r,double i)
	{
		real=r;
		imag=i;
	} 
	Complex complex_add(Complex &c2); 
	void display( );   
private:
	numtype real; 
	numtype imag; 
};
template <class numtype>
Complex<numtype> Complex<numtype>::complex_add(Complex &c2)
{
	Complex<numtype> c;
	c.real=real+c2.real;
	c.imag=imag+c2.imag;
	return c;
}  
template <class numtype> 
void Complex<numtype>::display( )   
{
	cout<<"("<<real<<","<<imag<<"i)"<<endl;
}

int main( )
{	Complex<int> c1(3,4),c2(5,-10),c3;  
	c3=c1.complex_add(c2);  
	cout<<"c1+c2="; 
	c3.display( );  
	Complex<double> c4(3.1,4.4),c5(5.34,-10.21),c6;  
	c6=c4.complex_add(c5);  
	cout<<"c4+c5="; 
	c6.display( ); 
	system("pause");
	return 0;
}



經驗積累:類模板很好用!省去了大量程式碼,但是要注意每處如何宣告!很關鍵喲!

相關推薦

C++任務3設計Complex使型別定義物件實際型別

/* (程式頭部註釋開始) * 程式的版權和版本宣告部分 * Copyright (c) 2011, 煙臺大學計算機學院學生 * All rights reserved. * 檔名稱: C++第七週任務3 * 作

C++十三任務3定義抽象基類Shape由它派生出3個派生類Circle(圓形)、Rectangle(矩形)、Triangle(三角形)

/* * 程式的版權和版本宣告部分 * Copyright (c) 2011, 煙臺大學計算機學院學生  * All rights reserved. * 檔名稱:C++第十三週【任務3】                               * 作    者:  

C++任務2定義一個名CPerson的類有以下私有成員:姓名、身份證號、性別年齡成員函式:建構函式、解構函式、輸出資訊的函式

/* (程式頭部註釋開始) * 程式的版權和版本宣告部分 * Copyright (c) 2011, 煙臺大學計算機學院學生 * All rights reserved. * 檔名稱: C++第十週【任務2】 * 作

上機任務三--實現一個複數類--通過模板類的技術手段設計Complex使型別定義物件實際型別

/* (程式頭部註釋開始) * 程式的版權和版本宣告部分 * Copyright (c) 2011, 煙臺大學計算機學院學生  * All rights reserved. * 檔名稱:實現一個複數類,通過模板類的技術手段,設計Complex,使實部和虛部的型別為定義物

C++四周任務3設計一個“正整數”類並通過一系列的成員函式對其性質進行做出判斷或列出相關聯的數值

/* (程式頭部註釋開始) * 程式的版權和版本宣告部分 * Copyright (c) 2011, 煙臺大學計算機學院學生 * All rights reserved. * 檔名稱: * 作 者:李洪懸

十三任務Animal設計抽象類每一個Animal的派生類都有一個“名字”資料成員

【任務2】下面給出了基類Animal和main()函式。 (任務2.1)根據main()函式給出的註釋提示,設計出相關的各個類。 (任務2.2)顯然,Animal設計為抽象類更合適,Animal不需要能夠例項化,是專門作基類使用的。改造程式,使Animal設計為抽象類,這時

專案3-順序串演算法

/*   *Copyright  (c)2017,煙臺大學計算機與控制工程學院       *All rights reservrd.       *作者:趙楷文  *完成時間:2017年1

專案3

/*   *Copyright  (c)2017,煙臺大學計算機與控制工程學院       *All rights reservrd.       *作者:趙楷文  *完成時間:2017年11月09日       *版本號:v1.0       *問題描述: 

上機任務(時間類)

標頭檔案 #pragma once class Time { public: Time(int=0,int=0,int=0); void show_time( ); //根據is_24和from0,輸出適合形式的時間:23:5/8:23:5 pm/08:23:

C#--12周實驗--任務2(設計一個窗體)--開啟對話方塊

/* (程式頭部註釋開始) * 程式的版權和版本宣告部分 * Copyright (c) 2011, 煙臺大學計算機學院學生 * All rights reserved. * 檔名稱:訊息對話方塊 * 作 者: 雷恆鑫 * 完成日期: 2

任務1設計三角形類通過增加建構函式使物件定義能夠進行初始化

#include<iostream> #include <cmath> using namespace std; class Triangle {public: Tri

MATLAB 畫出一個復指數序列的幅度、相位、的MATLAB指令碼

該復指數序列為: 直接給出MATLAB指令碼: clc clear close all n = [-10:10]; alpha = -0.1 + 0.3j; x = exp(alpha*n);

C語言多項式加法(mooc測試題)

  這個小題目吧我折磨的夠嗆,,主要在於特殊情況考慮不周,測試用例老是通不過。。 小結: 做法:用一個數組來儲存多項式,用下標表示冪次數,陣列元素值表示對應係數 輸出特殊格式考慮:係數和冪次數為0,1,-1的情況,負係數的對加號輸出的影響   題目內容:

(SVM)-機器學習-Coursera Machine Learning-吳恩達

前言:說實話SVM,看了視訊我確實還是不太理解,所以這裡就之記一些重要的概念吧。 看到一個好的文章:[機器學習] Coursera筆記 - Support Vector Machines 支援向量機又叫做 大間距分類器。複雜SVM,處理非線性分類。 代價函式: 核函式——&g

ARTS

每週完成一個ARTS: 每週至少做一個LeetCode的演算法題,閱讀和點評至少一篇英文技術文章,學習至少一個技術技巧,分享一篇有觀點和思考的技術文章(也就是algorithm ,preview ,tip,share 簡稱ARTS)需要堅持至少一年。 algorithm:

**資料結構實踐專案三負數把整數趕出佇列

【專案 - 負數把正數趕出佇列】 設從鍵盤輸入一整數序列a1,a2,…an,試程式設計實現:當ai>0時,ai進隊,當ai<0時,將隊首元素出隊,當ai=0時,表示輸入結束。要求將佇列處

Android-3Android中的任務棧(Task)

集合 情況下 清除 bsp 生命周期方法 任務棧 保存 sin 也會 一、Android任務棧 概述:Android中的任務棧其實就是Activity的集合,在Android中退出程序的時候必須把任務棧中的所有Activity清除出棧,此時才能安全的完全的退出程序, 任務棧

Scrapy爬蟲框架ITEM PIPELINE用法

不能 doc from 參考 數據去重 17. con pic set ITEM PIPELINE用法詳解: ITEM PIPELINE作用: 清理HTML數據 驗證爬取的數據(檢查item包含某些字段) 去重(並丟棄)【預防數據去重,真正去重是在url,即請求階段

學習C語言的總結(

1.在宣告字元常量的時候,要記住字元應該用單引號來括住 2.同時,字元常量應該是一種常量,在宣告的時候要注意常量應該賦給變數,別忘記把變數給寫上,直接宣告字元常量了 3.無論是轉義序列還是普通的字元,在雙引號裡面都不用使用單引號 4.編址 儲存器是由一個個儲存單元(1)構成的,為

ERC721實踐迷戀貓從玩耍到開發

**CryptoKitties(中文名:迷戀貓)**是一款在以太坊區塊鏈上的虛擬養貓遊戲,一經推出就以病毒式的快速擴散,橫掃整個以太坊市場。而這款可愛的遊戲於2018年 2 月 16 日(農曆大年初一)登陸 iOS國區,中文名稱的 “迷戀貓”,皆因 “迷戀”