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. Note: this technique is not limited to 50 elements — it works just as well for larger values. Thus, for example you could have an array of 1,000,000 elements (that’s right — one million!) and use it to sort numbers up to 1,000,000 in value!
LANGUAGE: C++
CHALLENGE:
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. Note: this technique is not limited to 50 elements — it works just as well for larger values. Thus, for example you could have an array of 1,000,000 elements (that’s right — one million!) and use it to sort numbers up to 1,000,000 in value!
SOLUTION:
int number; for (int i=0; i<50; i++){ wasReadIn[i]=0; } for (int i=0; i<n; i++){ cin >> number; wasReadIn[number]++; } for(int i=0; i<50; i++){ if(wasReadIn[i]>0){ for(int j=0; j<wasReadIn[i]; j++){ cout << i << " "; } } }