C++primer plus第六版課後程式設計練習答案11.1
標頭檔案 #ifndef VECTOR_H_//避免標頭檔案的重定義,如果XX沒有被定義 #define VECTOR_H_//就定義XX,刪除可使#ifndef與#endif之間的程式碼不執行 #include<iostream> namespace VECTOR//用來區分名字相同的變數和函式 { class Vector { public: enum Mode{RECT,POL};//Mode列舉名,RECT=0,POL=1 private: double x; double y; double mag; double ang; Mode mode; void set_mag(); void set_ang(); void set_x(); void set_y(); public: Vector(); Vector(double n1,double n2,Mode form=RECT); void reset(double n1,double n2,Mode form=RECT); ~Vector(); double xval() const {return x;} double yval() const {return y;} double magval() const {return mag;} double angval() const {return ang;} void polar_mode(); void rect_mode(); Vector operator+(const Vector &b)const; Vector operator-(const Vector &b)const; Vector operator-()const; Vector operator*(double n)const; friend Vector operator*(double n,const Vector &a); friend std::ostream &operator<<(std::ostream &os,const Vector & v); }; } #endif
#include<cmath> #include "vector.h" using namespace std; namespace VECTOR { const double Rad_to_deg=45.0/atan(1.0);//atan(1)=45度,求1弧度等於多少度 void Vector::set_mag() { mag=sqrt(x*x+y*y); } void Vector::set_ang() { if(0==x&&y==0) ang=0; else ang=atan2(y,x); } void Vector::set_x() { x=mag*sin(ang); } void Vector::set_y() { y=mag*cos(ang); } Vector::Vector() { x=y=mag=ang=0; } Vector::Vector(double n1,double n2,Mode form) { mode=form; if(mode==RECT) { x=n1; y=n2; set_mag(); set_ang(); } else if(mode==POL) { mag=n1; ang=n2/Rad_to_deg; set_x(); set_y(); } else { cout<<"Incorrect 3rd arguement to Vector() --"; cout<<"vector set to 0\n"; x=y=mag=ang=0; mode=RECT; } } void Vector::reset(double n1,double n2,Mode form) { mode=form; if(mode==RECT) { x=n1; y=n2; set_mag(); set_ang(); } else if(mode==POL) { mag=n1; ang=n2/Rad_to_deg; set_x(); set_y(); } else { cout<<"Incorrect 3rd arguement to Vector() --"; cout<<"vector set to 0\n"; x=y=mag=ang=0; mode=RECT; } } Vector::~Vector(){} void Vector::polar_mode() { mode=POL; } void Vector::rect_mode() { mode=RECT; } Vector Vector::operator+(const Vector &b)const { return Vector(x+b.x,y+b.y); } Vector Vector::operator-(const Vector &b)const { return Vector(x-b.x,y-b.y); } Vector Vector::operator-()const { return Vector(-x,-y); } Vector Vector::operator*(double n)const { return Vector(n*x,n*y); } Vector operator*(double n,const Vector &a) { return a*n; } ostream &operator<<(ostream &os,const Vector &v) { if(v.mode==Vector::RECT) os<<"(x,y)=("<<v.x<<","<<v.y<<")"; else if(v.mode==Vector::POL) { os<<"(m,a)=("<<v.mag<<","<<v.ang*Rad_to_deg<<")"; } else os<<"Vector object mode is invalid"; return os; } }
#include<iostream> #include<cstdlib> #include<ctime> #include "vector.h" #include<fstream> #include<windows.h> using namespace std; void main() { using VECTOR::Vector; srand(time(0)); double direction; Vector step; Vector result(0,0); unsigned long steps=0; double target; double dstep; ofstream outfile; outfile.open("1.txt"); cout<<"Enter target distance (q to quit):"; while(cin>>target) { cout<<"Enter step length:"; if(!(cin>>dstep)) break; outfile<<"Target distance:"<<target<<" ,step size: "<<dstep<<endl; outfile<<steps<<": "<<result<<endl; while(result.magval()<target) { direction=rand()%360; step.reset(dstep,direction,Vector::POL); result=result+step; steps++; outfile<<steps<<": "<<result<<endl; } outfile<<"After "<<steps<<" steps,the subject has the following location:\n"; outfile<<result<<endl; result.polar_mode(); outfile<<" or\n"<<result<<endl; outfile<<"Average outward distance per step="<<result.magval()/steps<<endl; steps=0; result.reset(0,0); cout<<"Enter target distance (q to quit):"; } cout<<"Bye!\n"; WinExec( "notepad.exe 1.txt", SW_SHOW );//在c++程式碼中開啟檔案 cin.clear(); while(cin.get()!='\n') continue; }
相關推薦
C++primer plus第六版課後程式設計練習答案11.1
標頭檔案 #ifndef VECTOR_H_//避免標頭檔案的重定義,如果XX沒有被定義 #define VECTOR_H_//就定義XX,刪除可使#ifndef與#endif之間的程式碼不執行 #include<iostream> namespace VE
C++primer plus第六版課後程式設計練習答案11.5和11.6
這兩道題是第6題包含第5題,所以第5題我就沒寫了,下面是第6題的答案 標頭檔案 #ifndef STONEWt_H_ #define STONEWt_H_ #include<iostream> class Stonewt { private: enum{L
C++primer plus第六版課後程式設計練習答案12.5與12.6
bank是第五題的實現,bank1是第六題的實現#ifndef QUEUE_H_ #define QUEUE_H_ class Customer { private: int arrive; int processtime; public: Customer(){a
C++primer plus第六版課後程式設計練習答案13.3
#ifndef DMA_H_ #define DMA_H_ #include <iostream> class DMA { private: char *label; int rating; protected: void setlab(const ch
C++primer plus第六版課後程式設計練習答案10.7
標頭檔案 #ifndef PLORG_H_ #define PLORG_H_ const int limit=19; class plorg { private: char name[limit
C++PRIMER PLUS第六版課後程式設計答案 5.6-510
5.6#include <iostream> #include <string> void main56() { using std::cout; using std::c
C++ Primer Plus第六版編程練習---第3章 處理數據(未完待續)
foo ons enter ++ har HA CI return include 1. #include <iostream> const int CONVER_FACTOR = 12; int main(int argc, char* argv[]){ in
C++ Primer Plus第六版編程練習---第5章 循環和關系表達式
AI ++ str eas prim OS ase AS stream 1、 #include <iostream> int main() { int startNum = 0; int endNum = 0; std::cout &
C++ Primer Plus第六版編程練習---第6章 分支語句和邏輯運算符
character value ati ostream wing style ces col code 1、 1 #include <iostream> 2 #include <string> 3 #include <cctype>
C Primer Plus第6版_原始碼+練習答案
下載地址:網盤下載C Primer Plus(第6版)中文版詳細講解了C語言的基本概念和程式設計技巧。《C Primer Plus(第6版)中文版》共17章。第1、2章介紹了C語言程式設計的預備知識。第3~15章詳細講解了C語言的相關知識,包括資料型別、格式化輸入/輸出、運算子、表示式、語句、迴圈、字元輸入和
C Primer Plus 第六版 第九章課後程式設計練習答案
1. #include<stdio.h> double n_min(double x, double y); int main(void) { double num1, num2; &
C Primer Plus 第六版 第七章課後程式設計練習答案
1. #include<stdio.h> int main(void) { char ch=0; int sap=0;//空格 int b
C++ Primer Plus第六版第六章程式設計練習答案
6.1 #include<stdafx.h> #include<iostream> #include<cctype> int main() { using namespace std; char ch; cout << "enter ch
c++ primer plus 第六版程式設計練習答案第五章
該章節第二題程式沒問題,但不懂為什麼 5.1 #include<stdafx.h> #include <iostream> using namespace std; int main() { int max, min; long long sum=0; co
c++ primer plus 第六版程式設計練習答案第四章
4.1 #include<stdafx.h> #include <iostream> #include<string> using namespace std; int main() { char f_name[10], l_name[10]; int
c++ Primer Plus 第六版 程式設計練習答案第三章
3.1 #include<stdafx.h> #include <iostream> using namespace std; const int inch_per_feet = 12;//一英尺(inch)等於12英寸(feet) int main() { int
c++ primer plus 第六版程式設計練習答案第二章
2.1 #include "stdafx.h" #include <iostream> using namespace std; int main() { char name[5],address[15]; cout << "enter your name\n"
C Primer Plus第六版第六章程式設計練習
/* 編寫一個程式,建立一個包含26個元素的陣列,並在其中儲存26個小寫字母。 然後列印陣列的所有內容 */ #include <stdio.h> #define SIZE 26 int main(void) { char alphabet[26
C++ Primer Plus(第六版)程式設計練習答案 第12章 類和動態記憶體分配
本章所有程式設計練習的工程原始碼可在此處下載(點選此連結下載),供大家參考交流! 1. 對於下面的類宣告: class Cow { char name[20]; char *hobby; double wei
C primer plus 第六版 第六章 第十題 程式設計練習答案
#include<stdio.h> int main(void) { int lower = 0; // Save input value. int uper = 0; //