C++_第十一周做题总结_继承基础

id:68 A圆和圆柱体积算(继承)

题目描述

定义一个CPoint点类,包含数据成员x,y(坐标点)。

以CPoint为基类,派生出一个圆形类CCircle,增加数据成员r(半径)和一个计算圆面积的成员函数。

再以CCircle做为直接基类,派生出一个圆柱体类CCylinder,增加数据成员h(高)和一个计算体积的成员函数。

生成圆和圆柱体对象,调用成员函数计算面积或体积并输出结果。

输入

输入圆的圆心位置、半径

输入圆柱体圆心位置、半径、高

输出

输出圆的圆心位置 半径

输出圆面积

输出圆柱体的圆心位置 半径 高

输出圆柱体体积

输入样例

0 0 1
1 1 2 3

输出样例

Circle:(0,0),1
Area:3.14
Cylinder:(1,1),2,3
Volume:37.68

题解

  • 首先看Cpoint类的使用,定义两个私有变量用于存储点的横纵坐标,实现的方法有有参构造
  • 然后定义他的派生类CCircle,定义有私有变量半径,实现的方法有构造和计算圆的面积,注意,在派生类的构造里面要给基类的构造函数提供参数,后面的派生类的定义大同小异
  • 在主函数中,输入有关值,然后使用两个派生类作为数据类型定义两个变量,进行有参构造,然后调用计算函数进行计算输出

代码实现

#include <iostream>
using namespace std;class Cpoint
{
protected:int x, y;
public:Cpoint(int x1, int y1); // 构造
};Cpoint::Cpoint(int x1, int y1) // 构造
{x = x1;y = y1;
}class CCircle : public Cpoint
{
protected:int r;
public:CCircle(int r1, int x1, int y1);void calCi(); // 计算圆面积
};CCircle::CCircle(int r1, int x1, int y1): Cpoint(x1, y1)
{r = r1;cout << x << "," << y << ")," << r;
}void CCircle::calCi() // 计算圆面积
{double S;S = 3.14 * r * r;cout << endl << "Area:" << S << endl;
}class CCylinder : public CCircle
{
private:int h;
public:CCylinder(int h1, int r1, int x1, int y1);void calCy(); // 计算体积
};CCylinder::CCylinder(int h1, int r1, int x1, int y1): CCircle(r1, x1, y1)
{h = h1;cout << "," << h << endl;
}void CCylinder::calCy() // 计算体积
{double V, S;S = 3.14 * r * r;V = S * h;cout << "Volume:" << V << endl;
}int main()
{int ix, iy, ir, yx, yy, yr, yh;cin >> ix >> iy >> ir; // 圆的圆心位置、半径cin >> yx >> yy >> yr >> yh; // 圆柱体圆心位置、半径、高cout << "Circle:(";CCircle p1(ir, ix, iy); // 圆的构造p1.calCi();cout << "Cylinder:(";CCylinder p2(yh, yr, yx, yy); // 圆柱的构造p2.calCy();return 0;
}

id:69 B.三维空间的点(继承)

题目描述

定义一个平面上的点C2D类,它含有一个getDistance()的成员函数,计算该点到原点的距离;从C2D类派生出三维空间的点C3D类,它的getDistance()成员函数计算该点到原点的距离。试分别生成一个C2D和C3D的对象,计算它们到原点的距离。
三维空间的两点(x, y, z)和(x1, y1, z1)的距离公式如下:
[(x-x1)2+(y-y1)2+(z-z1)2](1/2)

输入

第一行二维坐标点位置

第二行三维坐标点位置1

第三行三维坐标点位置2

输出

第一行二维坐标点位置到原点的距离

第二行三维坐标点位置1到原点的距离

第三行三维坐标点位置2到原点的距离

第四行三维坐标点位置2赋值给二维坐标点变量后,二维坐标点到原点的距离

输入样例

3 4
3 4 5
6 8 8

输出样例

5
7.07107
12.8062
10

题解

  • 首先看C2D类的定义,首先定义两个私有变量用于存储点的横纵坐标,类中实现的方法有构造和计算距离
  • 然后再定义一个派生类C3D,在这个类里面定义一个私有变量表示z轴坐标,类里面实现构造和计算到原点的距离
  • 在主函数中,输入值,然后按照题目要求用不同的类定义变量,然后调用计算距离函数

代码实现

#include <iostream>
#include <cmath>
using namespace std;class C2D
{
protected:int x, y;
public:C2D(int x1, int y1); // 构造void getDistance(); // 计算该点到原点的距离
};C2D::C2D(int x1, int y1) // 构造
{x = x1;y = y1;
}void C2D::getDistance() // 计算该点到原点的距离
{double dis;dis = sqrt(x * x + y * y);cout << dis << endl;
}class C3D : public C2D
{
private:int z;
public:C3D(int x1, int y1, int z1); // 构造void getDistance(); // 计算该点到原点的距离
};C3D::C3D(int x1, int y1, int z1) // 构造:C2D(x1, y1)
{z = z1;
}void C3D::getDistance() // 计算该点到原点的距离
{double dis;dis = sqrt(x * x + y * y + z * z);cout << dis << endl;
}int main()
{int x1, y1, x2, y2, z2, x3, y3, z3;cin >> x1 >> y1; // 二维cin >> x2 >> y2 >> z2 >> x3 >> y3 >> z3; // 三维C2D c1(x1, y1);c1.getDistance(); // 二维距离输出C3D c2(x2, y2, z2);c2.getDistance();C3D c3(x3, y3, z3);c3.getDistance();C2D c4(x3, y3);c4.getDistance();return 0;
}

id:175 C.学生成绩计算(继承)

题目描述

定义Person类具有姓名、年龄等属性,具有输出基本信息的display函数。

选修《面向对象程序设计》课程的学生在Person类的基础上,派生出子类:免听生和非免听生。子类继承父类成员,新增其他成员、改写display函数。

非免听生具有平时成绩、考试成绩和总评成绩三个属性,总评成绩根据(平时成绩40%+考试成绩60%)计算的结果,85分(包含)以上为A,75分(包含)-85分(不包含)为B,65分(包含)-75分(不包含)为C,60分(包含)-65分(不包含)为D,60分(不包含)以下为F。

免听生只有考试成绩和总评成绩两个属性,总评成绩100%根据考试成绩对应上述等级制成绩。

定义上述类并编写主函数,输入类型符号,若输入R,根据学生基本信息、平时成绩和考试成绩,建立非免听生对象,若输入S,根据学生基本信息、考试成绩,建立免听生对象。计算学生的总评成绩,并输出。

输入

测试次数t

随后每行输入学生类型 相关信息,姓名的最大字符长度为20

输出

每个学生基本信息和总评成绩

输入样例

2
R cindy 18 100 100
S sandy 28 59

输出样例

cindy 18 A
sandy 28 F

题解

  • 首先看Person类的定义,定义两个私有变量,一个用于存储名字,一个用于存储年龄,在类里面实现构造和输出基本信息
  • 然后定义一个Person类的派生类RPerson表示非免听生,定义两个私有变量一个是平时成绩,一个是期末成绩,在类里面实现构造和计算输出
  • 再定义一个Person类的派生类SPerson类表示免听生,定义一个私有变量,表示期末成绩,在类里面实现构造和计算输出
  • 在主函数中,输入相应的值,然后根据题目要求的类型定义不同类型的变量

代码实现

#include <iostream>
using namespace std;class Person
{
protected:string name;int age;
public:Person(string n1, int a1);void display1(); // 输出基本信息
};Person::Person(string n1, int a1)
{name = n1;age = a1;
}void Person::display1() // 输出基本信息
{cout << name << " " << age << " ";
}class RPerson : public Person
{
private:int usual, test;
public:RPerson(int u1, int t1, string n1, int a1); // 构造void display2(); // 输出
};RPerson::RPerson(int u1, int t1, string n1, int a1) // 构造: Person(n1, a1)
{usual = u1;test = t1;
}void RPerson::display2() // 输出
{int ans;ans = usual * 0.4 + test * 0.6;if (ans >= 85){cout << 'A' << endl;}else if (ans >= 75){cout << 'B' << endl;}else if (ans >= 65){cout << 'C' << endl;}else if (ans >= 60){cout << 'D' << endl;}else{cout << 'F' << endl;}
}class SPerson : public Person
{
private:int test;
public:SPerson(int t1, string n1, int a1); // 构造void display3(); // 输出
};SPerson::SPerson(int t1, string n1, int a1) // 构造: Person(n1, a1)
{test = t1;
}void SPerson::display3() // 输出
{int ans;ans = test * 0.6;if (ans >= 85){cout << 'A' << endl;}else if (ans >= 75){cout << 'B' << endl;}else if (ans >= 65){cout << 'C' << endl;}else if (ans >= 60){cout << 'D' << endl;}else{cout << 'F' << endl;}
}int main()
{int t, i, us, te, age;char type;string name;cin >> t; // 测试次数for (i = 0; i < t; i++){cin >> type;if (type == 'R') // 非免听生{cin >> name >> age >> us >> te;RPerson p1(us, te, name, age);p1.display1();p1.display2();}else // 免听生{cin >> name >> age >> te;SPerson p2(te, name, age);p2.display1();p2.display3();}}return 0;
}

id:73 D.时钟模拟(继承)

题目描述

定义计数器类,包含保护数据成员value,公有函数increment计数加1。

定义循环计算器继承计数器类,增加私有数据成员:最小值minValue,maxValue,

重写公有函数increment,使得value在minValue~maxValue区间内循环+1。

定义时钟类,数据成员是私有循环计数器对象小时hour、分钟minute、秒second,公有函数time(int s)计算当前时间经过s秒之后的时间,即hour,minute,second的新value值。

定义时钟类对象,输入当前时间和经过的秒数,调用time函数计算新时间。

根据题目要求,增加必要的构造函数、析构函数和其他所需函数。

因为clock和time是系统内置函数,为了避免重名,请不要使用clock或者time作为类名或者函数名

输入

第一行测试次数n

2行一组,第一行为当前时间(小时 分钟 秒),第二行为经过的秒数。

输出

输出n行

每行对应每组当前时间和经过秒数后计算得到的新时间(小时:分钟:秒)。

输入样例

2
8 19 20
20
23 30 0
1801

输出样例

8:19:40
0:0:1

题解

  • 首先看Counter类,类里面定义一个整形的私有变量表示 值,实现的功能是让这个值加一,且将Clock类视为友元类
  • 然后定义一个Counter类的派生类Cire,在这个类里面定义两私有变量,最大值和最小值,表示这个变量的最大值和最小值,这个类实现的方法有构造,还有使得value在minValue~maxValue区间内循环加一,即是当value的值大于等于最大值时,value的值变为最小值,因为时分秒没有等于最大值的说法。因为基类的实现里面没有构造函数,所以派生类的构造函数不需要给基类传递参数,即不需要初始化基类的参数
  • 然后额外定义一个Clock类,定义Cire类型的三个私有变量,定义成这个类型是为了能使用这个Cire类里面的函数进行在范围内的value的值的加一操作,这个类的实现有构造和计算当前时间经过s秒之后的时间,构造函数中,因为变量的类型是Cire类型,所以首先要给Cire类的构造函数传递参数,调用Cire的构造函数初始化时分秒的最大值的最小值,然后因为时分秒是Cire类型的,所以其存在成员value,所以也需要对这个value值,即时分秒的大小初始化,即为参数的值
  • Clock类里面计算函数的过程是,因为调用的increment函数可以使得这个值在范围内加一,所以我们不需要考虑轮回的情况,直接把传入的,所需要加上的秒数作为循环的判断依据,在循环的内部,使用秒的变量调用increment函数首先实现秒的增加,因为秒的增加会影响到分的增加,再影响到时的增加,反之则不会,调用后对这个秒的大小进行判断,如果这个值等于0,则说明这个秒转了一轮,相应的分钟就要加一,加一则是调用分的increment函数进行操作,如果不等于0,则进入循环的下一轮,如果分钟等于0,同理,调用时的increment函数对时的大小进行加一操作,然后进行输出
  • 在主函数中,读取输入进来的数,然后定义一个Clock的对象,进行有参构造,然后调用计算函数计算加秒数之后的时间

遇到的问题

在写计算加秒数后的的时间时,把时分秒进行割裂计算,导致当秒走过一轮后没有对分钟进行加一操作,单纯的把秒数换算成秒,分,时分别要进行多少次加一操作,后面考虑到存在秒数走过一轮后会对分钟产生影响,但是没有懂得从循环内部进行操作,没有思考到当秒数等于0时,即为转过了一轮,反而考虑在循环外部操作,从而导致无从下手,焦头烂额

代码实现

#include <iostream>
using namespace std;
class Clock;class Counter
{
protected:int value;
public:void increment(); // 计数加1friend Clock;
};void Counter::increment() // 计数加1
{value++;
}class Cire : public Counter // 继承
{
private:int minValue, maxValue;
public:Cire(int min1, int max1); // 构造void increment(); // 使得value在minValue~maxValue区间内循环+1
};Cire::Cire(int min1, int max1) // 构造
{minValue = min1;maxValue = max1;
}void Cire::increment() // 使得value在minValue~maxValue区间内循环+1
{value++;if (value >= maxValue){value = minValue;}
}class Clock
{
private:Cire hour, minute, second;
public:Clock(int h1, int m1, int s1);void time(int s); // 计算当前时间经过s秒之后的时间
};Clock::Clock(int h1, int m1, int s1): hour(0, 24), minute(0, 60), second(0, 60)
{hour.value = h1;minute.value = m1;second.value = s1;
}void Clock::time(int s) // 计算当前时间经过s秒之后的时间
{int i;for (i = 0; i < s; i++){second.increment();if (second.value == 0){minute.increment();if (minute.value == 0){hour.increment();}}}cout << hour.value << ":" << minute.value << ":";cout << second.value << endl;
}int main()
{int n, i, h, m, s, ss;cin >> n;for (i = 0; i < n; i++){cin >> h >> m >> s >> ss;Clock c1(h, m, s); // 构造初始化c1.time(ss); // 重新计算时间}return 0;
}

id:74 E.新旧身份证(继承)

题目描述

按下述方式定义一个日期类CDate和描述15位身份证号的旧身份证类COldId:

class CDate
{
private:int year, month, day;
public:CDate(int, int, int);bool check(); //检验日期是否合法bool isLeap();void print();
};class COldId
{
protected:char* pId15, * pName; //15位身份证号码,姓名CDate birthday; //出生日期
public:COldId(char* pIdVal, char* pNameVal, CDate& day);bool check(); //验证15位身份证是否合法void print();~COldId();
};

然后以COldId为基类派生18位身份证号的新身份证类CNewId,并增加3个数据成员:pId18(18位号码)、issueDay(签发日期)和validYear(有效期,年数),并重新定义check()和print()。

15位身份证号扩展为18位身份证号的规则为:前6位号码保持一致,年份由2位变为4位(在前面加上19,例如88变为1988),剩余号码都保持一致,再加上第18位校验码。

身份证第18位校验码的生成方法:

  1. 将身份证号码前17位数分别乘以7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2。然后将其相加。

  2. 将17位数字与系数乘加的和除以11,得到余数。

  3. 余数与校验码的对应关系为1,0,X,9,8,7,6,5,4,3,2。也即:如果余数是3,身份证第18位就是9。如果余数是2,身份证的最后一位号码就是X。

主函数定义一个派生类对象,并用派生类对象调用check(),若返回false则输出“illegal id”否则调用print()输出身份证信息。check()对身份证合法性进行验证的规则:

  1. 确认18位号码是从15位号码扩展的,且第18位校验码正确.

  2. 身份证中的出生日期合法.

  3. 身份证号码中不含非法字符.

  4. 身份证号码的长度正确.

  5. 身份证目前处于有效期内,假设当前日期为2021年11月9日。

  6. 签发日期合法

输入

测试数据的组数 t

第一个人姓名、出生日期年月日、15位身份证号码、18位身份证号码、签发日期年月日、有效期(100年按长期处理)

第二个人姓名、出生日期年月日、15位身份证号码、18位身份证号码、签发日期年月日、有效期(100年按长期处理)

姓名的最大字符长度为20

输出

第一个人姓名

第一个人18位身份证号信息(号码、签发日期和有效期)或"illegal id"

第二个人姓名

第二个人18位身份证号信息(号码、签发日期和有效期)或"illegal id"

输入样例

10
AAAA 1988 2 28 440301880228113 440301198802281133 2006 1 20 20
BBBB 1997 4 30 440301980808554 440301199808085541 2015 2 2 10
CCCC 1920 5 8 530102200508011 53010219200508011X 1980 3 4 30
DDDD 1980 1 1 340524800101001 340524198001010012 1998 12 11 20
EEEE 1988 11 12 110203881112034 110203198811120340 2007 2 29 20
FFFF 1964 11 15 432831641115081 432831196411150810 2015 8 7 100
GGGG 1996 12 10 44030196121010 44030119961210109 2014 6 7 20
HHHH 1988 7 21 440301880721X12 44030119880721X122 2006 5 11 20
IIII 1976 3 30 440301760330098 440301197603300983 2003 4 15 20
JJJJ 1955 9 5 440301550905205 440301195509051052 2004 6 4 100

输出样例

AAAA
440301198802281133 2006年1月20日 20年
BBBB
illegal id
CCCC
illegal id
DDDD
illegal id
EEEE
illegal id
FFFF
432831196411150810 2015年8月7日 长期
GGGG
illegal id
HHHH
illegal id
IIII
illegal id
JJJJ
illegal id

题解

  • 首先看CDate类,类里面定义了三个私有变量,年月日,实现的方法有构造,检验日期是否合法,判断是否是闰年,打印日期,然后把CNewId类视为友元类,在检验日期是否合法的函数中,主要是检验这个日期是否超过当前题目说明的日期,然后判断这个月份是否超过了一月或者十二月,还有这个天数是否在正常的天数内,注意,返回bool类型的函数,即使每一个判断语句都有返回true或者false,函数的最后仍然要返回一个true或者false
  • 然后看COldId类,在类里面定义三个私有变量,15位身份证号码,姓名和出生日期,其中,出生日期是CDate类,实现的方法是构造,验证15位身份证是否合法和析构,在构造里面输出姓名,煮波赌15位身份证一定正确,所以bool COldId::check()函数返回true
  • 再定义一个派生类CNewId,定义三个私有变量,18位号码,签发日期和有效期年数,实现的方法是构造,验证18位身份证是否合法,输出和析构,在构造函数中,因为基类存在构造函数,所以派生类的构造函数需要给基类的构造函数提供参数
  • 在验证18位身份证是否合法的函数中,因为余数与校验码的对应关系中存在字符型,所以我们需要将这个数组定义为char类型,注意,里面的数字也需要用单引号,首先我们需要检验确认18位号码是从15位号码扩展的,所以需要一位位的对比,然后在这个循环里面检验不含非法字符,及全部都是数字,然后顺便计算验证码,注意,18位身份证的类型是字符型,所以要把他们转换为数字,得到校验码后检验是否正确,再检验长度是否正确,检查出生日期合法,检查签发日期合法性,检查身份证是否在有效期内
  • 在主函数中,进行数据输入,然后有参构造,控制输出

遇到的问题

余数与校验码的对应关系中的数组中的数字没有用单引号,计算校验码时,没有把18位身份证转换为数字来进行计算

代码实现

#include <iostream>
#include <cstring>
using namespace std;class CDate
{
private:int year, month, day;
public:CDate(int y1, int m1, int d1);bool check();  // 检验日期是否合法bool isLeap(); // 判断闰年void print();friend class CNewId;
};CDate::CDate(int y1, int m1, int d1)
{year = y1;month = m1;day = d1;
}bool CDate::check() // 检验日期是否合法
{// 检查年份是否有效if (year > 2021){return false;}else if (year == 2021){if (month > 11 || (month == 11 && day > 9)){return false;}}// 检查月份是否有效if (month < 1 || month > 12){return false;}// 检查天数是否有效int daysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};if (isLeap()){daysInMonth[1] = 29;}if (day < 1 || day > daysInMonth[month - 1]){return false;}return true;
}bool CDate::isLeap() // 判断闰年
{return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}void CDate::print()
{cout << year << "年" << month << "月" << day << "日 ";
}class COldId
{
protected:char *pId15, *pName; // 15位身份证号码,姓名CDate birthday;		 // 出生日期
public:COldId(char *pIdVal, char *pNameVal, CDate &day);bool check(); // 验证15位身份证是否合法~COldId();
};COldId::COldId(char *pIdVal, char *pNameVal, CDate &day): birthday(day)
{int len;pId15 = new char[16];strncpy(pId15, pIdVal, 15);pId15[15] = '\0';len = strlen(pNameVal);pName = new char[len + 1];strncpy(pName, pNameVal, len);pName[len] = '\0';cout << pName << endl; // 输出姓名
}bool COldId::check() // 验证15位身份证是否合法
{return true;
}COldId::~COldId()
{delete[] pId15;delete[] pName;
}class CNewId : public COldId
{
private:char *pId18;	// 18位号码CDate issueDay; // 签发日期int validYear;	// 有效期,年数
public:CNewId(char *pId18, CDate &iss, int valid, char *pId15, char *name, CDate birth);bool check(); // 验证18位身份证是否合法void print();~CNewId();
};CNewId::CNewId(char *pId, CDate &iss, int valid, char *pId15, char *name, CDate birth): COldId(pId15, name, birth), issueDay(iss)
{pId18 = new char[19];strncpy(pId18, pId, 18);pId18[18] = '\0';validYear = valid;
}bool CNewId::check() // 验证18位身份证是否合法
{int code, i, biryear;int a[17] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};char b[11] = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};code = 0;for (i = 0; i < 17; i++){if (i < 6) // 确认18位号码是从15位号码扩展的{if (pId18[i] != pId15[i]){return false;}}if (i > 7 && i < 15){if (pId18[i] != pId15[i - 2]){return false;}}if (pId18[i] < '0' || pId18[i] > '9') // 不含非法字符{return false;}code += (pId18[i] - '0') * a[i];}code %= 11;if (b[code] != pId18[17]) // 第18位校验码不正确{return false;}if (strlen(pId18) != 18) // 长度正确{return false;}// 检查出生日期合法biryear = (pId18[6] - '0') * 1000 + (pId18[7] - '0') * 100 + (pId18[8] - '0') * 10 + (pId18[9] - '0');if (biryear != birthday.year){return false;}if (!issueDay.check()) // 检查签发日期合法性{return false;}if (issueDay.year + validYear < 2021) // 检查身份证是否在有效期内{return false;}else if (issueDay.year + validYear == 2021){if (issueDay.month < 11 || (issueDay.month == 11 && issueDay.day < 9)){return false;}}return true;
}void CNewId::print()
{cout << pId18 << " ";issueDay.print();if (validYear != 100){cout << validYear << "年" << endl;}else{cout << "长期" << endl;}
}CNewId::~CNewId()
{delete[] pId18;
}int main()
{int t, i, y1, m1, dd1, y2, m2, dd2, date, result;char *name, *num15, *num18;name = new char[21];num15 = new char[16];num18 = new char[19];cin >> t;for (i = 0; i < t; i++){cin >> name >> y1 >> m1 >> dd1 >> num15 >> num18;cin >> y2 >> m2 >> dd2 >> date;CDate d1(y1, m1, dd1); // 生日CDate d2(y2, m2, dd2); // 签发日期CNewId id2(num18, d2, date, num15, name, d1);result = id2.check();if (result == 1){id2.print(); // 输出}else{cout << "illegal id" << endl;}}delete[] name;delete[] num15;delete[] num18;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/13324.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

天锐绿盾 | 设计院、机械制造行业透明加密cad图纸、图纸防泄密软件

天锐绿盾为设计院及机械制造行业量身打造的透明加密CAD图纸解决方案&#xff0c;专注于保障这些行业中的核心资产—设计图纸的安全。通过集成先进的加密技术和访问控制策略&#xff0c;该软件系统能有效防止图纸的未经授权访问和意外泄密。 PC地址&#xff1a; https://isite…

ControlNet 学习笔记

ControlNet根据一些额外的信息控制扩散生成走向 在作用原理上&#xff0c;ControlNet和LoRA是有许多相似之处的&#xff0c;定位都是对大扩散模型做微调的额外网络。 Annotator&#xff08;预处理器&#xff09;:从图片中提取对ControlNet有用的额外信息 Diffusion:在ControlN…

富格林:落实正规技能实现出金

富格林认为&#xff0c;众所周知近段时间地缘局势外溢的影响下&#xff0c;避险情绪的快速升温导致金价的运行幅度更为惊人。实现盈利出金毋容置疑是每个投资者进行投资的最终目标&#xff0c;那么我们要如何实现出金呢&#xff1f;事实上&#xff0c;要想盈利出金的前提条件就…

每日一练 2024.5.16 (补 2024.5.15)

题目&#xff1a; 给定一个 正整数 数组 beans &#xff0c;其中每个整数表示一个袋子里装的魔法豆的数目。 请你从每个袋子中 拿出 一些豆子&#xff08;也可以 不拿出&#xff09;&#xff0c;使得剩下的 非空 袋子中&#xff08;即 至少还有一颗 魔法豆的袋子&#xff09;…

2024汽车行业用户洞察与营销趋势白皮书

来源&#xff1a;小红书&寰球汽车&#xff1a;

设备接入物联网平台必须掌握的关键信息——青创智通

工业物联网解决方案-工业IOT-青创智通 设备接入物联网平台需要掌握的信息相当丰富且复杂&#xff0c;这涉及到多个层面&#xff0c;包括技术细节、平台选择、安全性考虑以及后期管理与维护等。以下将详细阐述设备接入物联网平台所需掌握的关键信息。 首先&#xff0c;我们需要…

<sa8650>QCX Usecase 使用详解—环视摄像头 (SRV))

<sa8650>QCX Usecase 使用详解—环视摄像头 < SRV > 一、 前言二、 IPE 输出三、 IFE outputs四、支持的输入和输出五、SRV 用例 XML 模板六、SRV 使用指南6.1 SRV 逻辑摄像机 XML 配置6.2 SRV 的 QCarCam 配置6.2.1 测试单一 SRV 用例6.2.2测试多SRV用例6.3 SRV 摄像…

【recast-navigation-js】通过websocket获取navmesh数据并初始化

目录 说在前面目录结构websocket服务器前端结果 说在前面 操作系统&#xff1a;windows 11浏览器&#xff1a;edge版本 124.0.2478.97recast-navigation-js版本&#xff1a;0.29.0golang版本&#xff1a;1.21.5 目录结构 D:. │ go.mod │ go.sum │ main.go // websocket …

Halcon 根据XYZ生成3D模型

Halcon 根据XYZ生成3D模型 x_points := [a_x_points, b_x_points, c_x_points]y_points := [a_y_points, b_y_points, c_y_points]z_points := [a_z_points, b_z_points, c_z_points]stop()gen_object_model_3d_from_points

风电功率预测 | 基于遗传算法优化BP神经网络实现风电功率预测(附matlab完整源码)

风电功率预测 风电功率预测 | 基于遗传算法优化BP神经网络实现风电功率预测(附matlab完整源码)完整代码风电功率预测 | 基于遗传算法优化BP神经网络实现风电功率预测(附matlab完整源码) 基于遗传算法优化BP神经网络是一种常见的方法,用于改进BP神经网络在风电功率预测中的性…

JavaScript-基本数据类型和变量

基本数据类型 JavaScript支持数字、字符串和布尔值3种基本数据类型 字符串型 字符串型是JavaScript用来表示文本的数据类型&#xff0c;字符串通常由单引号或双引号括起来&#xff0c;如果字符串存在特殊字符&#xff0c;可以用转义字符代替 数字型 数字型也是JavaScript中的基…

【数据链路层】以太网帧包解析

文章目录 以太网的帧结构解析数据链路层信息 以太网的帧结构 使用抓包工具&#xff0c;查看数据链路层信息&#xff1a; 解析数据链路层信息 &#xff08;1&#xff09;协议类型&#xff1a;代表上层的协议 &#xff08;IP00800 ARP00806 IPv686DD &#xff09; 如图中所示&a…

金蝶AAS-V9.0前后端部署

前言 包含金蝶AAS9.0部署&#xff0c;前端部署&#xff0c;后端部署。 金蝶AAS9.0部署 1. 下载金蝶AAS9.0安装包上传至服务器&#xff1b; 2. 解压安装包&#xff1b; unzip -d /opt/AAS-V9.0 AAS-V9.0.zip3. 配置JAVA路径&#xff1b; echo $JAVA_HOME vim /opt/AAS-9.0…

SpringBoot(四)之基础配置

SpringBoot&#xff08;四&#xff09;之基础配置 文章目录 SpringBoot&#xff08;四&#xff09;之基础配置全局配置文件bannerbanner替换banner关闭 单个配置注入系统配置注入自定义配置 多个配置注入自定义的配置的文件注入命令行设置环境配置(profile)配置文件中&#xff…

力扣HOT100 - 32. 最长有效括号

解题思路&#xff1a; 栈 class Solution {public int longestValidParentheses(String s) {int max 0;// 也可以使用 Stack<Integer> stacknew Stack<>();但Stack是遗留类&#xff0c;不推荐Deque<Integer> stack new LinkedList<>();stack.push(…

怎么做微信在线预约

在快节奏的现代生活中&#xff0c;我们总是追求更高效、更便捷的服务体验。而微信&#xff0c;这个拥有数亿用户的社交平台&#xff0c;早已不仅仅是一个聊天工具&#xff0c;它更是一个融合了多种功能的综合性服务平台。今天&#xff0c;就让我们一起探讨如何通过微信在线预约…

线程池的一些问题

核心线程数1.最大线程5.队列5.存活时间10s 1.场景一 如果核心线程数.被一直占用得不到释放.新进来1个任务.会怎么样?答: 会在队列中中死等. 只要进来的任务.不超过队列的长度,就会一直挡在队列中死等 package com.lin;import java.util.concurrent.Executors; import java.u…

通过阿里云的PAI基于开源LLM搭建RAG检索增强对话系统

5月9日参加阿里云AI云峰会活动&#xff0c;学习了下如何借助阿里云的PAI服务进行搭建RAG检索增加对话系统。 前提&#xff1a; 为了方便省钱&#xff0c;建议先通过免费的优惠圈&#xff0c;这样就可以先不花钱学习一下啦。开始实验之前&#xff0c;请务必打开 阿里云免费试用…

与 的区别

在不同的编程语言中&#xff0c;& 和 && 通常有不同的用法和含义。以下是它们在几种常见编程语言中的区别&#xff1a; C/C语言 & 操作符 按位与&#xff08;Bitwise AND&#xff09;&#xff1a; & 用于对两个整数进行按位与操作。 int a 5; // 0101 …

QT在场景中利用freetype实现独立的文字绘制子类QxFreeTypeTextItem

QT在场景中利用freetype实现独立的文字绘制子类QxFreeTypeTextItem&#xff0c;继上一章节讲过qt中如何编译freetype Qt编译和使用freetype矢量字库方法https://blog.csdn.net/wangningyu/article/details/138927379#QT利用freetype提取字库图片_qt freetype-CSDN博客文章浏览…