《C++第六周实验报告5-1》---将任务4的解决用一个项目多个文件的方式实现
2012-03-26 22:02
615 查看
//main.cpp /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称: CTriangle.cpp * 作 者: 计114-3 王兴锋 * 完成日期: 2012年 3 月 26 日 * 版 本 号: V 1.0 * 对任务及求解方法的描述部分 * 输入描述: 输入三角形的三个顶点 * 问题描述: (1)这个问题需要用到两个类,顶点类参照任务3中的CPoint类; (2)三角形类参考下面CTriangle类的声明; (3)充分利用CPoint类中已有的代码实现; (4)关于三条边的处理,可以增加三个私有属性,在初始化时求出来备用,也可以在需要时计算得到。 * 程序输出: 求出其面积、周长,并判断其是否为直角三角形和等腰三角形。 * 程序头部的注释结束 */ #include <iostream> #include <cmath> #include "class.h" using namespace std; int main() { CPoint a(0, 0), b(1, 1), c(0, 2);//定义三个点 CTriangle ct(a, b, c); a.output(), b.output(), c.output(); cout << "构成的三角形:" << endl; cout << "周长为:" << ct.perimeter() << endl; cout << "面积为:" << ct.area() << endl; cout << (ct.isRightTriangle() ? "是" : "不是") << "直角三角形。" << endl; cout << (ct.isIsoscelesTriangle() ? "是" : "不是") << "等腰三角形。" << endl; cout << endl; CPoint a2(0, 0), b2(0, 3), c2(4, 0);//定义三个点 CTriangle ct2(a2, b2, c2); a2.output(), b2.output(), c2.output(); cout << "构成的三角形:" << endl; cout << "周长为:" << ct2.perimeter() << endl; cout << "面积为:" << ct2.area() << endl; cout << (ct2.isRightTriangle() ? "是" : "不是") << "直角三角形。" << endl; cout << (ct2.isIsoscelesTriangle() ? "是" : "不是") << "等腰三角形。" << endl; system("PAUSE"); return 0; } //class.h //点类 class CPoint { private: float x; // 横坐标 float y; // 纵坐标 public: CPoint(float xx = 0, float yy = 0); float Distance(CPoint p) const; // 两点之间的距离(一点是当前点,另一点为参数p) void input(); //以x,y 形式输入坐标点 void output(); //以(x,y) 形式输出坐标点 }; //三角形类 class CTriangle { public: CTriangle(CPoint &X, CPoint &Y, CPoint &Z):A(X),B(Y),C(Z){} //给出三点的构造函数 void setTriangle(CPoint &X, CPoint &Y, CPoint &Z);// float perimeter(void);//计算三角形的周长 float area(void);//计算并返回三角形的面积 bool isRightTriangle(); //是否为直角三角形 bool isIsoscelesTriangle(); //是否为等腰三角形 private: CPoint A, B, C; //三顶点 }; //CPoint.cpp #include <iostream> #include <cmath> #include "class.h" using namespace std; CPoint::CPoint(float xx, float yy) { x = xx, y = yy; } float CPoint::Distance(CPoint p) const { return sqrt((p.x-x)*(p.x-x) + (p.y-y)*(p.y-y)); } void CPoint::input() { char ch; do{ cout << "请输入点的坐标(例:x,y):" << endl; cin >> x >> ch >> y; }while(ch != ','); } void CPoint::output() { cout << "(" << x << "," << y << ")"; } //CTriangle.cpp #include <iostream> #include <cmath> #include "class.h" using namespace std; void CTriangle::setTriangle(CPoint &X, CPoint &Y, CPoint &Z) { A = X, B = Y, C = Z; } float CTriangle::perimeter(void) { return (A.Distance(B) + B.Distance(C) + C.Distance(A)); } float CTriangle::area(void) { float AB = A.Distance(B), BC = B.Distance(C), AC = A.Distance(C); float p = (AB + BC + AC)/2; return (sqrt(p * (p-AB) * (p-BC) * (p-AC))); } bool CTriangle::isRightTriangle() { float AB = A.Distance(B), BC = B.Distance(C), AC = A.Distance(C); return (AB*AB + BC*BC == AC*AC || AB*AB + AC*AC== BC*BC || AC*AC + BC*BC == AB*AB); } bool CTriangle::isIsoscelesTriangle() { float AB = A.Distance(B), BC = B.Distance(C), AC = A.Distance(C); return (AB == AC || AB == BC || AC == BC); } /* 利用对文件对程序能够进行更好的管理。 */
相关文章推荐
- C++第六周任务5:解决用一个项目多个文件的方式实现,其中两个类的声明放在一个.h文件中,每个类的成员函数分别放一个文件,main()函数用一个文件。体会这样安排的优点。
- 将任务4的解决用一个项目多个文件的方式实现,其中两个类的声明放在一个.h文件中,每个类的成员函数分别放一个文件,main()函数用一个文件。
- RW 5 将任务四的的解决用一个项目多个文件夹的方式实现
- C++程序设计实验报告(二十)---实现冒泡排序算法,并将之定义为一个函数,其中参数是指向数组的指针变量
- 《C++第九周实验报告1-1》--------接第8周任务1,定义Complex类中的<<和>>运算符的重载,实现输入和输出
- 第六周实验报告 任务4 设计一个三角形类 输入三角形的三个顶点 求面积周长
- c++第4次实验项目七:穷举法解决问题——任务一:百钱百鸡
- 第九周实验报告任务3 定义分数类中<<和>>运算符重载,实现分数的输入输出,改造原程序中对运算结果显示方式,使程序读起来更自然。
- 《C++第九周实验报告2-1》---接第8周任务2,定义Time类中的<<和>>运算符重载,实现时间的输入输出
- 第六周上机任务项目5-一个项目多个文件
- 第六周任务五(由点表示的三角形类用多个文件的方式实现)
- C++程序设计实验报告(十七)----实现冒泡排序算法,并将之定义为一个函数
- 实验 4.2.4 实现文件复制 1. 用文件流的 I/O 函数实现一个文件拷贝程序,将一个文件拷贝到另一个文件。 2. 分别用字节读,行读,任意大小读的方式。
- C++开发中一个解决方案里,两个项目的相互引用,相互依赖的实现方法(解决方法)
- 《C++第九周实验报告3-1》----接第8周任务3,定义分数类中<<和>>运算符重载,实现分数的输入输出
- C++程序设计实验报告(四十三)---第六周任务一
- C++程序设计实验报告(四十七)---第六周任务五
- 第九周实验报告任务 1 定义Time类中的<<和>>运算符重载,实现时间的输入输出,改造原程序中对运算结果显示方式,使程序读起来更自然。
- C++程序设计实验报告(四十四)---第六周任务二
- C/C++语言之通过定义指针函数方式来实现在一个cpp文件里面获取另外一个cpp文件函数的返回值