第七站:C++面向对象训练

news2024/11/21 1:36:09

1:介绍

创建两个类,一个boy类,一个girl类,实现对两个类的数据输入,并通过main函数,对两个类的成员进行比较匹配

涉及:

vector容器,面向对象,const关键字,  stringstream(sstream.h) 

stringstream用法

stringstream ret;//可以将写入的数据转换成字符串
ret << "姓名:" << name << "-年龄-" << age << "-颜值-" <<yanZhi<< endl;
return ret.str();

vector是一个顺序容器(长度自动分配),类型自适应

用法:<vector>头文件

一维:vector<数据类型> 容器名   注:类是一种特殊的数据类型,也能放

二维:vector<vector<数据类型>> 容器名

例子:详细例子可以参考主页天天酷跑的游戏

二维的
vector<vector<IMAGE>> ObstractIMG;//image ObstractIMG[][]

IMAGE imgPillar[pillarNum];
一维的
vector<IMAGE> imgHArray;
sprintf_s(name,sizeof(name) ,"res/h1.png");
loadimage(&imgPillar[0], name, 63, 260, true);
通过push.back先往一维里放
imgHArray.push_back(imgPillar[0]);
然后再将一维的放进二维的
ObstractIMG.push_back(imgHArray);

分布:

每一个类都有.h声明头文件.cpp实现文件

2:girl类

.h

#pragma once
#include <iostream>
#include <string>
#include <vector>

using namespace std;
class Boy;
class Girl{
public:
	Girl();
	~Girl();
	Girl( string name,  int age,  int yanZhi);
	string getName()const;
	int getAge() const;
	int getYanZhi()const;
	bool satisfied(const Boy& boy) const;
	string describe()const;
	static void inputGirls(vector<Girl>& girl);

private:
	string name;
	int age;
	int yanZhi;
};

.cpp

 

#include "Girl.h"
#include <sstream>
#include "Boy.h"
//设置一个颜值系数

#define YANZHI_FACTOR 100
Girl::Girl() {
	name = "";
	age = 0;
	yanZhi = 0;
}
Girl::~Girl() {

}

Girl::Girl( string name,  int age,  int yanZhi) {
	this->name = name;
	this->age = age;
	this->yanZhi = yanZhi;
}

string Girl::getName() const {
	return name;
}
int Girl::getAge() const {
	return age;
}
int Girl::getYanZhi() const {
	return yanZhi;
}
bool Girl::satisfied(const Boy& b) const{
	if (b.getSalary() >= yanZhi * YANZHI_FACTOR) {
		return true;
	}
	return false;
}

string Girl::describe() const {
	stringstream ret;//可以将写入的数据转换成字符串
	ret << "姓名:" << name << "-年龄-" << age << "-颜值-" <<yanZhi<< endl;
	return ret.str();
}

void Girl::inputGirls(vector<Girl>& girl){
	string name;
	int age;
	int yanZhi1;
	int n = 1;
	while (n) {
		cout << "请输入女方第" << n << "个人的年龄:";
		cin >> age;
		if (age == 0) {
			break;
		}
		cout << "请输入第" << n << "个人的姓名:";
		cin >> name;
	
		cout << "请输入第" << n << "个人的颜值:";
		cin >> yanZhi1;
		n++;
		girl.push_back(Girl(name, age, yanZhi1));
	}
}

3:boy类

.h

#pragma once
#include <iostream>
#include <string>
#include <vector>

using namespace std;
class Girl;
class Boy{
public :
	Boy();
	~Boy();
	Boy(string name, int age, int salary);
	Boy(const Boy& other);
	string getName() const;
	int getAge() const;
	int getSalary() const;
	bool satisfied(const Girl& girl) const;
	string describe() const;
	static void inputBoys(vector<Boy> &boy);

private:
	string name;
	int age;
	int salary;
};

.cpp

 

#include "Boy.h"
#include <sstream>
#include "Girl.h"

//定义一个薪资参数
#define SALARY_FACTOR 0.006

Boy::Boy() {
	name = " ";
	age = 0;
	salary = 0;
}
Boy::Boy(string name, int age, int salary){
	this->name = name;
	this->age = age;
	this->salary = salary;
}
Boy::Boy(const Boy& other){
	salary = other.salary;
	name = other.name;
	age = other.age;
}
Boy::~Boy() {

}

string Boy::getName()const {
	return name;
}

int Boy::getAge() const{
	return age;
}
int Boy::getSalary()const {
	return salary;
}
bool Boy::satisfied(const Girl& girl) const{
	if (girl.getYanZhi() >= salary * SALARY_FACTOR) {
		return true;
	}
	return false;
}
string Boy::describe() const {
	stringstream ret;//可以将写入的数据转换成字符串
	ret << "姓名:" << name << "-年龄-" << age << "-薪资-" <<salary<< endl;
	return ret.str();
}

void Boy::inputBoys(vector<Boy> &boy){
	string name;
	int age;
	int salary;
	int n = 1;
	while (n){
		cout << "请输入第" << n << "个人的年龄:";
		cin >> age;
		if (age == 0) {
			break;
		}
		cout << "请输入第"<<n<<"个人的姓名:";
		cin >> name;
		cout << "请输入第" << n << "个人的薪资:";
		cin >> salary;
		n++;
		boy.push_back(Boy(name, age, salary));
	}
}

4:main主函数

 

#include "Boy.h"
#include "Girl.h"
#include <iostream>
#include <vector>
using namespace std;
void autoCompere(vector<Boy>& boys, vector<Girl> girls) {
	for (int i = 0; i < boys.size(); i++){
		for (int j = 0; j < girls.size(); j++) {
			if (boys[i].satisfied(girls[j]) && girls[j].satisfied(boys[i])) {
				cout << boys[i].describe() << "\n---匹配成功---\n" << girls[j].describe()<<endl;
			}
			else {
				cout << "匹配失败!!" << endl;
			}
			cout << endl;
		}
	}
}

int main(void) {
	vector<Boy> boys;
	vector<Girl> girls;
	Boy::inputBoys(boys);
	Girl::inputGirls(girls);
	cout << "\n\n----匹配中----" << endl;
	autoCompere(boys, girls);
	return 0;
}

5:实现

 

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

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

相关文章

利用python将Excel文件拆分为多个CSV

目录 一、准备工作 二、拆分Excel文件为多个CSV 1、读取Excel文件&#xff1a; 2、确定要拆分的列&#xff1a; 3、创建空的字典来存储CSV文件&#xff1a; 4、循环遍历数据并根据类别拆分&#xff1a; 5、打印或返回CSV文件名字典&#xff1a; 6、保存CSV到特定目录&a…

python.24.1.16函数

python自带函数 自定义函数 参数的使用

机器学习——支持向量机SVM

1 摘要&#xff1a; 支持向量机&#xff08;SVM&#xff09;是一种二类分类模型&#xff0c;其基本模型是在特征空间上找到最佳的分离超平面使得训练集上正负样本间隔最大&#xff0c;间隔最大使它有别于感知机&#xff0c;支持向量机也可通过核技巧使它成为非线性分类器。支持…

presto 支持regexp_count

一、背景 1、查询regexp_count 函数提示未注册 用户想正则查询特定字符出现次数 function regexp_count not registered 二、调研 1、官网地址&#xff1a; Presto Documentation — Presto 0.284 Documentation 2、regexp_extract_all Regular Expression Functions —…

c++时间复杂度详解

1.基本概念 在计算机科学中&#xff0c;时间复杂性&#xff0c;又称时间复杂度&#xff0c;算法的时间复杂度是一个函数&#xff0c;它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述&#xff0c;不包括这个函数的低阶项和…

【Mybatis系列】Mybatis空值关联

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

PDF.js实现按需分片加载pdf文件

pdf.js实现按需、分片加载pdf文件 1.服务端配置 分片加载的实现是基于 HTTP-RANGE&#xff0c;即服务端的文件接口必须实现了HTTP-RANGE。 服务端文件接口实现HTTP-RANGE&#xff0c;需要服务端添加如下响应头 [{key: "Accept-Ranges",value: "bytes"}…

用Growly Draw for Mac,释放您的创意绘画天赋!

在数字化时代&#xff0c;绘画已经不再局限于传统的纸笔之中。如今&#xff0c;我们可以借助强大的绘画应用软件&#xff0c;将创意化为独特的艺术作品。而Growly Draw for Mac就是一款让您能够快速释放创意、创作精美绘画作品的应用软件。 Growly Draw for Mac是一款专为Mac用…

Ezsql

靶场说明 靶机地址解释&#xff1a; 第一行&#xff1a;目标机器 WEB 服务地址 第二行&#xff1a;目标机器 SSH 地址以及端口 第三行&#xff1a;Check 服务访问地址。 http://99bdd2da-7d5e-4b5c-a7ee-79713b8ecabc.node5.buuoj.cn:8199bdd2da-7d5e-4b5c-a7ee-79713b8ecabc…

十、Three场景实现多个物体的合并

Three场景实现多个物体的合并 目的 产品需求是让物体的光柱墙包含一个多边形的区域,二而我的多边形只能使用原型,方向,多边形。那么再研究的时候就需要将这些多边形合并成为一个形状,那么就行实现了。 原先的图形 如上图,是两个mesh组成的。首先寻找mesh合并的方法。 第…

《TrollStore巨魔商店》TrollStore2安装使用教程支持IOS14.0-16.6.1

TrollStore(巨魔商店) 简单的说就相当于一个永久的免费证书&#xff0c;它可以给你的iPhone和iPad安装任何你想要安装的App软件&#xff0c;而且不需要越狱,不用担心证书签名过期的问题&#xff0c;不需要个人签名和企业签名。 支持的版本&#xff1a; TrollStore安装和使用教…

Ubantu 安装vscode配置c/c++环境

文章目录 安装VSCode注意 snap包冲突 安装C/C编译环境注意 进程锁占用 配置C开发环境安装插件配置tasks.json配置c_cpp_properties.json 配置调试环境配置 launch.json 安装VSCode 方式一&#xff1a;ubantu 软件里面直接安装 方式二&#xff1a;官网下载deb安装包https://cod…

面试Java岗老喜欢盯着JVM问,有那么多项目要调优吗?

面试Java岗老喜欢盯着JVM问&#xff0c;有那么多项目要调优吗&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「Java的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给…

C++ 编程需要什么样的开发环境?

C 编程需要什么样的开发环境&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「C的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#…

资本主义的市场竞争?IBM总监Jerry Chow 谈量子计算的未来

​ 人物介绍&#xff1a;Jerry M.Chow博士在耶鲁大学取得物理博士学位。担任IBM量子系统总监&#xff0c;其研究重点是面向容错量子计算的多量子比特系统。他主要为IBM的量子系统路线图制定战略&#xff0c;与硬件团队领导者一起设定目标研究领域&#xff0c;同时也确保最佳的客…

llvm pass

pass们组合在一起&#xff0c;处理IR 而最后的目标代码生成阶段&#xff0c;会生成另一种MIR&#xff08;Machine IR&#xff09; PassManager管理这些pass pass处理IR之后会改变分析的情况&#xff0c;这些关于IR的信息由 AnalysisManager处理 1、pass &#xff08;1&…

重磅!30余所985高校全面取消博士统考!

2024年博士招生&#xff0c;又有“双一流”高校取消统考。 近日&#xff0c;各大高校正在陆续发布《2024年博士研究生招生简章》&#xff0c;其中南昌大学的博士招生方式引起了广泛关注。据悉&#xff0c;南昌大学将全面实行“申请—考核”制选拔方式&#xff0c;适用于直接攻…

中级职称原来有这么多用处!

中级工程师职称是工程技术人员职称中的一个级别&#xff0c;其作用可能因行业、地区和具体情况而异。一般来说&#xff0c;中级工程师职称具有以下作用&#xff1a; 1. 职业发展&#xff1a;中级工程师职称是工程技术人员职业发展中的一个重要里程碑&#xff0c;它可以证明持证…

大众点评评论采集软件使用教程

导出字段&#xff1a; 店铺ID 评论ID 发布时间 人均消费 评分 详情链接 点赞数 浏览数 评论数 最后更新时间 发布平台 推荐 评论详情 原始评论 图片数 图片链接 用户等级 用户名称 用户头像 VIP 私

“核弹级“攻击队视角下的监管痛点解决方案

痛点分析及解决方案 一、辖区企业资产分散且不透明 - 传统的监管体系中&#xff0c;政府监管单位往往面临着辖区企业资产分散且不透明的问题。 - 企业无法梳理自身资产&#xff0c;上报的资产台账无法涵盖全部自身资产 - 监管单位精力有限&#xff0c;无法保证辖区企业资产台账…