一、Graphios
(1)用for循環內部定義i,j,k三個變量,i表示當前行,j控制空格輸出,k控制符號輸出。在第i行,輸出size-i個空格,而後輸出i*2-1個符號,最後換行後i++進行下一行的輸出。ide
(2)函數
//graph.h #ifndef GRAPH_H #define GRAPH_H // 類Graph的聲明 class Graph { public: Graph(char ch, int n); // 帶有參數的構造函數 void draw(); // 繪製圖形 private: char symbol; int size; }; #endif
//graph.cpp // 類graph的實現 #include "graph.h" #include <iostream> using namespace std; // 帶參數的構造函數的實現 Graph::Graph(char ch, int n): symbol(ch), size(n) { } // 成員函數draw()的實現 // 功能:繪製size行,顯示字符爲symbol的指定圖形樣式 // size和symbol是類Graph的私有成員數據 void Graph::draw() { // 補足代碼,實現「實驗4.pdf」文檔中展現的圖形樣式 for(int i = 1; i <= size; i++) { for(int j = 1; j <= size - i; j++) { cout << " "; } for(int k = 1; k <= i*2-1; k++) { cout << symbol; } cout << endl; } }
//main.cpp #include <iostream> #include "graph.h" using namespace std; int main() { Graph graph1('*',5), graph2('$',7) ; // 定義Graph類對象graph1, graph2 graph1.draw(); // 經過對象graph1調用公共接口draw()在屏幕上繪製圖形 graph2.draw(); // 經過對象graph2調用公共接口draw()在屏幕上繪製圖形 return 0; }
(3)用dev C++運行結果截圖:spa
二、Factioncode
(1)對象
Fractionblog |
-top : int接口 -bottom : intip |
+Faction()文檔 +Faction( t0 : int ) +Faction(int t0,int b0) +plus( &f2 : Faction ) : void +minus( &f2 : Faction ) : void +multiply( &f2 : Faction ) : void +divide( &f2 : Faction ) : void +compare( &f2 : Faction ) : void +show() : void |
(2)
//Faction.h #ifndef FACTION_H #define FACTION_H class Faction { public: Faction(); //構造函數 Faction(int t0); //構造函數的重載 Faction(int t0,int b0); //構造函數的重載 void plus(Faction &f2); //加法函數 void minus(Faction &f2); //減法函數 void multiply(Faction &f2); //乘法函數 void divide(Faction &f2); //除法函數 void compare(Faction &f2); //比較大小函數 void show(); //輸出函數 private: int top; //分子 int bottom; //分母 }; #endif
//Faction.cpp #include "Faction.h" #include <iostream> using namespace std; //構造函數 Faction::Faction():top(0), bottom(1) { } //構造函數的重載 Faction::Faction(int t0):top(t0), bottom(1) { } //構造函數的重載 Faction::Faction(int t0,int b0):top(t0), bottom(b0){ } //加法函數 void Faction::plus(Faction &f1){ Faction f2; f2.top = top * f1.bottom + f1.top*bottom; f2.bottom = bottom * f1.bottom; f2.show(); } //減法函數 void Faction::minus(Faction &f1){ Faction f2; f2.top = top * f1.bottom - f1.top*bottom; f2.bottom = bottom * f1.bottom; f2.show(); } //乘法函數 void Faction::multiply(Faction &f1){ Faction f2; f2.top =top*f1.top; f2.bottom =bottom*f1.bottom; f2.show(); } //除法函數 void Faction::divide(Faction &f1) { Faction f2; f2.top =top*f1.bottom; f2.bottom = bottom * f1.top; f2.show(); } //輸出函數 void Faction::show(){ cout << top << "/" << bottom <<endl; } //比較大小函數 void Faction::compare(Faction &f1) { Faction f2; f2.top = top * f1.bottom - f1.top*bottom; f2.bottom = bottom * f1.bottom; if(f2.bottom*f2.top > 0){ cout << top << "/" << bottom << ">" << f1.top << "/" << f1.bottom <<endl; } else { cout << top << "/" << bottom << "<=" << f1.top << "/" << f1.bottom <<endl; } }
//main.cpp #include <iostream> #include "Faction.h" using namespace std; int main() { Faction a; Faction b(3,4); Faction c(5); a.show(); b.show(); c.show(); b.plus(c); b.minus(c); b.multiply(c); b.divide(c); b.compare(c); return 0; }
(3)在Dev C++環境下運行截圖:
思考:Graph問題中,一開始還思考怎麼能用一個參數實現符號兩邊有相同數量空格,結果突然發現輸出符號以後直接換行就能夠了……感受個人思惟還不是代碼思惟……
Faction問題中,中途發生了不少問題……對於類的概念可能還不深入。