C++ vector和stack入门习题(采用排序)
- 编写一个 C++ 程序,将正实数读入一个向量(以随机顺序)。 用一个
尾随值 -1。 将数字按升序排序并显示排序后的数字。
您的程序必须包括以下两个功能:
void sort(vector<float> & v);
void display(vector<float> & v);
Solution to Q1:
#include <iostream>
#include <vector>
using namespace std;
vector<float> numbers;
void sort(vector<float> & v);
void display(vector<float> & v);
int main() {float temp;temp = 99.9; // just to start the loopwhile (temp > 0.0) {cout << "Enter a positive real number (-1 to stop) ";cin >> temp;if (temp > 0.0) {numbers.push_back(temp);}}sort(numbers);display(numbers);
}
void sort(vector<float> & v) {int total, pass, i;float temp;total = v.size();for (pass = 0; pass < total; pass++) {for (i = 0; i < total - 1; i++) {if (v[i] > v[i+1]) {temp = v[i];v[i] = v[i+1];v[i+1] = temp;}}}
}
void display(vector<float> & v) {int total, i;total = numbers.size();for (i = 0; i < total; i++) {cout << numbers[i] << ", ";}cout << endl;
}
- 在上面的排序程序中,将排序函数的第一行更改为:
void sort(vector v);
(请注意,您还必须更改函数定义中的第一行。)
不要更改任何其他代码。 运行程序。 解释会发生什么。
Solution to Q2:
向量未排序 – 这由显示屏显示。 发生这种情况是因为排序需要在向量中移动数据,即需要更改向量。 如果要更改参数,则必须使用 call-by-reference 将参数传递给函数。 通过删除 & 符号,我们停止了按引用调用的参数。 额外注意:参数不需要显示为按引用调用。 然而,许多 程序员通常对大型数据结构使用按引用调用,因为这意味着只有一个指针传递给函数。 如果删除 &(将其转换为按值调用),那么整个数据结构将被复制到函数中,这会浪费时间。
- 讨论你需要做什么来改变上面的排序程序,以便它使用数组
而不是向量。 这两个程序之间最大的区别是什么? 这是为了
仅讨论 - 无需实际使用数组编写程序。
Solution to Q3:
使用数组与使用向量非常相似。 您需要定义数组: float[500]; 唯一的最大区别是您需要猜测数组的最大大小。 在示例中 上面,最大大小的猜测是500。这可能不够大......
- 下面的程序输入银行帐户的数据,然后搜索以查找特定银行
帐户。 但是,该程序无法运行,因为其中有 6 个错误。 识别
错误并说明需要做什么来纠正每个错误。
#include <iostream>
#include <cstdio> // for getchar
#include <vector>
using namespace std;
class bank_account {private:int accnumber;string name;float balance;
public:void loaddata();void display();
};
void enteraccounts();
int main() {int search, total, num, i;enteraccounts();cout << "Which account do you want to display? ";cin >> search;total = accounts.size();for (i = 0; i < total; i++) {num = accounts[i].getnum();if (num != search) {accounts[i].display();}}
}
void enteraccounts() {// enter 3 accounts - this could be changedint i;bank_account temp;for (i = 0; i < 3; i++) {temp.loaddata();}
}
//--------------- methods for the bank_account ------------
void loaddata() {cout << "Enter the bank account number ";cin >> accnumber;cout << "Enter the name of the account ";getline(cin, name);cout << "Enter the balance, e.g. 32.45 ";cin >> balance;
}
void bank_account::display() {cout << "Data for Account " << accnumber << endl;cout << "Name: " << name << endl;cout << "Balance: $" << balance << endl << endl;
}
Solution to Q4:
1) method missing from the class, we need:
int getnum() { return accnumber; }
2) vector has not been defined, we need:
vector<bank_account> accounts;
3) incorrect test inside the if statement, it should be:
if (num == search) {4) inside “enteraccounts”, data is not actually placed in the vector. Insert new line:
temp.loaddata();
accounts.push_back(temp);
5) method must have the class name before the function name, as follows:
void bank_account::loaddata() {6) in method “loaddata”, entering a number (accnumber) before a string (name) will cause no data to be
entered for the string. Need to flush the input buffer with an extra line as follows:
cin >> accnumber;
getchar();
5.假设下面的程序有一个函数可以显示堆栈中的所有项(类似于
注释中的“显示和清空”函数)。 写下将显示的值和在
什么顺序。
stack s;
int main() {
s.push(27);
s.push(83);
s.pop();
s.push(56);
– call function here to display all items
}
Solution to Q5:
它将显示 56,然后是 27。56 是放置在堆栈中的最后一个项目,因此它是显示的第一个项目。 83 被放置在堆栈上,但随后被使用 pop 删除
C++ vector和stack入门习题(采用排序)相关推荐
- 【重难点】【Java集合 03】ArrayList、LinkedList、 Vector 和 Stack 的区别、CopyOnWriteArrayList
[重难点][Java集合 03]ArrayList.LinkedList 和 Vector 的区别.util 包下的 List.CopyOnWriteArrayList 文章目录 [重难点][Java ...
- 1190-1199: 习题6-2 排序
1190: 习题6-2 排序 题目描述 从键盘上输入10个整数,按照从小到大的顺序对这10个数排序. 采用选择法进行排序. 输入 输入以空格分隔的10个整数 输出 按从小到大排好序的10个数,每个数一 ...
- python天天向上3.2-Python入门习题3.天天向上
例3.1 一年365天,以第一天的能力值为基数,记为1.0,当好好学习时能力值相比前一天提高1%,当没有学习时能力值相比前一天下降1%.每天努力(dayup)和每天放任(daydown),一年下来的能 ...
- c语言中描述y是奇数,4章选择结构程序设计C语言入门习题
C语言入门习题 第四章 选择结构程序设计 一.选择题 1.有以下程序 main() { int i=1,j=2,k=3; if(i++==1&&(++j==3||k++==3)) pr ...
- Java入门算法(排序篇)丨蓄力计划
本专栏已参加蓄力计划,感谢读者支持 往期文章 一. Java入门算法(贪心篇)丨蓄力计划 二. Java入门算法(暴力篇)丨蓄力计划 三. Java入门算法(排序篇)丨蓄力计划 四. Java入门算法 ...
- java stack 类 效率_Java中ArrayList、LinkedList、Vector、Stack的比较
一.介绍 先回顾一下List的框架图 由图中的继承关系,可以知道,ArrayList.LinkedList.Vector.Stack都是List的四个实现类. AbstractList是一个抽象类,它 ...
- set、vector与list的构造与排序的耗时测试
测试目标 测试在成员个数不断递增的情况下,set.vector与list的构造与排序的耗时变化,找出set耗时连续超过其他容器耗时的成员个数 测试方式 set使用直接插入 vector使用assign ...
- Python入门习题大全——数字 8
Python入门习题大全--索引 编写4个表达式,它们分别使用加法.减法.乘法和除法运算,但结果都是数字8.为使用print语句来显示结果,务必将这些表达式用括号括起来,也就是说,你应该编写4行类似于 ...
- Python入门习题大全——词汇表2
Python入门习题大全--索引 既然你知道了如何遍历字典,现在请整理你为完成上一个例题而编写的代码,将其中的一系列 print 语句替换为一个遍历字典中的键和值的循环.确定该循环正确无误后,再在词汇 ...
- Python入门习题大全——词汇表
Python入门习题大全--索引 Python 字典可用于模拟现实生活中的字典,但为避免混淆,我们将后者称为词汇表. 想出你在前面学过的5个编程词汇,将它们用作词汇表中的键,并将它们的含义作为值存储在 ...
最新文章
- Xamarin只言片语系列
- Eclipse主题更换方法
- hibernate查询缓存_Hibernate查询缓存如何工作
- 一套 SQL 搞定数据仓库?Flink有了新尝试
- python工作岗位要求_Python就业:Python就业岗位职能要求解析
- 四川第七届 C Censor (字符串哈希)
- Rectangle 属性
- Power Spectral Density
- VB语言通用基础语句
- Linux下nand flash读写测试
- ROS串口通信协议解析
- java基础中的基础,简单中的简单
- 关于音频采样率,音频帧率,每次采集多少字节的理解
- 单片机开发产品流程,照这个来没错!
- html加载页面转圈圈怎么打,js实现等待加载“转圈圈”效果
- 【高效复习】计算机网络重要概念总结
- JavaScript的深浅拷贝
- 国企计算机技术岗都干什么,大家听说的国企技术岗都是什么样子的?
- 将web网站转为App
- tcpdump 侦测网络端口数据