c++ chap1 to chap 3
#ifndef MAIN_H_INCLUDED
#define MAIN_H_INCLUDED
struct Course
{
int id;
std::string name;
};
const int LEN = 7;
void print_help();
void print_all_course(Course* courses[LEN]);
void print_course_count(Course* courses[LEN]);
void print_maxlength(Course* courses[LEN]);
bool remove_last_course(Course* courses[LEN]);
#endif // MAIN_H_INCLUDED
#include <iostream>
#include "main.h"
using namespace std;
int main()
{
Course* courses[LEN] =
{
new Course{1,"Linux"},
new Course{2,"C++"},
new Course{3,"HTML"},
new Course{4,"NodeJS"},
new Course{5,"Shell"},
new Course{6,"Python"},
new Course{7,"C#"}
};
while(true)
{
char input = std::cin.get();
switch(input)
{
case '0':
print_help();
break;
case '1':
print_all_course(courses);
break;
case '2':
print_course_count(courses);
break;
case '3':
print_maxlength(courses);
break;
case '4':
{
bool ret = remove_last_course(courses);
if(ret)
print_all_course(courses);
else
cout << "there is no course any more !";
break;
}
case '5':
goto exit;
break;
}
}
exit:
cout << "bye !";
return 0;
}
void print_help()
{
cout << "操作命令输入0,打印出程序帮助信息,即每个操作命令的作用" << endl;
cout << "操作命令输入1,打印出程序中存储的所有课程ID和课程名" << endl;
cout << "输入2,打印出课程数量" << endl;
cout << "输入3,打印出名字最长的课程信息,如果有多个相同长度的课程名请都打印出" << endl;
cout << "输入4,删除最后一个课程,如果没有课程需要返回错误信息" << endl;
cout << "输入5,退出程序" << endl;
}
void print_all_course(Course* courses[LEN])
{
for(int i = 0; i < LEN; i++)
{
if(courses[i] != NULL)
cout << "id : " << (*courses[i]).id << "; name : " << (*courses[i]).name << endl;
}
}
void print_course_count(Course* courses[LEN])
{
int num;
for(num = 0; num < LEN; num++)
{
if(courses[num] == NULL)
break;
}
cout << "the count of course is : " << num << endl;
}
void print_maxlength(Course* courses[LEN])
{
int maxLen = 0;
for(int i = 0; i < LEN; i++)
{
if((*courses[i]).name.length() > maxLen)
maxLen = (*courses[i]).name.length();
}
cout << "the longest name of the courses : " << endl;
for(int i = 0; i < LEN; i++)
{
if((*courses[i]).name.length() == maxLen)
cout << (*courses[i]).name << endl;
}
}
bool remove_last_course(Course* courses[LEN])
{
for(int i = LEN - 1 ; i >= 0 ; i--)
{
if(courses[i] != NULL)
{
delete(courses[i]);
courses[i] = NULL;
return true;
}
}
return false;
}
c++ chap1 to chap 3的更多相关文章
- CHAP算法C++实现
CHAP是一种挑战响应式协议. CHAP全称为:Challenge Handshake Authentication Protocol. CHAP密码 = 一个字节的标识符 + MD5(一个字节的标识 ...
- 详解eNSP下的PPP之MP、PAP/CHAP认证实验配置
一.PPP MP实验(用虚拟模板配置) 1.拓扑图
- CHAP认证原理
整个过程就是PPP协商过程,分三步:LCP.认证.NCP. 一 协议概述 PPP包含以下两个层次的协议: ·链路控制协议(LCP):负责建立.配置和测试数据链路连接 ·网络控制协议(NCP):负责建立 ...
- pap与chap协议
1.pap:直接在网络上发送密码明文 2.chap: 网络上发送的是密码的密文;server给client发一段随机数(challenge),client利用随机数对密码进行加密,将用户名和加密后的密 ...
- PPP中的PAP和CHAP的区别
PAP PAP是简单认证,明文传送,客户端直接发送包含用户名/口令的认证请求,服务器端处理并回应. CHAP CHAP是加密认证,先由服务器端给客户端发送一个随机码 challenge,客户端根据 c ...
- 神州数码广域网PPP封装CHAP认证配置
实验要求:掌握PPP封装协议下的CHAP认证 拓扑如下 R1 enable 进入特权模式 config 进入全局模式 hostname R1 修改名称 interface s0/1 进入端口 ip a ...
- Chap1:全景图[Computer Science Illuminated]
参考书目:Dale N . 计算机科学概论(原书第5版)[M]. 机械工业出版社, 2016 from library Chap1:全景图 1.1计算系统 1.2计算的历史 1.3计算工具与计算学科 ...
- CHAP认证(双向)
实验要求:掌握CHAP认证配置 拓扑如下: R1enable 进入特权模式configure terminal 进入全局模式hostname R1 设置主机名 interface s0/0/0 ...
- PPP或PPPOE身份验证PAP和CHAP
PPP或PPPOE都支持身份验证,有两种验证方式:PAP和CHAP. PAP,Passwd Authentication Protocol,密码验证协议,以客户端明文方式传递用户名和密码,服务器和本省 ...
随机推荐
- Modern Operating Systems(Ⅰ)——2014.12.15
进程 进程模型 进程就是一个正在执行的程序的实例 值得注意的是,若一个程序运行了两遍,则算作两个进程 创建进程 在通用系统中,有四种主要事件导致进程的创建 ①系统的初始化 ②执行了 正在 ...
- 服务器控件中使用<%#...>, JS和html控件中使用<%=...>
//在服务器控件的属性中,需要用<%#...>来绑定其他控件的ID, 并且要在页面初始方法中,执行Page.DataBind(); <asp:ImageButton ID=" ...
- input[file]标签的accept=”image/*”属性响应很慢的解决办法
转自:http://blog.csdn.net/lx583274568/article/details/52983693 input[file]标签的accept属性可用于指定上传文件的 MIME类型 ...
- try--catch--finally中return返回值执行的顺序(区别)
1.try块中没有抛出异常,try.catch和finally块中都有return语句 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public static int ...
- Excel表格解析
//add by yangwenpei WGCW-144 使用Excel表格导入纸票记录 20161212 start /** * @param fileInputStream * @param co ...
- Promise.race
[Promise.race] 返回最先完成的promise var p1 = new Promise(function(resolve, reject) { setTimeout(resolve, 5 ...
- pooling的原理与Python实现
本文首先阐述pooling所对应的操作,然后分析pooling背后蕴含的一些道理,最后给出pooling的Python实现. 一.pooling所对应的操作 首先从整体上对pooling有一个直观的概 ...
- PHP的版本选择 (转)
PHP的版本选择 http://yubosun.akhtm.com/tech/php-version.htm PHP版本特别多,特别杂,想自己搭一套php的运行环境可不是一件容易的事,稍不留神就遇到一 ...
- FMDB中 databaseWithPath 的使用问题
阅读fmdb的源码文件(下载地址http://github.com/ccgus/fmdb)会发现下面一段注释,里面提到的创建数据库的方法也在很多博客中被引用,但是跑代码的时候发现,文件并不会像文档中所 ...
- 简单的通用TreeView(WPF)
工作中要为很多类创建TreeView, 很多时候仅仅是因为要显示字段不同, 就得Ctrl+C.Ctrl+V复制一份几乎相同的代码, 这难免让人生厌, 于是希望像泛型集合的扩展方法那样, 可以在使用的时 ...