程序的一部分在首次运行后未执行
A part of the program doesn't execute after the first time run
我在查阅一本关于c++的新书时做了其中的一个练习。程序得到一个长度,后面跟着它的单位。程序将该值转换为厘米,然后将该值与之前的输入进行比较,并给出一个输出,说明到目前为止输入的最大和最小的值。问题是,似乎有一个问题,当使用"脚"单位。下面是我的main.cpp:
#include "std_lib_facilities.h"
int main()
{
double value{0};
double largest{0};
double smallest{0};
string unit;
constexpr double cm_per_in {2.54};
constexpr double cm_per_m {100};
constexpr double cm_per_ft {cm_per_in*12};
int sum;
while(cin >> value >> unit)
{
if(unit=="cm")
{
if(largest==0 && smallest == 0){
smallest = value;
largest = value;
cout << value << "cm is the only value entered till now.n";
}
else if(value<smallest)
{
smallest = value;
cout << "nnThe smallest so far is "<<smallest<<"cm.n";
cout << "nThe largest so far is "<<largest<<"cm.n";
}
else if(value>largest){
largest = value;
cout << "The smallest so far is "<<smallest<<"cm.n";
cout << "nThe largest so far is "<<largest<<"cm.n";
}
sum += value;
}
else if(unit=="m")
{
if(largest==0 && smallest == 0){
smallest = value*cm_per_m;
largest = value*cm_per_m;
cout << value*cm_per_m << "cm is the only value entered till now.n";
}
else if(value*cm_per_m<smallest)
{
smallest = value*cm_per_m;
cout << "The smallest so far is "<<smallest<<"cm.n";
cout << "nThe largest so far is "<<largest<<"cm.n";
}
else if(value*cm_per_m>largest){
largest = value*cm_per_m;
cout << "nThe smalles so far is "<<smallest<<"cm.n";
cout << "The largest so far is "<<largest<<"cm.n";
}
sum += value*cm_per_m;
}
else if(unit=="ft")
{
if(largest==0 && smallest == 0){
smallest = value*cm_per_ft;
largest = value*cm_per_ft;
cout << value*cm_per_ft << "cm is the only value entered till now.n";
}
else if(value*cm_per_ft<smallest)
{
smallest = value*cm_per_ft;
cout << "The smallest so far is "<<smallest<<"cm.n";
cout << "nThe largest so far is "<<largest<<"cm.n";
}
else if(value*cm_per_ft>largest){
largest = value*cm_per_ft;
cout << "nThe smallest so far is "<<smallest<<"cm.n";
cout << "The largest so far is "<<largest<<"cm.n";
}
sum += value * cm_per_ft;
}
else if(unit=="in")
{
if(largest==0 && smallest == 0){
smallest = value*cm_per_in;
largest = value*cm_per_in;
cout << value*cm_per_in << "cm is the only value entered till now.n";
}
else if(value*cm_per_in<smallest)
{
smallest = value*cm_per_in;
cout << "The smallest so far is "<<smallest<<"cm.n";
cout << "The largest so far is "<<largest<<"cm.n";
}
else if(value*cm_per_in>largest){
largest = value*cm_per_in;
cout << "The smallest so far is "<<smallest<<"cm.n";
cout << "The largest so far is "<<largest<<"cm.n";
}
sum += value * cm_per_in;
}
}
return 0;
}
下面是程序的输入/输出:D: c++ 测试分测验>程序24厘米24cm是目前唯一输入的值。
24 in
The smallest so far is 24cm.
The largest so far is 60.96cm.
24 m
The smallest so far is 24cm.
The largest so far is 2400cm.
24 ft
在上面的输出中可以看到,当使用"feet"单位时没有输出。另一个测试的输出:
D:C++testingsubtesting>program
24 ft
731.52cm is the only value entered till now.
24 ft
The smallest so far is 731.52cm.
The largest so far is 731.52cm.
200 ft
The smallest so far is 731.52cm.
The largest so far is 6096cm.
30 ft
在'feet'代码中似乎有某种错误。代码有时有效,有时无效。有人能帮帮我吗?
代码没有问题。你的期望有问题。
只有当其中一个改变时才显示最大和最小,这是一个明确的设计意图,而不是错误。
在输入24in和24m之后,第三个值24ft既不是最大的也不是最小的,因此正确地没有输出
相关文章:
- 运行时执行策略不同
- 无法在 geany 上运行代码。无法执行构建命令
- C++线程:如何在一个线程仍在运行时阻止另一个线程执行 (Win32)
- 无法在 Linux 上运行C++ ZMQ 项目的可执行文件
- 在 c++ 托管和异步运行中调用 c# 可执行文件
- 为什么C++可执行文件在与较新的libstdc++.so链接时运行得更快?
- 在终端中运行可执行文件与在Mac查找器中打开
- 如何执行用 C++ 编写的程序的运行时间?
- C++项目编译强制使用 /clr 选项,尽管在没有公共语言运行时支持的情况下执行它
- 在 Linux 上没有 /proc/self/exe 的 C/C++ 运行时可执行文件的大小?
- 如果事件在仍在执行时再次设置,RegisterWaitForSingleObject 是否会并行运行回调?
- 为什么程序运行时我的第二个循环不执行?
- 线程保持运行并执行命令
- 生成线程并在运行时执行其他操作,只要它处于活动状态
- 运行自定义可执行文件,QProcess 立即退出,退出代码为 1
- 自上而下的动态规划与递归朴素解决方案.检查运行时执行
- 如何在调试模式下通过终端运行可执行的 c++?
- c++:if 语句无法正常运行,并继续执行无效输出
- C++ 可执行文件在运行时找不到库,即使它在 /usr/lib 中(在 Linux 上)
- 尝试运行可执行文件时出现分段错误