实验2 数组、指针与C++标准库
实验任务5:
Info.hpp
#ifndef INFO_HPP
#define INFO_HPP #include<iostream>
#include<iomanip>
#include<string> using namespace std; class Info{
public:
Info(string nickname_, string contact_, string city_, int n_):
nickname(nickname_), contact(contact_), city(city_), n(n_){}
void print() const;
private:
string nickname;
string contact;
string city;
int n;
}; void Info::print() const{
cout << "称呼:\t\t" << nickname <<endl;
cout << "联系方式:\t" << contact << endl;
cout << "所在城市:\t" << city << endl;
cout << "预定人数:\t" << n << endl;
} #endif
task5.cpp
#include "Info.hpp"
#include<iostream>
#include<vector> int main(){ using namespace std; vector<Info> audience_info_list;
string nickname;
string contact;
string city;
int n;
int total = 0;
cout << "录入信息:" << endl;
cout << endl;
cout << "称呼/昵称, 联系方式(邮箱/手机号), 所在城市, 预定参加人数" << endl;
const int capacity = 100;
while(cin>>nickname>>contact>>city>>n){
total += n;
if(total>capacity){
cout << "对不起, 只剩" << capacity-(total-n) << "个位置." << endl;
cout << "1. 输入u, 更新(update)预定信息" << endl;
cout << "2. 输入q, 退出预定" << endl;
cout << "你的选择: ";
total -= n;
char flag;
cin >> flag;
if(flag == 'u'){
continue;
}
else if(flag == 'q'){
break;
}
}
Info info(nickname, contact, city, n);
audience_info_list.push_back(info);
if(total == 100){
break;
}
}
cout<<endl;
cout << "截至目前,一共有" << total << "位听众预定参加.预定听众信息如下:" << endl;
for(vector<Info>::iterator it = audience_info_list.begin(); it != audience_info_list.end(); it++)
it->print();
}
运行测试结果:


实验任务6:
textcoder.hpp
#ifndef TEXTCODER
#define TEXTCODER #include<iostream>
#include<string> using namespace std; class TextCoder{
public:
TextCoder(string text_):text(text_){}
string encoder();
string decoder(); private:
string text;
}; string TextCoder::encoder(){
for(string::iterator it = text.begin(); it!=text.end(); it++){
if (*it >= 118&&*it<=122)
*it -= 21;
else if (*it >= 86 && *it <= 90)
*it -= 21;
else if((*it>=97&&*it<=117)||(*it>=65&&*it<=85))
*it += 5;
}
return text;
} string TextCoder::decoder()
{
string::iterator it = text.begin();
for (;it != text.end();it++)
{
if (*it <= 69&&*it>=65)
*it += 21;
else if (*it >= 97 && *it <= 101)
*it += 21;
else if((*it>=70&&*it<=90)||(*it>=102&&*it<=122))
*it -= 5;
}
return text;
} #endif
task6.cpp
#include "textcoder.hpp"
#include <iostream>
#include <string> int main()
{
using namespace std; string text, encoded_text, decoded_text; cout << "输入英文文本: ";
while (getline(cin, text))
{
encoded_text = TextCoder(text).encoder(); // 这里使用的是临时无名对象
cout << "加密后英文文本:\t" << encoded_text << endl; decoded_text = TextCoder(encoded_text).decoder(); // 这里使用的是临时无名对象
cout << "解密后英文文本:\t" << decoded_text << endl;
cout << "\n输入英文文本: ";
}
}
运行测试结果:

实验2 数组、指针与C++标准库的更多相关文章
- C++标准库(体系结构与内核分析)(侯捷第二讲)
一.OOP和GP的区别(video7) OOP:面向对象编程(Object-Oriented programming) GP:泛化编程(Generic programming) 对于OOP来说,我们要 ...
- C++标准库分析总结(四)——<Vector、Array、Forward_list设计原则>
本节主要总结标准库Vector和Array的设计方法和特性以及相关迭代器内部特征 1.Vector 1.1 Vector 内部实现 Vector是自增长的数组,其实在标准库中没有任何一种容器能原地扩充 ...
- c/c++ 标准库 智能指针( smart pointer ) 是啥玩意儿
标准库 智能指针( smart pointer ) 是啥玩意儿 一,为什么有智能指针??? c++程序员需要自己善后自己动态开辟的内存,一旦忘了释放,内存就泄露. 智能指针可以帮助程序员"自 ...
- 怎么使用C++标准库来实现二维数组
在编程里,像界面布局是二维的,那么常常使用二维数组来表示界面的元素,那么就需要使用二维的数组,在现在C++肯定是以标准库为基础了,不再使用C的二维数组,那么怎么样做呢?下面就使用vector来实现二维 ...
- C++ 标准库智能指针
整理一下c++中shared_ptr,weak_ptr,unique_ptr三种指针的使用案例和注意事项,让程序资源更加案例,在标准库中,需要包含<memory>,在boost库中, 一. ...
- 标准库中的智能指针shared_ptr
智能指针的出现是为了能够更加方便的解决动态内存的管理问题.注:曾经记得有本书上说可以通过vector来实现动态分配的内存的自动管理,但是经过试验,在gcc4.8.5下是不行的.这个是容易理解的,vec ...
- KEIL-C下数组指针与指针数组实验
http://blog.csdn.net/men_wen/article/details/52694069 第一个: 数组指针的小实验 用指针传递参数 结果: 第二个: 数组指针实验 定义一个指针 ...
- C语言的本质(24)——C标准库之输入与输出(下)
4.读写二进制文件 C语言还提供了用于整块数据的读写函数.可用来读写一组数据,如一个数组元素,一个结构变量的值等. 读数据块函数调用的一般形式为: fread(buffer,size,count,fp ...
- C++著名类库和C++标准库介绍
C++著名类库 1.C++各大有名库的介绍——C++标准库 2.C++各大有名库的介绍——准标准库Boost 3.C++各大有名库的介绍——GUI 4.C++各大有名库的介绍——网络通信 5.C++各 ...
- PHP SPL(PHP 标准库)
一.什么是SPL? SPL是用于解决典型问题(standard problems)的一组接口与类的集合.(出自:http://php.net/manual/zh/intro.spl.php) SPL, ...
随机推荐
- 结构体struct
在 C# 中,结构体是值类型数据结构.它使得一个单一变量可以存储各种数据类型的相关数据.struct 关键字用于创建结构体. 结构体是用来代表一个记录.假设您想跟踪图书馆中书的动态.您可能想跟踪每本书 ...
- shr8.2视图配置注意点
- CompletableFuture的使用
1 List<List<String>> subList = CommonUtils.splitList(pendingIds, 500);private static fin ...
- Linux下的zip和tar压缩解压缩命令详解
一.zip压缩工具 zip的压缩包在windows和linux中都比较常用,它可以压缩目录和文件,压缩时录时,需要指定目录下的文件.zip后面先跟目标文件名,即压缩后得自定义压缩包名,然后跟要压缩的文 ...
- [2007年NOIP普及组] Hanoi双塔问题
给定A.B.C三根足够长的细柱,在A柱上放有2n个中间有孔的圆盘,共有n个不同的尺寸,每个尺寸都有两个相同的圆盘,注意这两个圆盘是不加区分的(下图为n=3的情形).现要将 这些国盘移到C柱上,在移动过 ...
- mybatis-generator 生成实体类,表字段类型有text,longtext,生成**WithBLOBs解决办法
modeType="flat" 其他参数请查询文档http://www.youbiji.cn/doc/mybatis/xml-table.html
- flutter TextField 使用prefixIcon图标和文字间距问题
可以看到使用prefixIcon图标就出现间距问题.网上看了很多文章,好像是没有什么好的解决办法,也有可能是太简单了,别人懒的发(哭笑). 我把我知道的方法写出来吧 decoration: Input ...
- 一次讲清promise
此文章主要讲解核心思想和基本用法,想要了解更多细节全面的使用方式,请阅读官方API 这篇文章假定你具备最基本的异步编程知识,例如知道什么是回调,知道什么是链式调用,同时具备最基本的单词量,例如page ...
- js中宏任务,微任务,异步,同步,执行的顺序
[微任务]包括:Promise , process.nextTick() *node.js里面的 [宏任务]包括:整体代码script, setTimeout setInterval ...
- 记录一个二级域名绑定动态ip的操作
家里的路由器,还有一台路由器需要登录,以前一直用f3322的动态域名绑定,感觉使用也还可以,但最近几个月,只要是f3322.com的二级域名全部被chrome标注为危险. 所以准备换一个免费的二级域名 ...