C++ DLUT 上机作业(四)

2023-11-11

C++ DLUT上机作业(四)

啥都不说,直接来

1、intArray

设计整型数组类intArray,实现若干数据的相关操作,
包括构造函数以及重载以下运算符《、》、[]、++、=。
以此为基类派生一个整型集合类intSet,实现集合的如下操作:
1)增加某个整型元素时,保证集合中没有重复元素,
如果超过集合的容量,集合的大小自动扩充为原来的一倍。
2) 删除指定的元素,若该元素在集合中则从集合中删除该元素;
3)重载运算符+、*、- ,实现两个集合对象的合并、和交集和补集操作

#include<iostream>

using namespace std;

class intArray
{
protected:
    int *p;
	int size;
	int number;
public:
	intArray( int num=0);
    void add( int data );
    bool del( int data );
	intArray operator [](int s);
	intArray operator =(const intArray& s);
	intArray operator ++();
	friend ostream& operator << ( ostream& out , const intArray& s );
	friend istream& operator >> (istream& out, const intArray& s);
	~intArray(){}
};

intArray::intArray( int num )
{
	size = num;
	number = 0;
	if (num) 
	p = new int[num];
	else
	p = NULL;
}

void intArray::add( int data )
{
	int* q;
	if (p == NULL)
	{
		p = new int[1];
		p[0] = data;
		number = size = 1;
	}
	else
	{
		if (number == size)
		{
			size*=2;
			q = new int[size];
			for (int i = 0; i <number; i++)
			{
				q[i] = p[i];
			}
			q[number++] = data;
			delete [] p;
			p = q;
		}
		else
			p[number++] = data;
	}
}

bool intArray::del( int data )
{
	int i,j=0,flag=0;
	for( i=0 ; i<number; i++ )
	{
		if( data!=p[i] )
		{
			p[j]=p[i];
			j++;
		}
		else
		{
			flag=1;
		}
	}
	if(flag)
	{
		number--;
		return 1;
	}
	else return 0;
	
}

intArray intArray::operator [](int s)
{
	size = s;
	return *this;
}

intArray intArray::operator=(const intArray& s)
{
	number = s.number;
	size = s.size;
	for (int i = 0; i < s.number; i++)
	{
		this->add(s.p[i]);
	}
	return *this;
}

intArray intArray::operator++()
{
	for (int i = 0; i < number ; i++)
	{
		p[i] = p[i] + 1;
	}
	return *this;
}

ostream& operator << ( ostream& out , const intArray& s )
{
	for (int i = 0; i < s.number; i++)
	{
		out << s.p[i] << " ";
	}
	out << endl;
	return out;
}

istream& operator >> (istream& in, const intArray& s)
{
	in >> s.p[s.number + 1];
	return in;
}
class intSet :public intArray
{
public:
	intSet(int n=0)
	{
		intArray s(n);
	}
	intSet operator + ( const intSet& s );
	intSet operator * ( const intSet& s );
	intSet operator - ( const intSet& s );
};

intSet intSet::operator + ( const intSet& s )
{
	intSet temp;
	int flag=1;
	for(int i=0;i<number;i++)
	{
		for(int k=0;k<s.number;k++)
		if(p[i]==s.p[k])
		{
			flag=0;
		}
		if(flag)
		temp.add(p[i]);
	}
	for(int i=0;i<s.number;i++)
	{
		temp.add(s.p[i]);
	}
	for(int i=0;i<number;i++)
	{
		for(int j=0;j<s.number;j++)
		{
			
		}
	}
	return temp;
}

intSet intSet::operator * ( const intSet& s )
{
	intSet temp;
	int i,j,m=0;
	for (i = 0; i <number; i++)
	{
		temp.add(p[i]);
	}
	for( i=0 ; i<s.number; i++ )
	{
		for( j=0 ; j<temp.number; j++ )
		{
			if( s.p[i]==temp.p[j] )
			{ 
				temp.p[m]=temp.p[j];
				m++;
			}
		}
	}
	temp.number=m;
	return temp; 
}

intSet intSet::operator-(const intSet& s)
{
	intSet temp;
	for(int i=0;i<s.number;i++)
	{
		temp.add(s.p[i]);
	}
	for(int i=0;i<number;i++)
	{
		temp.del(p[i]);
	}
	return temp;
}



int main()
{
	intSet s1(6);
	s1.add(4);
	s1.add(5);
	s1.add(8);
	s1.add(2);
	cout<<"s1:"<<endl;
	cout<<s1;
	intSet s2(2);
	s2.add(2);
	s2.add(8);
	s2.add(9);
	s2.add(6);
	intSet s3;
	intSet s4(7);
	s4.add(2);
	s4.add(4);
	s4.add(5);
	s4.add(6);
	s4.add(8);
	s4.add(0);
	cout<<"s2:"<<endl;
	cout<<s2;
	s3=s1;
	cout<<"s3=s1赋值后:"<<endl;
	cout<<s3;
	++s3;
	cout<<"s3自增后:"<<endl;
	cout<<s3;
	cout<<"s4:"<<endl;
	cout<<s4;
	cout<<"s1与s2交集:"<<endl;
	cout<<s1*s2;
	cout<<"s1与s2并集:"<<endl;
	cout<<s1+s2;
	cout<<"s1与s4补集:"<<endl;
	cout<<s1-s4;
	return 0;
}

2、Goods

已知如下商品类Goods的声明,利用该类Goods设计商品记录类Record。
请给出这两个类的完整定义,使之能够满足相关的功能,并通过main()函数中测试。
class Goods
{
char id[6]; //商品编号
char* name; //商品名称
double price; //商品价格
public:
Goods(const char* id=”00001”, char* pname=”Goods”, double d=0);
~Goods();
void setPrice(double);
double getPrice()const;
const char* getID();
void show() const; //输出商品所有的信息,格式: [商品编号] 商品名称: 价格
…… //其他成员函数
};
class Record // 商品记录类
{
Goods goods; //商品
double cost; //消费金额=商品价格*统一折扣率
static double discount; //统一折扣率,默认值为0.8
public:
…… //添加参数构造函数、默认构造以及重载元算符号函数
};

#include<iostream>
#include<cstring>

using namespace std;

class Goods{
private:
   char id[6];   //商品编号
   char* name;  //商品名称
   double price;  //商品价格
public:
   Goods();
   Goods(const char* n,const char* pname,double d);
   ~Goods(){
   	delete [] name;
   }
   void setPrice(double);
   double getPrice()const;
   const char* getID();
   void show() const;   //输出商品所有的信息,格式: [商品编号] 商品名称: 价格
   friend istream& operator>>(istream& in,Goods& g);
};
class Record   // 商品记录类
{
private:
    Goods goods;  //商品
    double cost;   //消费金额=商品价格*统一折扣率
    static double discount; //统一折扣率,默认值为0.8
public://添加参数构造函数、默认构造以及重载元算符号函数
    Record()
    {
    	Goods g;
    	goods=g;
	}
    ~Record(){}
    Record(Goods& g)
    {
    	goods=g;
    	cost=g.getPrice()*discount;
	}
	static double getdiscount();
	friend ostream& operator<<(ostream& out,Record& r);
};
Goods::Goods()
{
	strcpy(id,"00001");
	name = new char[6];
	strcpy(name,"Goods");
	price=0;
}
Goods::Goods(const char* n,const char* pname,double d)
{
	strcpy(id,n);
	name = new char[strlen(pname) + 1];
	strcpy(name,pname);
	price=d;
}
void Goods::setPrice(double d)
{
	price=d;
}
double Goods::getPrice()const
{
	return price;
}
const char* Goods::getID()
{
	return id;
}
void Goods::show()const
{
	cout<<"["<<id<<"] "<<name<<": "<<price<<endl;
}
istream& operator>>(istream& in,Goods& g)
{
	in>>g.id;
	in>>g.name;
	in>>g.price;
	return in;
}
ostream& operator<<(ostream& out,Record& r)
{
	r.goods.show();
	if(r.goods.getPrice()==0)
	r.cost=0;
	out<<"消费金额: "<<r.cost<<"RMB"<<endl;
	return out;
}
double Record::discount=0.8;
double Record::getdiscount()
{
	return discount;
}
int main()
{
	Goods food("200103","桃李面包",2.5), dress;
	cin >> dress; // 例如, 输入("100415","T-shirt",129);
	food.show();  //输出 [200103] 桃李面包: 2.5RMB
	cout << "折扣率:" << Record::getdiscount()<< endl;
	Record r1(food);
	Record r2(dress);
	Record r3;
	cout <<r1<<r2<<r3;
	return 0;
}

3、Cpoint

利用一个平面点类CPoint设计矩形类CRectangle类(边均与坐标轴平行),要求:
请给出相关成员函数的定义,使之能够满足相关的功能。
例如,判断矩形的种类、 计算图形面积与边长以及输出相关的信息。
请给出这两个类的完整定义,使其通过main()函数中测试。注意不能声明友元类!

#include <iostream>
#include <cmath>

using namespace std;

class CPoint
{
	double X, Y; //点的横纵坐标
public:
	CPoint()
	{
		X=0;
		Y=0;
	}
	CPoint(double x, double y)
	{
		X=x;
		Y=y;
	}
	double getX()
	{
		return X;
	}
	double getY()
	{
		return Y;
	}
	double distance(const CPoint &a)
	{
		return abs((a.X-X)*(a.X-X)+(a.Y-Y)*(a.Y-Y));
	}
	void print()
	{
		cout<<" "<<" "<<endl;
	}
    void setX(double d) {
        X=d;
    }
    void setY(double d) {
        Y=d;
    }
};
class CRectangle
{
private:
	CPoint p1, p2; //矩形的左上顶点及右下角顶点
	double length; //长边边长
	double width; //短边边长
	int type; //0:-非矩形,1-正方形,2,矩形
	static int num; //所有矩形对象个数
public:
	CRectangle(CPoint a,CPoint b)
	{
        p1.setX(a.getX());
        p1.setY(a.getY());
        p2.setX(b.getX());
        p2.setY(b.getY());
        if(a.getX()!=b.getX()&&a.getY()!=b.getY())
		num++;
        cmp();
	}
	void cmp()
	{
		if(p2.getX()-p1.getX()>p1.getY()-p2.getY())
		{
			length=abs(p2.getX()-p1.getX());
			width=abs(p1.getY()-p2.getY());
		}
		else if(p2.getX()-p1.getX()<p1.getY()-p2.getY())
		{
			length=abs(p1.getY()-p2.getY());
			width=abs(p2.getX()-p1.getX());
		}
		else
		{
			length=abs(p2.getX()-p1.getX());
			width=abs(p1.getY()-p2.getY());
		}
	}
	double getLength()
	{
		return length;
	}
	double getWidth()
	{
		return width;
	}
	double getArea()
	{
		return length*width;
	}
	int getType()
	{
		if(length==0||width==0)
		{
			return 0;
		}
		else if(length==width)
		{
			return 1;
		}
		return 2;
	}
	static int showCount()
	{
		return num;
	}
};
int CRectangle::num = 0;
ostream& operator<<(ostream &obj,CRectangle &p)
{
	if(p.getType()==0)
	obj<<"不能构成矩形"<< endl;
	if(p.getType()==1)
	obj<<"长为"<<p.getLength()<<",宽为"<<p.getWidth()<<",矩形"<<",面积为"<<p.getArea()<<endl;
	if(p.getType()==2)
	obj<<"长为"<<p.getLength()<<",宽为"<<p.getWidth()<<",正方形"<<",面积为"<<p.getArea()<<endl;
	return obj;
}
int main()
{
	CPoint p1(1, 1), p2(4, 5);
	CRectangle rec1(p1, p2);
	cout << rec1;
//	cout << "长为" << rec1.getLength() << "宽为" << rec1.getWidth() << endl; //计算边长
	CPoint p3(2, 2), p4;
	CRectangle rec2(p4, p3);
	cout << rec2; //输出“ 长为2, 宽为2,正方形,面积为4”
	CRectangle rec3(p3, p3);
	if (rec3.getType() == 0)
	cout <<"不能构成矩形"<< endl;
	cout << "有效矩形数目:"<< CRectangle::showCount()<<endl;  //输出2
	return 0;
}

4、Account

编写一个银行账号类(Account),包括私有数据成员:
用户int id号,类型int type(1-储蓄卡,2-信用卡),
用户名char* name、密码char password[10]和资产金额double balance。
注册新的用户时id号由系统自动设置(第一个储蓄用户id为100001,第二个储蓄用户id为100002;
第一个信用用户id为200001,第二个信用用户id为200002;以此类推),
定义如下成员函数, 请给出这个类的完整定义,并在主函数中测试所有功能。
1)重载构造函数,根据id号和用户名构造一个新用户,并将密码初始化为000000;
2)定义一组常成员函数get(),返回id号和用户名的函数;
3) void setName (char* ),用于更改用户名;
4) bool setPass(), 实现更改密码的操作(要求输入旧密码和新密码),
只有输入的旧密码正确的情况下才能修改密码,并进行操作是否成功的提示。
5)取款函数bool pay( double money); //判断能否成功取款
存款函数void earn( double money); //计算存并返回资产总额
6)重载运算符<<, 显示用户信息(id, name和balance)
7) 重载运算符+=,实现存款功能

#include<iostream>
#include<cstring>

using namespace std;

class Account{
	private:
		int id;
		int type;
		char *name;
		char password[10];
		double balance;
	public:
		Account();
		~Account()
		{
			delete [] name;
		}
		Account(const char *nam);
		Account(const char *nam,int typ);
		Account(const char *nam,int typ,double money);
		void setname(char* p);
		void settype();
		int getid()const;
		char* getname()const;
		bool setPass();
		bool withdraw(double money);
		double earn(double money);
		friend ostream& operator<<(ostream& out,Account &a);
		Account &operator+=(double money);
};
int num1=1,num2=1;
Account::Account()
{
	id=num1+100000;
	num1++;
	name=new char[8];
	strcpy(name,"no name");
	strcpy(password,"000000");
	balance=100;
}
Account::Account(const char* nam)
{
	id=num1+100000;
	num1++;
	name=new char[8];
	strcpy(name,nam);
	strcpy(password,"000000");
	balance=100;
}
Account::Account(const char* nam,int typ)
{
	if(typ==1)
	{
		id=num1+100000;
		num1++;
	}
	if(typ==2)
	{
		id=num2+200000;
		num2++;
	}
	name=new char[20];
	strcpy(name,nam);
	strcpy(password,"000000");
	balance=100;
}
Account::Account(const char *nam,int typ,double money)
{
	if(typ==1)
	{
		id=num1+100000;
		num1++;
	}
	if(typ==2)
	{
		id=num2+200000;
		num2++;
	}
	name=new char[20];
	strcpy(name,nam);
	strcpy(password,"000000");
	balance=money;
}
void Account::setname(char *p)
{
	if(name)
	delete [] name;
	name=new char[strlen(p)+1];
	strcpy(name,p);
}
void Account::settype()
{
	cout<<"输入种类(1-储蓄卡,2-信用卡):"<<endl;
	cin>>type;
}
int Account::getid()const
{
	return id;
}
char* Account::getname()const
{
	return name;
}
bool Account::setPass()
{
	char p[10];
	cout<<"输入旧密码:"<<endl;
	cin>>p;
	if(strcmp(password,p)!=0)
	{
		return false;
	}
	cout<<"输入新密码:"<<endl;
	cin>>p;
	strcpy(password,p);
	return true;
}
bool Account::withdraw(double money)
{
	balance=balance-money;
	if(balance>=0)
	return 1;
	return 0;
}
double Account::earn(double money)
{
	balance=balance+money;
	return balance;
}
ostream& operator<<(ostream& out,Account &a)
{
	out<<"id:"<<a.id<<endl;
	out<<"name:"<<a.name<<endl;
	out<<"balance:"<<a.balance<<endl;
	out<<"---------------------"<<endl;
	return out;
}
Account &Account::operator+=(double money)
{
	balance=balance+money;
	return *this;
}
int main()
{
	Account a1("test1"),a2("test2",1,250.00),a3("test3",2);
	cout<<a1.getname()<<", id = "<< a1.getid()<<endl; //输出 “test1, id=10001”
	if(a2.setPass())//设置密码
	{
		cout<<"重置密码成功"<<endl;
	}  
	else
	{
		cout<<"重置密码失败"<<endl;
	}
	cout<<"输入money(默认balance为100):"<<endl;
    double money ;
    cin>>money;   //例如输入200
    a1.withdraw(money);  //提款,无法成功提取
    a2.withdraw(money); //提款,成功提取,资产金额减少
    a3.withdraw(money); //透支,成功提取,资产金额减少
    a1.earn(123.45);   //存款
    a3.earn(100);   //还款
    cout<<a1<<a3;  //显示用户信息(id, name和balance)
    cout<<(a2+=200);   // 向a2存款200元,显示用户信息
    return 0;
}

溜了溜了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ DLUT 上机作业(四) 的相关文章

  • 套接字编程-listen() 和accept() 有什么区别?

    我一直在读本教程 http www cs rpi edu moorthy Courses os98 Pgms socket html了解套接字编程 看来listen and accept 系统调用都做同样的事情 即阻塞并等待客户端连接到使用
  • 读取大文件并制作字典

    我有一个大文件 我需要读取它并从中制作字典 我希望这一切能够尽可能快 然而我的Python代码太慢了 这是一个显示问题的最小示例 首先制作一些假数据 paste lt seq 20000000 lt seq 2 20000001 gt la
  • 是否有可能将 *.pdb 文件包含到发布版本中以查看错误行号?

    我做了一个项目 所有设置都是默认的 当我在调试模式 构建配置 调试 下运行它并遇到异常时 它转储到我的自定义日志记录机制 其中包含错误行号 但是当我运行发布构建时 记录相同的异常 没有行号 只有方法抛出和记录调用堆栈 是否有可能在发布配置
  • 当 foreach 块的内容具有 Conditional 属性时,C# 编译器是否会对其进行优化?

    我正在工作中编写一些调试代码 我想知道我所做的是否会损害性能 让我们看一下代码 foreach var item in aCollection Debug WriteLine item Name 我知道 Debug 类使用 Conditio
  • std::bind2nd 和 std::bind 与二维数组和结构数组

    我知道 C 有 lambda 并且 std bind1st std bind2nd 和 std bind 已弃用 然而 从C 的基础开始 我们可以更好地理解新特性 所以 我从这个非常简单的代码开始 使用int 数组s 第一个例子 与std
  • c 使用 lseek 以相反顺序复制文件

    我已经知道如何从一开始就将一个文件复制到另一个文件 但是我如何修改程序以按相反的顺序复制它 源文件应具有读取访问权限 目标文件应具有读写执行权限 我必须使用文件控制库 例如 FILE A File B should be ABCDEF FE
  • 使用默认行为将模型绑定到接口

    我正在尝试将控制器操作绑定到接口 但仍保持默认的绑定行为 public class CoolClass ISomeInterface public DoSomething get set ISomeInterface public clas
  • 主构造函数不再在 VS2015 中编译

    直到今天 我可以使用主构造函数 例如 public class Test string text private string mText text 为了能够做到这一点 在以前的 Visual Studio CTP 中 我必须将其添加到 c
  • 如果我重新分配并且新大小为 0,会发生什么情况。这与释放等效吗?

    给出以下代码 int a NULL a calloc 1 sizeof a printf d n a a realloc a 0 printf d n a return 0 它返回 4078904 0 这个 realloc 相当于 free
  • 禁用实体框架的默认值生成(Code First)

    我数据库中有一个列不能为空 我想将其设置为默认值在数据库中 问题是实体框架似乎自己创建了一个默认值 例如 int gt 0 并且完全忽略了数据库中的默认值约束 有没有办法禁用实体框架的默认值 我发现您可以使用以下属性来装饰您的字段 Data
  • 如果项目包含多个文件夹,如何使用 Add-Migration

    我想Add Migration使用我的 DbContext 但出现错误 The term add migration is not recognized as the name of a cmdlet function script fil
  • List 或其他类型上的 string.Join

    我想将整数数组或列表转换为逗号分隔的字符串 如下所示 string myFunction List
  • XCode std::thread C++

    对于学校的一个小项目 我需要创建一个简单的客户端 服务器结构 它将在路由器上运行 使用 openWRT 并且我试图在这个应用程序中使用线程做一些事情 我的 C 技能非常有限 所以我在internet https stackoverflow
  • 在 C# 窗口应用程序中运行 C/C++ 控制台应用程序?

    现在 我想开发一个简单的应用程序 因此我决定最快的编码方式是 C NET 但现在 我很难实现我需要的功能之一 我想做的是在 C 应用程序的窗口内运行 C C 控制台应用程序 就像在虚幻前端中一样 添加一点通信方式 以便我可以为控制台应用程序
  • 使用方法的状态模式

    我正在尝试使用方法作为状态而不是类来基于状态模式的修改版本来实现一个简单的状态机 如下所示 private Action
  • 在两个点之间创建一条曲线,每个点都具有标准化向量

    因此 我需要一种写入方法来在两点之间创建一条曲线 每个点都有一个指向任意方向的归一化向量 我一直在尝试设计这样一种方法 但一直无法理解数学 在这里 由于一张图片胜过一千个文字 这就是我所需要的 在图中 矢量垂直于红线 我相信向量需要进行相同
  • boost::spirit::qi::语法和可变参数模板

    我在使用可变参数模板定义语法时面临一个问题 我首先定义一些包含在某些结构中的简单语法 例如纬度 经度 如下所示 include
  • 是否可以检测流是否已被客户端关闭?

    简要介绍一下情况 我有一项服务可以通过套接字接收信息并发送回复 连接不安全 我想设置另一个可以为这些连接提供 TLS 的服务 这个新服务将提供单个端口并根据提供的客户端证书分发连接 我不想使用 stunnel 有几个原因 其中之一是每个接收
  • 如何创建实体集或模型而不在数据库中创建相应的表 - 实体框架

    我的 sqlserver 数据库中有一个存储过程 它返回多个结果集 我正在使用 msdn 中的以下链接从实体框架中的 SP 读取多个结果集 https msdn microsoft com en us library jj691402 v
  • 有没有办法在 C# 中仅通过文件名查找文件?

    我们现在使用绝对路径或相对路径在 C 应用程序中查找文件 如果文件位于当前工作目录下或 路径 之一下 有没有办法仅通过名称查找文件 使用绝对路径不好 使用相对路径也不够好 因为我们可能通过重命名或移动项目文件夹来更改项目结构 如果我们的代码

随机推荐

  • Poi实现Excel导出

    Poi实现Excel导出 Appache Poi提供了HSSFWorkbook操作2003版本的Excel文件 XSSFWorkbook操作2007版Excel文件 简单的具体实现在网上有很多案例可以参考学习 我就不写入门案例了 下面我会将
  • AutoML系列

    本文是对 Neural Architecture Search A Survey 的翻译 这篇Paper 很好的总结分析了 NAS 这一领域的研究进展 摘要 在过去几年中 深度学习在各种任务上 例如图像识别 语音识别和机器翻译 取得了显著进
  • 利用javascript的算术运算符获取一个数字的每位数字

  • element tree 树形控件

    组件 Element 地址 http element eleme io zh CN component tree Tree树形控件
  • 【VAR模型

    向量自回归 VAR 是一种随机过程模型 用于捕获多个时间序列之间的线性相互依赖性 VAR 模型通过允许多个进化变量来概括单变量自回归模型 AR 模型 VAR 中的所有变量都以相同的方式进入模型 每个变量都有一个方程式 根据其自身的滞后值 其
  • IBM MQ 故障诊断(一)

    说明 本文主要是针对运维人员的手册 前面部分主要是应用三板斧的方式 后面的步骤可能会发散和具体深入一些 不过也不是严格的划分 读者就当看一遍杂文的方式来看待此文吧 一 队列管理器的启停 QMGR的启停是故障诊断中遇到最多的需求之一 启动队列
  • 【C语言】可变参数列表

    文章目录 前言 一 可变参数列表是什么 二 怎么用可变参数列表 三 对于宏的深度剖析 隐式类型转换 对两个函数的重新认知 总结 前言 可变参数列表 使用起来像是数组 学习过函数栈帧的话可以发现实际上他也就是在栈区定义的一块空间当中连续访问
  • 无服务器编程语言,腾讯云之无服务器云函数运行golang程序-Go语言中文社区

    使用腾讯的 无服务器云函数启动了一个服务 用golang代码生成以太坊的私钥跟地址 genEthAddr png 无服务器云函数是什么 腾讯云的无服务器云函数 跟 aws lambda类似 把一段代码放到云函数服务器上 设定好访问路径 就可
  • 高等代数 多项式环(第7章)5* 结式与域

    一 结式 1 概念 2 结式与公共复根 1 多项式存在公共复根的判定 定理1 设 f x a
  • 数据结构——>单向环形链表

    单向环形链表 一 单向环形链表应用场景 二 单向环形链表介绍 三 单向环形链表代码实现 1 代码实现思路 2 代码实现 一 单向环形链表应用场景 提起单向环形链表 就不得不说约瑟夫问题 约瑟夫环 什么事约瑟夫问题呢 1 约瑟夫问题 有时也称
  • 机器学习:EM算法

    一 初识EM算法 EM算法也称期望最大化 Expectation Maximum 简称EM 算法 它是一个基础算法 是很多机器学习领域算法的基础 比如隐式马尔科夫算法 HMM 等等 EM算法是一种迭代优化策略 由于它的计算方法中每一次迭代都
  • FreeRTOS基础五:软件定时器

    软件定时器简介 软件定时器的作用 在指定的时间到来时执行指定的函数 或者以某个频率周期性地执行某个函数 被执行的函数叫做软件定时器回调函数 软件定时器由FreeRTOS内核实现 不需要硬件支持 软件定时器只有在软件定时器回调函数被调用时才需
  • 用EditPlus来编辑网页代码 写网页代码 网页软件安装包大小1.91MB JQ代码编辑软件

    如何使用EditPlus这款软件来编辑网页代码 第一步 我们先来安装这款软件 我就先分享一下这款软件 链接 https pan baidu com s 1YtMJboQ0abPTybIZMZu8Bg 提取码 jes4 第二步 等安装好这款软
  • Python GUI 设计(三)---Widget组件详解

    1 1 Canvas画布组件 Tkinter模块中的Canvas组件主要用于绘制图形 文字 设计动画等甚至也可以将其他小部件放在画布上 比如视频 它的语法格式如下 Canvas 父窗口 options 第一个参数是父窗口 表示这个画布建立在
  • STM32的RTC时钟及其相关寄存器

    1 什么是RTC时钟 RTC时钟本质上上一个定时器系统 但是其定时器的计数值最终是以2020 1 30 16 27 类似这样的形式呈现的 说白了就是它就是实时时钟 并且这个时钟不怕断电 断电后它在后备区继续计时 而后备区是有电池供电的 2
  • vscode使用remote-ssh连接远程服务器 报错:“过程试图写入的管道不存在”

    问题如题 网络上有很多解决 过程试图写入的管道不存在 的方法 笔者基本试过了一遍 也没能解决问题 这里不是指他们的方法没有用 只是能解决的问题可能不是我遇到的这种 我的解决方法是 修改配置文件的格式 就这么简单 这种格式才是正确的 从第二行
  • sqli-labs/Less-31

    欢迎界面和上一关差不多 所以我们还是使用双参数注入 首先判断第二个参数是否为数字型 输入如下 id 1 id 1 and 1 2 回显如下 所以属于字符型 然后判断是单引还是双引 输入如下 id 1 id 1 回显如下 正确回显了 所以不属
  • ^A在linux的处理

    这是hive的默认分隔符 用脚本awk或python可以把分隔符设置为 x01 在vim中选中时 用ctrl a来表示这个分隔符
  • 工业互联网+5G 发展策略研究

    本文首发于 邮电设计技术 边缘计算社区经过授权转发 摘要 工业互联网发展水平与一个国家的国际竞争力强相关 截至2020 年我国工业互联网发展初见成效 但商业模式还需要持续探索 首先探索工业互联网定义及发展情况 其次理清工业互联网与5G 关系
  • C++ DLUT 上机作业(四)

    文章目录 C DLUT上机作业 四 1 intArray 2 Goods 3 Cpoint 4 Account C DLUT上机作业 四 啥都不说 直接来 1 intArray 设计整型数组类intArray 实现若干数据的相关操作 包括构