首页 > 编程语言 >程序设计实验5

程序设计实验5

时间:2024-12-06 16:37:28浏览次数:4  
标签:real const cout Complex 实验 程序设计 include string

实验任务1

实验任务2

1.

out << left; // 设置对齐方式为左对齐

out << item.rb << endl // 输出 `item.rb`

<< setw(15) << "售价:" << item.sales_price << endl // 输出售价

<< setw(15) << "销售数量:" << item.sales_amount << endl // 输出销售数量

<< setw(15) << "营收:" << item.revenue; // 输出营收

2.

利用sort函数sort(sales_lst.begin(), sales_lst.end(), compare_by_amount);

3.

创建一个私有成员对象Book rb;

实验任务3

 1 #pragma once
 2 #include<string>
 3 using namespace std;
 4 
 5 
 6 class MachinePets {
 7 protected:
 8 string nickname; // 昵称
 9 public:
10 // 带参数的构造函数
11 MachinePets(const string &s) : nickname(s) {}
12 
13 // 纯虚函数,提供宠物叫声的统一接口
14 virtual string talk() const=0;
15 
16 // 获取昵称的方法
17 string get_nickname() const { return nickname; }
18 
19 // 虚析构函数,确保派生类对象正确销毁
20 virtual ~MachinePets() {}
21 };
22 
23 // 宠物猫类
24 class PetCats : public MachinePets {
25 public:
26 // 带参数的构造函数
27 PetCats(const string &s) : MachinePets(s) {}
28 
29 // 实现宠物猫的叫声
30 string talk() const override {
31 return "miao wu~";
32 }
33 };
34 
35 // 宠物狗类
36 class PetDogs : public MachinePets {
37 public:
38 // 注意:这里的构造函数名应该是 PetDogs 而不是 PetCats
39 PetDogs(const string &s) : MachinePets(s) {}
40 
41 // 实现宠物狗的叫声
42 string talk() const override {
43 return "wang wang~";
44 }
45 };
 1 #include <iostream>
 2 #include <vector>
 3 #include "pets.hpp"
 4 
 5 void test() {
 6     using namespace std;
 7 
 8     vector<MachinePets *> pets;
 9 
10     pets.push_back(new PetCats("miku"));
11     pets.push_back(new PetDogs("da huang"));
12 
13     for(auto &ptr: pets)
14         cout <<ptr->get_nickname() << " says " << ptr->talk() << endl;
15 }
16 
17 int main() {
18     test();
19 }

实验任务4

 1 #pragma once
 2 
 3 #ifndef FILM_HPP
 4 #define FILM_HPP
 5 
 6 #include<iostream>
 7 #include<string>
 8 #include<iomanip>
 9 
10 using namespace std;
11 
12 class Film {
13 private:
14     string name;
15     string director;
16     string country;
17     int year;
18 public:
19     Film() {}
20     Film(const string& Name, const string& Director, const string& Country, const int& Year)
21         :name(Name), director(Director), country(Country), year(Year) {}
22 
23 
24     friend bool compare_by_year(const Film& f1, const Film& f2);
25     friend ostream& operator<<(ostream& out, const Film& f);
26     friend istream& operator>>(istream& in, Film& f);
27 
28 };
29 
30 istream& operator>>(istream& in, Film& f) {
31     cout << "录入片名:"; cin >> f.name;
32     cout << "录入导演:"; cin >> f.director;
33     cout << "录入制片国家/地区:"; cin >> f.country;
34     cout << "录入上映年份:"; cin >> f.year;
35     return in;
36 }
37 
38 ostream& operator<<(ostream& out, const Film& f) {
39 
40     out << left << setw(12) << f.name << setw(12) << f.director
41         << setw(12) << f.country << setw(12) << f.year;
42     return out;
43 }
44 
45 bool compare_by_year(const Film& f1, const Film& f2) {
46     return f1.year < f2.year;
47 }
48 
49 #endif  //FILM_HPP
50 #pragma once
 1 #include "film.hpp"
 2 #include <iostream>
 3 #include <string>
 4 #include <vector>
 5 #include <algorithm>
 6 
 7 void test() {
 8     using namespace std;
 9 
10     int n;
11     cout << "输入电影数目: ";
12     cin >> n;
13 
14     cout << "录入" << n << "部影片信息" << endl;
15     vector<Film> film_lst;
16     for (int i = 0; i < n; ++i) {
17         Film f;
18         cout << string(20, '-') << "第" << i + 1 << "部影片录入" << string(20, '-') << endl;
19         cin >> f;
20         film_lst.push_back(f);
21     }
22 
23     // 按发行年份升序排序
24     sort(film_lst.begin(), film_lst.end(), compare_by_year);
25 
26     cout << string(20, '=') + "电影信息(按发行年份)" + string(20, '=') << endl;
27     for (auto& f : film_lst)
28         cout << f << endl;
29 }
30 
31 int main() {
32     test();
33 }

实验任务5

 1 #pragma once
 2 
 3  #ifndef COMPLEX_HPP
 4  #define COMPLEX_HPP
 5 
 6  #include <iostream>
 7 
 8  template < typename T>
 9  class Complex {
10  private:
11          T real;
12          T imag;
13     
14  public:
15          // 默认构造函数
16              Complex(T r = 0, T i = 0) : real(r), imag(i) {}
17     
18              // 拷贝构造函数
19              Complex(const Complex & other) : real(other.real), imag(other.imag) {}
20     
21              // 获取实部
22              T get_real() const { return real; }
23     
24              // 获取虚部
25              T get_imag() const { return imag; }
26     
27              // += 运算符重载
28              Complex & operator+=(const Complex & other) {
29                  real += other.real;
30                  imag += other.imag;
31                  return *this;
32         
33     }
34     
35              // + 运算符重载
36              Complex operator+(const Complex & other) const {
37                  return Complex(real + other.real, imag + other.imag);
38         
39     }
40     
41              // == 运算符重载
42              bool operator==(const Complex & other) const {
43                  return real == other.real && imag == other.imag;
44         
45     }
46     
47              // 流插入运算符重载
48             friend std::ostream & operator<<(std::ostream & os, const Complex & c) {
49                  os << c.real;
50                  if (c.imag >= 0)
51                          os << " + " << c.imag << "i";
52                  else
53                         os << " - " << -c.imag << "i";
54                  return os;
55         
56     }
57     
58             // 流提取运算符重载
59              friend std::istream & operator>>(std::istream & is, Complex & c) {
60                  is >> c.real >> c.imag;
61                  return is;
62         
63     }
64     
65 };
66 
67  #endif // COMPLEX_HPP
 1 #include "Complex.hpp"
 2 #include <iostream>
 3 
 4 using std::cin;
 5 using std::cout;
 6 using std::endl;
 7 using std::boolalpha;
 8 
 9 void test1() {
10     Complex<int> c1(2, -5), c2(c1);
11 
12     cout << "c1 = " << c1 << endl;
13     cout << "c2 = " << c2 << endl;
14     cout << "c1 + c2 = " << c1 + c2 << endl;
15 
16     c1 += c2;
17     cout << "c1 = " << c1 << endl;
18     cout << boolalpha << (c1 == c2) << endl;
19 }
20 
21 void test2() {
22     Complex<double> c1, c2;
23     cout << "Enter c1 and c2: ";
24     cin >> c1 >> c2;
25     cout << "c1 = " << c1 << endl;
26     cout << "c2 = " << c2 << endl;
27 
28     cout << "c1.real = " << c1.get_real() << endl;
29     cout << "c1.imag = " << c1.get_imag() << endl;
30 }
31 
32 int main() {
33     cout << "自定义类模板Complex测试1: " << endl;
34     test1();
35 
36     cout << endl;
37 
38     cout << "自定义类模板Complex测试2: " << endl;
39     test2();
40 }

实验任务6

 

标签:real,const,cout,Complex,实验,程序设计,include,string
From: https://www.cnblogs.com/CK1NG/p/18582240

相关文章

  • HNU信息安全数学基础实验四
    一、实验内容若p是奇素数,编程实现:1)计算整数a模p的指数;2)计算模p的所有原根g;3)设置一个较大的p(十进制8-20位),分析并优化算法性能;对算法优化过程及计算结果进行讨论和分析;要求:分步输出,有中间结果,最好窗口化。二、实验目标1.掌握整数模运算的基本原理,熟悉如何计算一个整数在......
  • 实验5
    任务1: 1_1:#include<stdio.h>#defineN5voidinput(intx[],intn);voidoutput(intx[],intn);voidfind_min_max(intx[],intn,int*pmin,int*pmax);intmain(){inta[N];intmin,max;printf("录入%d个数据:\n",N);......
  • 《DNK210使用指南 -CanMV版 V1.0》第四十二章 人脸口罩佩戴检测实验
    第四十二章人脸口罩佩戴检测实验1)实验平台:正点原子DNK210开发板2)章节摘自【正点原子】DNK210使用指南-CanMV版V1.03)购买链接:https://detail.tmall.com/item.htm?&id=7828013987504)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/k210/ATK-DNK210.html......
  • 2024-2025-1 20241322 《计算机基础与程序设计》第十一周学习总结
    2024-2025-120241322《计算机基础与程序设计》第十一周学习总结作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK11这个作业的目标①计算机网络②网......
  • 2024-2025-1 20241401 《计算机基础与程序设计》 第十一周学习总结
    班级链接2024计算机基础与程序设计作业要求第十一周作业作业目标①计算机网络②网络拓扑③云计算④网络安全⑤Web⑥HTML,CSS,Javascript⑦XML教材学习内容总结《计算机科学概论》第15、16章第15章计算机网络基础网络类型局域网(LAN):通常覆盖范围较小......
  • 2024-2025-1 20241407《计算机基础与程序设计》第十一周学习总结
    作业信息这个作业属于哪个课程2024-2025-1计算机基础与程序设计这个作业要求在哪里2024-2025-1计算机基础与程序设计第十一周作业这个作业的目标计算机网络,网络拓扑,云计算,网络安全,Web,HTML,CSS,Javascript,XML作业正文本博客教材学习内容总结《计算机科学概论......
  • 软件测评实验室如何获得CNAS认可,政策、建体系、质量活动...
    一、全面了解软件测评实验室认可政策除通用性规范文件外,在软件测试领域还需要参照CNAS-CL01-A019《检测和校准实验室能力认可准则在软件检测领域的应用说明》。二、建立CNAS软件测评实验室质量管理体系1、确定组织结构2、制定CNAS软件测试实验室质量方针和质量目标3、明确......
  • C语言实验 二维数组
    时间:2024.12.6一、实验7-1矩阵运算代码 #include<stdio.h>intmain(){inta[20][20]={0};intn,i,j;intsum=0;scanf("%d",&n);for(i=0;i<n;i++){for(j=0;j<n;j++){scanf("%d",&a[i][j])......
  • 实验5
    task.1.1代码:#include<stdio.h>#defineN5voidinput(inta[],intn);voidoutput(inta[],intn);voidfind_max_min(inta[],intn,int*pmax,int*pmin);intmain(){inta[N];intmax,min;printf("输入:\n");input(a,N);......
  • 20222419 2021-2022-2 《网络与系统攻防技术》实验八实验报告
    1.实验内容(1)Web前端HTML能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。(2)Web前端javascipt理解JavaScript的基本功能,理解DOM。在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户名”......