【C++ Primer Plus习题】15.4
大家好,这里是国中之林!
❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看←
问题:
解答:
main.cpp
#include <iostream>
#include "sales.h"
using namespace std;int main()
{double vals1[12] = { 1220,1100,1122,2212,1232,2334,2884,2393,3302,2922,3002,3544 };double vals2[12] = { 12,11,22,21,32,34,28,29,33,29,32,35 };Sales sales1(2011, vals1, 12);LabeledSales sales2("Blogstar", 2012, vals2, 12);cout << "First try block:\n";try{int i;cout << "Year = " << sales1.Year() << endl;for (i = 0; i < 12; i++){cout << sales1[i] << ' ';if (i % 6 == 5)cout << endl;}cout << "Year=" << sales2.Year() << endl;cout << "Label=" << sales2.Label() << endl;for (i = 0; i <= 12; i++){cout << sales2[i] << ' ';if (i % 6 == 5)cout << endl;}cout << "End of try block 1" << endl;}catch (Sales::bad_index&bad){if (typeid(LabeledSales::nbad_index) == typeid(bad)){LabeledSales::nbad_index* p = dynamic_cast<LabeledSales::nbad_index*>(&bad);cout << p->what();cout << "Company:" << p->label_val() << endl;cout << "bad index:" << p->bi_val() << endl;}else if (typeid(Sales::bad_index) == typeid(bad)){cout << bad.what();cout << "bad index:" << bad.bi_val() << endl;}}cout << "\nNext try block:" << endl;try{sales2[2] = 37.5;sales1[20] = 23345;cout << "End of try block 2." << endl;}catch (Sales::bad_index&bad){if (typeid(LabeledSales::nbad_index) == typeid(bad)){LabeledSales::nbad_index* p = dynamic_cast<LabeledSales::nbad_index*>(&bad);cout << p->what();cout << "Company:" << p->label_val() << endl;cout << "bad index:" << p->bi_val() << endl;}else if (typeid(Sales::bad_index) == typeid(bad)){cout << bad.what();cout << "bad index:" << bad.bi_val() << endl;}}cout << "done\n";return 0;
}
sales.h
#pragma once
#include <iostream>
#include <stdexcept>
#include <string>
using namespace std;class Sales
{
public:enum{MONTHS=12};class bad_index :public logic_error{private:int bi;public:explicit bad_index( int ix,const string & s = "Index error int Sales object\n" );int bi_val()const { return bi; }virtual ~bad_index()throw(){}};explicit Sales(int yy = 0);Sales(int yy, const double* gr, int n);virtual ~Sales(){}int Year()const { return year; }virtual double operator[](int i)const;virtual double& operator[](int i);
private:double gross[MONTHS];int year;
};class LabeledSales :public Sales
{
public:class nbad_index :public Sales::bad_index{private:string lbl;public:nbad_index(const string& lb, int ix, const string& s = "Index error in LabeledSales objecrt\n");const string& label_val()const { return lbl; }virtual ~nbad_index()throw() {}};explicit LabeledSales(const string& lb = "none", int yy = 0);LabeledSales(const string& lb, int yy, const double* gr, int n);virtual ~LabeledSales() {}const string& Label()const { return label; }virtual double operator[](int i)const;virtual double& operator[](int i);private:string label;};
sales.cpp
#include "sales.h"Sales::bad_index::bad_index(int ix, const string& s) :logic_error(s), bi(ix)
{}Sales::Sales(int yy)
{year = yy;for (int i = 0; i < MONTHS; ++i)gross[i] = 0;
}Sales::Sales(int yy, const double* gr, int n)
{year = yy;int lim = (n < MONTHS) ? n : MONTHS;int i;for (i = 0; i < lim; ++i)gross[i] = gr[i];for (; i < MONTHS; ++i)gross[i] = 0;
}double Sales::operator[](int i)const
{if (i < 0 || i >= MONTHS)throw bad_index(i);return gross[i];
}double& Sales::operator[](int i)
{if (i < 0 || i >= MONTHS)throw bad_index(i);return gross[i];}LabeledSales::nbad_index::nbad_index(const string& lb, int ix, const string& s) :Sales::bad_index(ix, s)
{lbl = lb;
}LabeledSales::LabeledSales(const string& lb, int yy) :Sales(yy)
{label = lb;
}LabeledSales::LabeledSales(const string& lb, int yy, const double* gr, int n) :Sales(yy, gr, n)
{label = lb;
}double LabeledSales::operator[](int i)const
{if (i < 0 || i >= MONTHS)throw nbad_index(Label(), i);return Sales::operator[](i);
}double& LabeledSales::operator[](int i)
{if (i < 0 || i >= MONTHS)throw nbad_index(Label(), i);return Sales::operator[](i);
}
运行结果:

考查点:
- 异常
- 继承
- []运算符重载
- dynamic_cast
2024年9月12日21:33:42
相关文章:
【C++ Primer Plus习题】15.4
大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream> #include "sales.h"…...
Pipeline Scheduling(UVA 690)
网址如下: Pipeline Scheduling - UVA 690 - Virtual Judge (vjudge.net) (第三方网站) 噫,好!我中了! 这题还是有点折磨的,刚开始我只会递归下一个程序运行的时间(范围在1~n&…...
萤石举办2024清洁机器人新品发布会 多维智能再造行业标杆
导言:作为智慧生活守护者,萤石今日发布了两款清洁机器人,AI扫拖机器人RS20 Pro Ultra 和AI洗地机器人RX30 Max ,标志着萤石在智能清洁领域的全新突破。RS20 Pro Ultra基于CutFree 2.0内切割滚刷专利,有效解决毛发缠绕难…...
企业级Ansible自动化运维项目案例:实战与技巧
在企业级的IT运维中,自动化已成为提高效率、减少人为错误和保证服务一致性的关键手段。Ansible作为一种简单但功能强大的自动化工具,广泛应用于配置管理、应用程序部署、任务自动化和IT编排。本文将通过一个企业级的Ansible自动化运维项目案例࿰…...
JavaSE-易错题集-005
1. 下面有关java object默认的基本方法,说法错误的是? A equals(Object obj) 指示某个其他对象是否与此对象“相等” B copy() 创建并返回此对象的一个副本 C wait() 导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyA…...
决策树模型的可解释性
我们首先介绍一下一个比较简单的机器学习模型,其在设计之初就已经有了比较好的可 解释性,这个模型就是决策树模型。决策树相较于线性的模型,它是更强大的模型。而决策树 的另外一个好处,相较于深度学习它具有良好的可解释性。比如…...
2. geoserver 发布postgis数据
1. 新建工作空间 2. 新建存储空间 3. 新建图层 4. 切片图层 5. 查看发布的图层...
【渗透测试】——Brup Suite平台安装
📖 前言:Burp Suite 是用于攻击 web 应用程序的集成平台。它包含了许多Burp工具,这些不同的burp工具通过协同工作,有效的分享信息,支持以某种工具中的信息为基础供另一种工具使用的方式发起攻击。 它主要用来做安全性…...
redis:全局ID生成器实现
问题:订单id不能设置为自增长的原因 id的规律性太明显, 受订单的数据量限制:若数据量过大,需要多张表存储,若自增会导致id重复 全局ID生成器:在分布式系统中用来生成全局唯一ID的工具 ID的组成: 符号位…...
jenkins工具的介绍和gitlab安装
使用方式 替代手动,自动化拉取、集成、构建、测试;是CI/CD持续集成、持续部署主流开发模式中重要工具;必须组件 jenkins-gitlab,代码公共仓库服务器(至少6G内存);jenkins-server,需…...
【从0开始在CentOS 9中安装Tomcat】
从0开始在CentOS 9中安装Tomcat 1. 安装 Java(Tomcat 需要 Java 环境)2. 下载并安装 Tomcat3. 配置 Tomcat4. 启动 Tomcat5. 配置 Tomcat 为开机自启动6. 验证 Tomcat 运行状态7. 允许防火墙开放 8080 端口(可选) 要在 Linux 上安…...
学习Vue3的第五天
目录 API对比 shallowRef 与 shallowReactive 对比总结 使用场景 总结 readonly 与 shallowReadonly 对比总结 使用场景 总结 toRaw 与 markRaw 对比总结 使用场景 总结 customRef 应用场景 总结 示例:异步数据获取 Vue3新组件 Teleport Suspen…...
Python 类中使用 cursor.execute() 时语法错误的解决方法
在 Python 类中使用 cursor.execute() 时,出现语法错误(如 SyntaxError 或 SQL 语法相关错误)通常是因为 SQL 语句格式不正确、占位符使用不当,或参数传递方式不符合预期。以下是解决此类问题的常见方法和建议。 问题背景 在 Pyt…...
怎么选择靠谱AI论文生成工具?看完我的试用都会明白!
2024年上半年开始AI论文写作工具开始火了,层出不穷!作为一个经常需要写论文的懒人,我非常好奇这些AI工具的实际效果到底怎么样?为了测试不同工具的实力,我对他们都进行了试用,发现了一些意想不到的结果....…...
Java 每日一刊(第3期):Hello World
文章目录 前言Hello World程序是如何执行的Hello World 里有什么本期小知识 阳光洒进窗台,花香伴着书香,静谧而温暖,仿佛时光停驻。 前言 这里是分享 Java 相关内容的专刊,每日一更。 本期将为大家带来以下内容: “…...
git一个项目关联多个远程仓库
一行代码就行: git remote set-url origin [想要关联的远程仓库地址]想要关联哪个就切换哪个 或者不用每次切换,集中管理: Git->Manage Remotes 点击“”,填入Name和想要关联的远程库地址 每次push时执行命令 git push [为…...
衡石分析平台使用手册-部署前准备
部署前准备 1.根据版本获取 k8s 部署配置文件。 安装版本部署文件组件依赖3.xk8s-yamlmetadb、engine、hengshi zookeeper4.0.xk8s-yamlmetadb、engine、hengshi、minio、zookeeper4.1.xk8s-yamlmetadb、engine、hengshi、minio、redis、flink、zookeeper4.2.xk8s-yamlmeta…...
AI大模型全栈工程师课程笔记 - RAG 检索增强生成
文章目录 \1. RAG\2. 构建流程 2.1 文档加载与切分2.2 传统检索引擎2.3 LLM接口封装2.4 构建prompt \3. 向量检索\4. 向量数据库\5. 基于向量检索的RAG\6. 进阶知识 6.1 文本分割粒度6.2 检索后再排序6.3 测试 1. RAG RAG(Retrieval Augmented Generation&#…...
【时时三省】c语言例题----华为机试题<进制转换>
山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 1,题目 HJ5 进制转换 描述 写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。 数据范围:保证结果在 1≤n≤231−1 1≤n≤231−1…...
根据NVeloDocx Word模板引擎生成Word(四)
前面介绍了《E6低代码开发平台》的Word模版引擎NVeloDocx,实现了表单的基本字段、子表、单张图片、二维码、条形码怎么基于NVelocity脚本输出到Word文件,都是些比较简单且常用的需求。 本篇介绍怎么基于NVeloDocx在Word中插入图表,目前只支持…...
番茄小说下载器:5种格式+Web界面打造你的私人数字图书馆终极指南
番茄小说下载器:5种格式Web界面打造你的私人数字图书馆终极指南 【免费下载链接】fanqienovel-downloader 下载番茄小说 项目地址: https://gitcode.com/gh_mirrors/fa/fanqienovel-downloader 你是否曾因网络信号不佳而被迫中断精彩的小说阅读?是…...
哔哩下载姬完整指南:三步快速掌握B站视频批量下载技巧
哔哩下载姬完整指南:三步快速掌握B站视频批量下载技巧 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等&#…...
终极英雄联盟工具箱:5个核心功能快速提升你的游戏体验
终极英雄联盟工具箱:5个核心功能快速提升你的游戏体验 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari是一款专为英雄…...
AI工作流编排框架aiflows:构建模块化、可维护的多智能体系统
1. 项目概述:当AI工作流成为团队协作的“操作系统”如果你和我一样,在过去几年里尝试过将多个大语言模型(LLM)串联起来,构建一个能处理复杂任务的智能体(Agent)或工作流,那你一定经历…...
SAP ECC6 2027年停服倒计时:中小企业主必看的4条务实出路与成本分析
SAP ECC6 2027年停服倒计时:中小企业主必看的4条务实出路与成本分析 当2027年的钟声敲响时,全球数十万家企业将面临一个关键抉择:是继续坚守已有二十年历史的SAP ECC6系统,还是踏上数字化转型的新征程?对于资源有限的中…...
用户为中心交互系统工程在智能制造系统中应用
用户为中心交互系统工程(User-Centered Interaction System Engineering, UCI-SE)是智能制造与 AI 时代下,重塑传统工业软件(如 MES、ERP、SCADA)和硬件控制终端(如 HMI、具身智能教导盒)的核心…...
如何用智能标记插件3秒筛选最新招聘岗位:开源求职助手完整指南
如何用智能标记插件3秒筛选最新招聘岗位:开源求职助手完整指南 【免费下载链接】NewJob 一眼看出该职位最后修改时间,绿色为2周之内,暗橙色为1.5个月之内,红色为1.5个月以上 项目地址: https://gitcode.com/GitHub_Trending/ne/…...
3小时从零掌握yuzu:在PC上畅玩任天堂Switch游戏的完整指南
3小时从零掌握yuzu:在PC上畅玩任天堂Switch游戏的完整指南 【免费下载链接】yuzu 任天堂 Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu 想在Windows、Linux或Android设备上免费体验任天堂Switch游戏吗?yuzu模拟器正是你…...
Excel高手私藏技巧:用LOOKUP和FIND函数自动归类文本,快速整理海量调研问卷和评论关键词
Excel文本归类实战:用LOOKUPFIND构建智能关键词标签系统 当面对数千条开放式问卷反馈时,市场分析师小张正在为如何高效归类"用户最关注的手机功能"发愁。传统人工阅读标注不仅耗时,还容易因主观判断产生偏差。而Excel中一组被低估的…...
高效检索句子:基于 SQLite FTS5 的关键词快速匹配方案
std::filesystem::replace_extension 仅修改路径对象的逻辑表示,不更改磁盘文件;真正改后缀需配合 fs::rename,且须检查目标是否存在、文件是否为常规文件,并注意跨卷、文件占用等系统限制。std::filesystem::replace_extension 为…...








