I'm working on a project that required me to input 5 numbers from 20-101 into my one-dimensinal array. After that, it shows up output of those 5 numbers. If enter a non-numeric/float number/duplicate/out-range, reject those and ask user to input again. I have to do try and catch into my codes. Also, the program able to shows up the bad input at the end. Here what I got so far and got stuck, I'm totally lost.
Check out-range numbers
int ArrayReader::checkInput(int number)
{
if (number >= 20 && number <= 101)
{
return number;
}
else
{
throw invalid_argument("Out-range-number entered");
}
}
Main Code
#include <iostream>
#include <stdexcept>
#include <iomanip>
#include "ArrayReader.h"
using namespace std;
int main()
{
ArrayReader value;
int number = 0;
int dup;
int Array[5];
int currentArray = 0;
cout << "Enter Number from 20 - 101: ";
for (int i = 0; i < 5; i++)
{
cin >> number;
dup = 0;
if (number >= 20 && number <= 101)
{
for (int value = 0; value < currentArray; value++)
{
if (number == Array[value])
{
dup == true;
dup = 1;
cout << "Number " << number << " already used. Try again";
break;
}
}
if (dup == false)
{
Array[currentArray++] = number;
i++;
}
}
else
{
try
{
int result = value.checkInput(number);
cout << "Valid Input: " << number << endl;
}
catch (invalid_argument &x)
{
cout << "Error: "
<< x.what() << endl;
}
}
}
for (int i = 0; i < 5; i++)
{
cout << "Valid numbers entered" << " " << Array[i] << endl;
}
}
My problems are:
For now, when I run the program, it doesn't let me enter all 5 numbers (only 3). It checked duplicated numbers and out-range number. The output is chain of weird numbers
I have no ideas how to do reject non-numeric input and float numbers.
I'm beginner of C++, please help me!