C 哨兵环,存储最低和最大数量
c++ Sentinel loop, store lowest and biggest number
这是我的程序:
#include <iostream>
using namespace std;
int main(){
int num;
int numtotal = 0;
int numcount = 0;
int big = 0;
int low = 0;
cout<<"enter number or 0 to exit"<<endl;
cin>>num;
while(num != 0){
numtotal = numtotal + num;
numcount++;
big = num;
low = num;
cout<<"enter number or 0 to extit"<<endl;
cin>>num;
if(num < low){
low = num;
}
else if(num > big){
big = num;
}
}
cout<<"total of numbers: "<<numtotal<<endl;
cout<<"totoal of numbers entered: "<<numcount<<endl;
cout<<"biggest number: "<<big<<endl;
cout<<"lowest number: "<<low<<endl;
}
"低"answers"大"输出始终是用户输入的最后两个数字,例如:
( 5, 4, 3, 2)
biggest number: 2
lowest number: 0
我在这里做错了什么?谢谢
如果用户内部循环输入0
,则不需要将big
和low
设置为num
。
否则,如果您不这样做,则您的输出最低数字将始终是0
,如果用户仅输入正数,我认为您不想要它:
#include <iostream>
using namespace std;
int main() {
int num;
int total = 0;
int count = 0;
cout << "Enter number or 0 to exit" << endl;
cin >> num;
int biggest = num;
int lowest = num;
while (num != 0) {
total += num;
count++;
cout << "Enter number or 0 to exit" << endl;
cin >> num;
if (num != 0) {
if (num < lowest) {
lowest = num;
} else if (num > biggest) {
biggest = num;
}
}
}
cout << "Total of numbers: " << total << endl;
cout << "Amount of numbers entered: " << count << endl;
cout << "Biggest number: " << biggest << endl;
cout << "Lowest number: " << lowest << endl;
return 0;
}
示例用法:
Enter number or 0 to exit
5
Enter number or 0 to exit
4
Enter number or 0 to exit
3
Enter number or 0 to exit
2
Enter number or 0 to exit
0
Total of numbers: 14
Amount of numbers entered: 4
Biggest number: 5
Lowest number: 2
您始终将它们设置在循环的顶部。尝试将它们放在循环外面:
cout<<"enter number or 0 to exit"<<endl;
cin>>num;
// move them here
big = num;
low = num;
while(num != 0){
numtotal = numtotal + num;
numcount++;
cout<<"enter number or 0 to extit"<<endl;
cin>>num;
if(num < low){
low = num;
} else if(num > big){
big = num;
}
}
您总是用当前的num覆盖大小的循环。
可以通过初始化big
和low
(循环的Ontside)来解决这:
#include <limits>
int big = std::numeric_limits<int>::min();
int low = std::numeric_limits<int>::max();
并通过将循环更改为
while(num != 0) {
numtotal += num;
numcount++;
cout << "enter number or 0 to exit" << endl;
cin >> num;
if(num < low)
low = num;
// note that this isn't in the else branch anymore
// to also work if num is the biggest and lowest number
if(num > big)
big = num;
}
相关文章:
- 有效地将大数存储为 2 的幂用于路径问题
- C++是否有一个容器,每个类型最多存储一个对象
- 找到不大于 A 的最大数的最有效方法,该数可被 B 整除
- C++:最大数组值函数工作不正常
- 在浮点数32中保存浮点数16最大数
- 使用 DP 的非相邻元素的最大数组总和
- 找到第 n 个最大数无限循环C++
- 最大数组大小
- C 最大数组大小
- 如何在GPU内存中获取最大数组大小
- 具有最大数组函数的程序
- 这是在包含非唯一元素的未排序数组中选择第k个最大数的最快算法
- 如何递归地找到最大数组元素的索引
- 递归最大数求和
- 如何找到数组中的最大数并用c++显示
- 给定一系列整数,提供第k个最大数
- c++ OpenCV最大存储容量cv::Mat
- 在任意加长的集合中查找最大数不起作用
- IEEE 754浮点数,1<的最大数是多少?
- 不与V互质的最大数