Code for the Homework1
作业要求: http://www.cnblogs.com/bingc/p/4919692.html
代码(未使用Eigen):
#include <iostream> #include <Eigen/Dense> using namespace Eigen; using Eigen::MatrixXd; using namespace std; class POINT { public: string name; double x, y; }; class LINE { public: string name; POINT p_start,p_end; }; class TRIANGLE { public: string name; POINT p1,p2, p3; }; void rotate(POINT *pt, double angle); int main() { string name,cmd,name1; int num; , l = , t = ; ; POINT point[maxnum]; LINE line[maxnum]; TRIANGLE triangle[maxnum]; int flag; char a, b, c; double x, y, angle; ) { cout << "存点、线、三角形,请输入0,操作点、线、三角形请输入1" << endl; cin >> flag; switch (flag) { :{ cout << "请输入图形名称 点数 坐标" << endl; cin >> name; cin >> num; switch (num) { : { if (p >= maxnum) { cout << "您的点的个数已达上限,不能再存!" << endl; break; } point[p].name = name; cin >> a >> point[p].x >> b >> point[p].y >> c; p++; break; } : { if (l >= maxnum) { cout << "您的线的个数已达上限,不能再存!" << endl; break; } line[l].name = name; cin >> a >> line[l].p_start.x >> b >> line[l].p_start.y >> c >> a >> line[l].p_end.x >> b >> line[l].p_end.y >> c; l++; break; } : { if (t >= maxnum) { cout << "您的三角形的个数已达上限,不能再存!" << endl; break; } triangle[t].name = name; cin >> a >> triangle[t].p1.x >> b >> triangle[t].p1.y >> c >> a >> triangle[t].p2.x >> b >> triangle[t].p2.y >> c >> a >> triangle[t].p3.x >> b >> triangle[t].p3.y >> c; t++; break; } default: {cout << "点数输入错误" << endl; break; } } break; } :{ cout << "请输入操作指令" << endl; cin >> cmd; cin>> name1; if (cmd == "move") { cin >> a >> x >> b >> y >> c; ; i < p; i++) { if (name1 == point[i].name) { point[i].x += x; point[i].y += y; cout << "平移后的点为" << "(" << point[i].x << "," << point[i].y << ")" << endl; } } ; i < l; i++) { if (name1 == line[i].name) { line[i].p_start.x += x; line[i].p_start.y += y; line[i].p_end.x += x; line[i].p_end.y += y; cout << "平移后的线段端点为" << "(" << line[i].p_start.x << "," << line[i].p_start.y << ")" << "、(" << line[i].p_end.x << "," << line[i].p_end.y << ")" << endl; } } ; i < t; i++) { if (name1 == triangle[i].name) { triangle[i].p1.x += x; triangle[i].p1.y += y; triangle[i].p2.x += x; triangle[i].p2.y += y; triangle[i].p3.x += x; triangle[i].p3.y += y; cout << "平移后的三角形顶点为为" << "(" << triangle[i].p1.x << "," << triangle[i].p1.y << ")" << "、(" << triangle[i].p2.x << "," << triangle[i].p2.y << ")" << "、(" << triangle[i].p3.x << "," << triangle[i].p3.y << ")" << endl; } } } else if (cmd == "rotate") { cin >> angle; ; i < p; i++) { if (name1 == point[i].name) { rotate(&point[i], angle); cout << "旋转后的点为" << "(" << point[i].x << "," << point[i].y << ")" << endl; } } ; i < l; i++) { if (name1 == line[i].name) { rotate(&line[i].p_start, angle); rotate(&line[i].p_end, angle); cout << "旋转后的直线端点为" << "(" << line[i].p_start.x << "," << line[i].p_start.y << ")" << "、(" << line[i].p_end.x << "," << line[i].p_end.y << ")" << endl; } } ; i < t; i++) { if (name1 == triangle[i].name) { rotate(&triangle[i].p1, angle); rotate(&triangle[i].p2, angle); rotate(&triangle[i].p3, angle); cout << "旋转后的三角形顶点为为" << "(" << triangle[i].p1.x << "," << triangle[i].p1.y << ")" << "、(" << triangle[i].p2.x << "," << triangle[i].p2.y << ")" << "、(" << triangle[i].p3.x << "," << triangle[i].p3.y << ")" << endl; } } } else cout << "comand is error!" << endl; break; } default:{cout << "输入错误!" << endl; break; } } } ; } void rotate(POINT *pt, double angle) //逆时针为正 { double x, y,ang; x = pt->x; y = pt->y; ang = angle*; pt->x = x*cos(ang) - y*sin(ang); pt->y = x*sin(ang) + y*cos(ang); }
运行结果:
Code for the Homework1的更多相关文章
- Code for the Homework1 改进
#include <iostream> #include <vector> #include "shape.h" //using namespace std ...
- python code 1_username registration & login
This tiny program consists of 2 parts - registration and login. In the part of registration, the key ...
- Visual Studio Code 代理设置
Visual Studio Code (简称 VS Code)是由微软研发的一款免费.开源的跨平台文本(代码)编辑器,在十多年的编程经历中,我使用过非常多的的代码编辑器(包括 IDE),例如 Fron ...
- 我们是怎么做Code Review的
前几天看了<Code Review 程序员的寄望与哀伤>,想到我们团队开展Code Review也有2年了,结果还算比较满意,有些经验应该可以和大家一起分享.探讨.我们为什么要推行Code ...
- Code Review 程序员的寄望与哀伤
一个程序员,他写完了代码,在测试环境通过了测试,然后他把它发布到了线上生产环境,但很快就发现在生产环境上出了问题,有潜在的 bug. 事后分析,是生产环境的一些微妙差异,使得这种 bug 场景在线下测 ...
- 从Script到Code Blocks、Code Behind到MVC、MVP、MVVM
刚过去的周五(3-14)例行地主持了技术会议,主题正好是<UI层的设计模式——从Script.Code Behind到MVC.MVP.MVVM>,是前一天晚上才定的,中午花了半小时准备了下 ...
- 在Visual Studio Code中配置GO开发环境
一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github ...
- 代码的坏味道(14)——重复代码(Duplicate Code)
坏味道--重复代码(Duplicate Code) 重复代码堪称为代码坏味道之首.消除重复代码总是有利无害的. 特征 两个代码片段看上去几乎一样. 问题原因 重复代码通常发生在多个程序员同时在同一程序 ...
- http status code
属于转载 http status code:200:成功,服务器已成功处理了请求,通常这表示服务器提供了请求的网页 404:未找到,服务器未找到 201-206都表示服务器成功处理了请求的状态代码,说 ...
随机推荐
- Linux串口编程(转载)
在嵌入式Linux中,串口是一个字设备,访问具体的串行端口的编程与读/写文件 的操作类似,只需打开相应的设备文件即可操作.串口编程特殊在于串 口通信时相关参数与属性的设置.嵌入式Linux的串口编程时 ...
- hdu 4604 动态规划
思路:这题的感觉就是最长上升子序列的升级版.首先对于最长上升子序列要用n*log(n)的算法才行,这个复杂度的算法可以从hdu1025得到启发.然后就是什么情况下最优问题了.对于序列中某个数i,找出其 ...
- Android经验之谈1
豌豆荚等可能会导致手机网络出现问题,电话打不进来,所以需要及时卸载豌豆荚. 系统apk,不能通过在manifest.xml里面添加origin-package或者useid等来改变. 而是需要用and ...
- 和阿文一起学H5--如何把H5压缩到最小
三种压缩图片的方法: 1.PS 但是PS每次只能压缩一张,下面介绍第二个神器 2.TinyPng压缩 https://tinypng.com/ 3.IloveIMG压缩 http://www.ilov ...
- Visual Studio 2012下Box2D开发环境设置
Cocos2d-x 3.x默认情况下采用的物理引擎是Chipmunk,如果我们要使用Box2D引擎,需要进行一些设置和调整,而且不同的开发平台下这些设置也有所不同.由于本书在此之前介绍的都是基于微软的 ...
- [zz] pgpool-II load balancing from FAQ
It seems my pgpool-II does not do load balancing. Why? First of all, pgpool-II' load balancing is &q ...
- Linux multiple open a device
Linux multiple open a device a device = /dev/wiegand Linux在多次打开同一个设备(/dev/wiegand)的时候,打开结果都是成功,但是在用w ...
- (五)Qt5之中文显示
Qt中的中文显示,经常会出现乱码,但在UI设计界面上添加的中文是不会出现乱码的,如果你刚使用qt,那么你肯定会碰到这个问题. 网上搜索一下,找到的都是这种: #include < QTextCo ...
- 专家解说IT行业存在哪些安全风险
本人为原创作品:e良师益友 ,转载是并且注明 网络带动了IT行业的发展,同时也带来了安全风险,国外的专家分析2014年IT行业存在的11个安全隐患,随着越来越多技术的不断开发,为方便人们记忆账号,产生 ...
- 【转载】GDB反向调试(Reverse Debugging)
记得刚开始学C语言的时候,用vc的F10来调试程序,经常就是一阵狂按,然后一不小心按过了.结果又得从头再来,那时候我就问我的老师,能不能倒退回去几步.我的老师很遗憾地和我说,不行,开弓没有回头箭.这句 ...