Modify the solution to exercise 11186 so that it can handle duplicates in the input. Hint: change the bool array to an array of int. The instructions for 11186 are repeated below: 11186: 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. 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. Second, given a bool array wasReadIn and int n, which have already been declared, initialize all elements in the array 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. 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.
.
.
Click on the title for the 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 << " ";
}
}
}
.
Click on the title for the solution
.
.
This is the answer:
:
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 << " ";
}
}
}
Comments
Post a Comment