创建者:沉默信使《C++语言程序设计Ⅱ》上机实践报告
项目名称
类和对象的应用
上机时间
2019.4.18
任课老师
xxx
学院
计算机科学与技术学院
专业班级
姓名
学号
上机内容
问题描述
设计一个矩形类Rect,类的数据成员有左上角的坐标值x,y,宽w,高h,要求有下述成员函数。
(1)move():从一个位置移动到另一个位置。
(2)size():改变矩形大小。
(3)where():返回矩形右下角的坐标值。
(4)area():计算矩形的面积。
eq \o\ac(○,1)系统函数设计及函数流程
eq \o\ac(○,2)详细代码和说明
#include <iostream>
#include <string>
#include<iomanip>
using namespace std;
class Rect
{
private:
public:
int ddzb[4][2];
int weight, high;
void setRect();
void move();
void size();
void where();
void area();
}Rect1;
int main()
{
void menu();
int x;
Rect1.setRect();
do
{
menu();
cin >> x;
switch (x)
{
case 1:Rect1.move(); break;
case 2:Rect1.size(); break;
case 3:Rect1.where(); break;
case 4:Rect1.area(); break;
}
cout << endl;
continue;
} while (x != 0);
}
void menu()
{
cout << "输入1进行移动 输入2改变大小" << endl;
cout << "输入3输出右下角坐标值 输入4计算面积" << endl;
cout << "——输入0返回主菜单——" << endl;
}
void Rect::setRect()
{
cout << "请定义矩形的宽,高及左上角顶点的坐标值" << endl;
cin >> Rect1.weight >> Rect1.high>>Rect1.ddzb[0][0]>>Rect1.ddzb[0][1];
Rect1.ddzb[1][0] = Rect1.ddzb[0][0] + weight;
Rect1.ddzb[1][1] = Rect1.ddzb[0][1];
Rect1.ddzb[2][0] = Rect1.ddzb[0][0] + weight;
Rect1.ddzb[2][1] = Rect1.ddzb[0][1] - high;
Rect1.ddzb[3][0] = Rect1.ddzb[0][0];
Rect1.ddzb[3][1] = Rect1.ddzb[0][1] - high;
}
void Rect::move()
{
cout << "左上角顶点原坐标为" << Rect1.ddzb[0][0] << "," << Rect1.ddzb[0][1] << endl;;
cout << "更改坐标为 ";
cin >> Rect1.ddzb[0][0] >> Rect1.ddzb[0][1];
}
void Rect::size()
{
cout << "原矩形宽和高为" << Rect1.weight << "," << Rect1.high << endl;
cout << "更改宽和高为 ";
cin >> Rect1.weight>> Rect1.high;
}
void Rect::where()
{
Rect1.ddzb[1][0] = Rect1.ddzb[0][0] + weight;
Rect1.ddzb[1][1] = Rect1.ddzb[0][1];
Rect1.ddzb[2][0] = Rect1.ddzb[0][0] + weight;
Rect1.ddzb[2][1] = Rect1.ddzb[0][1] - high;
Rect1.ddzb[3][0] = Rect1.ddzb[0][0];
Rect1.ddzb[3][1] = Rect1.ddzb[0][1] - high;
cout << "右下角坐标值为 " << Rect1.ddzb[2][0] << "," << Rect1.ddzb[2][1];
}
void Rect::area()
{
cout << "矩形的面积为 " << Rect1.weight*Rect1.high;
}
eq \o\ac(○,3)测试数据
eq \o\ac(○,4)运行结果
问题描述
求解一元二次方程ax2+bx+c=0。包括求解方程根的成员函数和输出结果的成员函数。要求:
(1)设计一个名为equation的工程。
(2)为工程设计一个头文件equation.h,声明class FindRoot类并包含需要的头文件。
(3)为工程设计一个equation.cpp文件,在这个文件中实现FindRoot类。
(4)在equation.cpp文件中包含头equation.h。
(5)在Find.cpp文件中设计主函数对方程求解
eq \o\ac(○,1)系统函数设计及函数流程
eq \o\ac(○,2)详细代码和说明
源
#include<equation.h>
int main()
{
FindRoot e1;
e1.input();
e1.Find();
return 0;
}
void FindRoot::input()
{
cout << "将方程转化为ax^2+bx+c+0 依次输入所需参数a,b,c" << endl;
cin >> a >> b >> c;
}
void FindRoot::Find()
{
if ((b*b - 4 * a*c) >= 0)
{
if ((b*b - 4 * a*c) > 0)
{
x1 = (-b + sqrt(b*b - 4 * a*c) / (2 * a*c));
x2 = (-b - sqrt(b*b - 4 * a*c) / (2 * a*c));
FindRoot::output();
}
else
x1 = x2 = (-b / (2 * a*c));
FindRoot::output();
}
else
cout << "无解" << endl;
}
void FindRoot::output()
{
cout << "该方程的解为" << endl;
cout << "x1=" << x1 << " x2=" << x2;
}
equation.h
#pragma once
#include<iostream>
#include<math.h>
using namespace std;
class FindRoot
{
private:
float a, b, c, x1, x2;
public:
void Find();
void output();
void input();
};
eq \o\ac(○,3)测试数据
eq \o\ac(○,4)运行结果
上机实践总结
我自己感觉这一部分把程序编好的关键还是区分好域运算符和成员运算符的使用范围,然后其实从上学期到现在,其实始终都是在为大二大三打基础,但学到现在其实已经需要对前面的知识学以致用,数据输出时格式的控制,形参实参,指针,面向对象,到正在学习的类,创建工程,问题已经越来越综合化,程序在编辑时要考虑很多问题,不仅仅是自己能运行成功,跟重要的是用户能理解,在过程中输入数据才不会出错,输出的结果才能看懂。