In this exercise, you will write some code that reads n unique (no duplicates!)
ID: 1101011 • Letter: I
Question
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 !
Explanation / Answer
#include <iostream>
using namespace std;
int main()
{
int x, n=0;
bool wasReadIn[50];
for (int i=0; i<50; i++)
wasReadIn[i] = false;
while(n<1 || n>50)
{
cout << "Numbers to enter: ";
cin >> n;
}
for (int i=0; i<n; i++)
{
cout << "Enter num: ";
cin >> x;
if (!wasReadIn[x] && x >0 && x < 50)
wasReadIn[x] = true;
else{
i--;
cout << "BAD DOG BAD"<<endl;
}
}
for (int i=0; i<50; i++)
{
if (wasReadIn[i])
cout << i << " ";
}
return 0;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.