I have this problem, where I can input "2 10 8"
and it will output "8"
, but I want to be able to input "2 -25.2 -38.4"
. This immediately crashes the for
loop and the program displays "-25.0"
instead of "-25.2"
, effectively deleting the number in the decimal place.
Is there anyone that can help?
int main() {
int numVals;
static_cast<double>(numVals);
double minVal;
int i;
int iteration;
cin >> iteration;
for (i = 0; i < iteration; i) {
cin >> numVals;
numVals = numVals * 10; //program completely ignores this...
if (i == 0) {
minVal = numVals;
}
else if (numVals < minVal) {
minVal = numVals;
}
}
cout << fixed << setprecision(1) << minVal / 10 << endl;
return 0;
}
CodePudding user response:
You are trying to read -25.2
to a numVals
variable of type int
. It reads -25
to numVals
, but then tries to read .2
next time, which is not a valid integer. When you tried this, the input stream variable cin
goes to a failure state, and doesn't take any more input.
Change numVals
from type int
to double
:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
double numVals;
double minVal;
int i;
int iteration;
cin >> iteration;
for (i = 0; i < iteration; i)
{
cin >> numVals;
numVals = numVals * 10;
if (i == 0)
{
minVal = numVals;
}
else if (numVals < minVal)
{
minVal = numVals;
}
}
cout << fixed << setprecision(1) << minVal / 10 << endl;
return 0;
}