《实时控制软件设计》第一次编程作业

//代码:

#include <iostream>
#include <Eigen/Dense>
#include <cmath>
using Eigen::MatrixXd;
using namespace std;
float pi=3.1415926;
void mpoint(MatrixXd m)
{
	MatrixXd T(1,2),A(1,2);
	cout<<"请输入移动距离:";
	fflush(stdin);
	scanf("%*c%lf%*c%lf%*c",&T(0,0),&T(0,1));
	A=m+T;
	cout<<‘(‘<<A(0,0)<<‘,‘<<A(0,1)<<‘)‘;
}

void rpoint(MatrixXd m)
{
	MatrixXd R(2,2),A(1,2);
	double ang;
	cout<<"请输入旋转角度:";
	fflush(stdin);
	cin>>ang;
	R(0,0)=cos(ang/180*pi);R(0,1)=sin(ang/180*pi);R(1,0)=-sin(ang/180*pi);R(1,1)=cos(ang/180*pi);
	A=m*R;
	cout<<‘(‘<<A(0,0)<<‘,‘<<A(0,1)<<‘)‘;
}

void mline(MatrixXd m,MatrixXd n)
{
	MatrixXd T(1,2),A1(1,2),A2(1,2);
	cout<<"请输入移动距离:";
	fflush(stdin);
	scanf("%*c%lf%*c%lf%*c",&T(0,0),&T(0,1));
	A1=m+T;
	A2=n+T;
	cout<<‘(‘<<A1(0,0)<<‘,‘<<A1(0,1)<<‘)‘<<‘ ‘<<‘(‘<<A2(0,0)<<‘,‘<<A2(0,1)<<‘)‘;
}

void rline(MatrixXd m,MatrixXd n)
{
	MatrixXd R(2,2),A1(1,2),A2(1,2);
	double ang;
	cout<<"请输入旋转角度:";
	fflush(stdin);
	cin>>ang;
	R(0,0)=cos(ang/180*pi);R(0,1)=sin(ang/180*pi);R(1,0)=-sin(ang/180*pi);R(1,1)=cos(ang/180*pi);
	A1=m*R;
	A2=n*R;
	cout<<‘(‘<<A1(0,0)<<‘,‘<<A1(0,1)<<‘)‘<<‘ ‘<<‘(‘<<A2(0,0)<<‘,‘<<A2(0,1)<<‘)‘;
}

void mtriangle(MatrixXd m,MatrixXd n,MatrixXd k)
{
	MatrixXd T(1,2),A1(1,2),A2(1,2),A3(1,2);
	cout<<"请输入移动距离:";
	fflush(stdin);
	scanf("%*c%lf%*c%lf%*c",&T(0,0),&T(0,1));
	A1=m+T;
	A2=n+T;
	A3=k+T;
	cout<<‘(‘<<A1(0,0)<<‘,‘<<A1(0,1)<<‘)‘<<‘ ‘<<‘(‘<<A2(0,0)<<‘,‘<<A2(0,1)<<‘)‘<<‘ ‘<<‘(‘<<A3(0,0)<<‘,‘<<A3(0,1)<<‘)‘;
}

void rtriangle(MatrixXd m,MatrixXd n,MatrixXd k)
{
	MatrixXd R(2,2),A1(1,2),A2(1,2),A3(1,2);
	double ang;
	cout<<"请输入旋转角度:";
	fflush(stdin);
	cin>>ang;
	R(0,0)=cos(ang/180*pi);R(0,1)=sin(ang/180*pi);R(1,0)=-sin(ang/180*pi);R(1,1)=cos(ang/180*pi);
	A1=m*R;
	A2=n*R;
	A3=k*R;
	cout<<‘(‘<<A1(0,0)<<‘,‘<<A1(0,1)<<‘)‘<<‘ ‘<<‘(‘<<A2(0,0)<<‘,‘<<A2(0,1)<<‘)‘<<‘ ‘<<‘(‘<<A3(0,0)<<‘,‘<<A3(0,1)<<‘)‘;
}

void point()
{
	MatrixXd m(1,2);
	char cal[21];
	int a;
	cout<<"请输入点坐标:";
	fflush(stdin);
	scanf("%*c%lf%*c%lf%*c",&m(0,0),&m(0,1));
	a:
	cout<<"请输入运算指令:";
	cin>>cal;
	if(cal[0]==‘m‘&&cal[1]==‘o‘&&cal[2]==‘v‘&&cal[3]==‘e‘&&cal[4]==0)
	{
		mpoint(m);
	}
	else if(cal[0]==‘r‘&&cal[1]==‘o‘&&cal[2]==‘t‘&&cal[3]==‘a‘&&cal[4]==‘t‘&&cal[5]==‘e‘&&cal[6]==0)
	{
		rpoint(m);
	}
	else
	{
		cout<<"指令错误!"<<endl;
		goto a;
	}

}

void line()
{
	MatrixXd m(1,2),n(1,2);
	char cal[21];
	int a;
	cout<<"请输入直线端点坐标:";
	fflush(stdin);
    scanf("%*c%lf%*c%lf%*c %*c%lf%*c%lf%*c",&m(0,0),&m(0,1),&n(0,0),&n(0,1));
    a:
    cout<<"请输入运算指令:";
    cin>>cal;
	if(cal[0]==‘m‘&&cal[1]==‘o‘&&cal[2]==‘v‘&&cal[3]==‘e‘&&cal[4]==0)
	{
		mline(m,n);
	}
	else if(cal[0]==‘r‘&&cal[1]==‘o‘&&cal[2]==‘t‘&&cal[3]==‘a‘&&cal[4]==‘t‘&&cal[5]==‘e‘&&cal[6]==0)
	{
		rline(m,n);
	}
	else
	{
		cout<<"指令错误!"<<endl;
		goto a;
	}
}

void triangle()
{
	MatrixXd m(1,2),n(1,2),k(1,2);
	char cal[21];
	int a;
	cout<<"请输入三角形端点坐标:";
	fflush(stdin);
	scanf("%*c%lf%*c%lf%*c %*c%lf%*c%lf%*c %*c%lf%*c%lf%*c",&m(0,0),&m(0,1),&n(0,0),&n(0,1),&k(0,0),&k(0,1));
	a:
	cout<<"请输入运算指令:";
	cin>>cal;
	if(cal[0]==‘m‘&&cal[1]==‘o‘&&cal[2]==‘v‘&&cal[3]==‘e‘&&cal[4]==0)
	{
		mtriangle(m,n,k);
	}
	else if(cal[0]==‘r‘&&cal[1]==‘o‘&&cal[2]==‘t‘&&cal[3]==‘a‘&&cal[4]==‘t‘&&cal[5]==‘e‘&&cal[6]==0)
	{
		rtriangle(m,n,k);
	}
	else
	{
		cout<<"指令错误!"<<endl;
		goto a;
	}
} 

int main()
{
	char name[11];
	int i;
	cout<<"请输入一个图形名称及其端点数:";
	cin.getline(name,10);
	for(i=0;i<11;i++)
	{
		if(name[i]==‘ ‘)break;
	}
	if(name[i+1]==‘1‘)
	{
		point();
	}
	else if(name[i+1]==‘2‘)
	{
		line();
	}
	else if(name[i+1]==‘3‘)
	{
		triangle();
	}
	return 0;
} 

//结果:

时间: 2024-08-24 02:31:33

《实时控制软件设计》第一次编程作业的相关文章

实时控制软件设计第一次编程作业

1 include <iostream> 2 #include<Eigen/Dense> 3 #include<stdlib.h> 4 #include<cmath> 5 using Eigen::MatrixXd; 6 using namespace std; 7 MatrixXd input(char f[]){ 8 MatrixXd p(1,2); 9 char a[256]; 10 char b[256]; 11 int x=0,y=0; 12 in

实时控制软件设计 第一次作业

#include <iostream> #include <cstring> #include <math.h> #include <Eigen/Dense> using Eigen::MatrixXd; using namespace std; class Point {  public:  double x;  double y;  void Showpoint(void);  void movexy(MatrixXd p);//平移算子  void r

实时控制软件设计第一周作业-汽车ABS软件系统案例分析

汽车ABS软件系统案例分析 ABS 通过控制作用于车轮制动分泵上的制动管路压力,使汽车在紧急刹车时车轮不会抱死,这样就能使汽车在紧急制动时仍能保持较好的方向稳定性. ABS系统一般是在普通制动系统基础上加装了轮速传感器,电子控制单元,制动压力调节器.制动时,通过分析传感器车速轮速数据判断车轮是否处于抱死拖滑状态,并据此控制制动压力调节器进行高频增压,保压,减压,防止车轮抱死. Q1.该系统有哪些强实时功能需求?需要对哪些实时事件进行实时响应,对允许的实时延迟的数量级进行估计. A1.强实时需求:

实时控制软件设计第二周作业

一.汽车出入门禁系统状态机设计 状态机所有状态: 入闸传感器(两种状态): Ture  False  (分别用ET和EF表示) 出闸传感器(两种状态): Ture  False  (分别用OT和OF表示) 起落杆(两种状态):     UP DOWN   (分别用UP和DW表示) 通行灯(两种状态):       Red Green   (分别用R和G表示) 状态机所接收到的外部事件: 汽车进入和驶离门禁系统区: Enter  Out (分别用E和O表示) 状态机所产生的动作: 起落杆的动作: 

实时控制软件设计第一周作业

以汽车ABS系统的软件系统进行案例分析: 一.强实时功能需求有:1.汽车车轮转速的实时监测,实时计算出轮速.参考车速.车轮加速度.滑移率等参数: 2.系统故障诊断,故障诊断分为两部分,分别是启动时故障诊断和行驶状态下故障诊断. 实时事件实时响应:1.制动压力调节,当车轮处于抱死的临界状态时,调节制动压力: 2.系统故障处理,如果发现故障,则应及时警示. 二.ABS的软件系统需要设计2个实时任务,分别是汽车车轮状态监测和行驶状态下故障诊断. 三.以上两个实时任务均为时间触发:1.为保证ABS的实时

实时控制软件设计第二周作业-停车场门禁控制系统状态机

画出动作转换图为: 使用模块化设计,将起落杆.出入传感器和通行灯设计成四个模块,分别继承设计好的系统模块接口: 1 //FSM_Interface.h 2 #pragma once 3 4 namespace FSM 5 { 6 7 class ISystemUnit //系统单元接口 8 { 9 public: 10 11 virtual void Initialize() = 0; //初始化 12 13 virtual void Execute() = 0; //执行动作 14 15 vi

实时控制软件设计第二次作业

1-1.Point.h #ifndef MY_POINT #define MY_POINT class Point{ private: double _x; double _y; public: Point(double x,double y); double getX(); double getY(); }; #endif  1-2.Point.cpp #include"Point.h" #include<iostream> Point::Point(double x,d

《实时控制软件设计》读书笔记

读书笔记 在浅读过<构建之法:现代软件工程>第一章和邹欣老师的一些博文后,我对以下四个方面有了一些粗陋的认识. 一.      对软件工程的理解 <构建之法>第一章中对软件工程有着自己的理解.书中提到“软件=程序+软件工程”这一概念.同时,书中还指出软件工程包含软件需求分析.软件设计.软件构建.软件测试和软件维护这些领域.看过这些介绍后,我认为首先要弄请程序.软件.软件工程的区别.正如书中提到阿超的例子一样,程序只是完成某一项或几项简单任务的代码和数据结构集成:而软件则是能满足用户

《实时控制软件设计》第一个编程作业

题目: 第一步: 写一个根据输入坐标生成一个平面图形(点.线段和三角形)并能对该几何图形进行平移和旋转操作的命令行 “软件”,要求: a) 通过命令行输入图形的名称,端点数(1为点,2为线段,3为三角形)和端点坐标(x,y). 如:输入一个点 p1 1 (2,5) 输入一个线段 l1 2 (3,5) (4,6) 输入一个三角形 t1 3 (1,1) (2,5) (-4,7) b) 输入一个计算指令,实现对上述图形的平移和绕原点旋转等操作,并输出该图形新的坐标值. 如:move l1 (3,6)