In this exercise, you will write some code that reads n unique (no duplicates!) non-negative integers, each one less than fifty (50). Your code will print them in sorted order without using any nested loops-- potentially very efficient! We'll walk you through this:
First, assume you are given an int variable n, that contains the number of integers to read from standard input.
Also assume you are given an array, named wasReadIn, of fifty (50) bool elements and initialize all the elements to false.
Third, read in the n integers from the input, and each time you read an integer, use it as an index into the bool array, and assign that element to be true-- thus "marking" in the array which numbers have been read.
Lastly the "punchline": write a loop that traverses the bool array: every time it finds an element that is true it prints out the element's INDEX -- which was one of the integers read in. Place all the numbers on a single line, separated by a single spaces.
I got this to work but how would i make it so it can handle duplicates in the input. how would i keep track of them in order to print them in the end with the other integers. Hint: change the bool array to an array of int.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
int x;
for (int i=0; i<50; i++)
wasReadIn[i] = false;
for (int i=0; i<n; i++)
{
cout << "enter num: ";
cin >> x;
wasReadIn[x] = true;
}
for (int i=0; i<50; i++)
{
if (wasReadIn[i])
{
cout << i << " ";
}
}
|