Can only be done in stdio.h. We also must use user-defined functions and can onl
ID: 3694247 • Letter: C
Question
Can only be done in stdio.h. We also must use user-defined functions and can only use material through chapter 8 of the book Computer Science: A structured approach to C by Forouzan and Gilberg Problem: A set of integers is assigned a score based on the number of times individual values are repeated in the set. The count of occurrences of each value is squared and summed to calculate the set score. Given up to 50 non-negative integers as input determine the score of the data set as input. The user will also indicate the number of elements to remove from the set and those selected for removal should lower the set score as much as possible. Example Execution #1: Enter data now: 117 91 101 73 117 91 73 91 73 73 -1 Enter number of elements to remove: 3 Score of original data set: 30 Score after 3 element(s) removed: 13 Example Execution #2: Enter data now: 11 12 13 14 15 9 8 7 6 -1 Enter number of elements to remove: 2 Score of original data set: 9 Score after 2 element(s) removed: 7 Example Execution #3: Enter data now: 88 88 88 88 99 99 99 99 99 -1 Enter number of elements to remove: 1 Score of original data set: 41 Score after 1 element(s) removed: 32 Example Execution #4: Enter data now: 707 707 707 707 707 707 707 707 707 707 973 973 973 973 973 973 973 973 973 973 11 11 11 11 11 11 11 11 11 11 81 81 81 81 81 81 81 81 81 81 54 54 54 54 54 54 54 54 54 54 Enter number of elements to remove: 7 Score of original data set: 500 Score after 7 element(s) removed: 371 Example Execution #5: Enter data now: 7 7 7 7 7 7 7 7 7 7 -1 Enter number of elements to remove: 5 Score of original data set: 100 Score after 5 element(s) removed: 25 Example Execution #6: Enter data now: 21 32 43 54 21 32 43 54 21 32 43 54 -1 Enter number of elements to remove: 11 Score of original data set: 36 Score after 11 element(s) removed: 1 Example Execution #7: Enter data now: 21 32 43 54 21 32 43 54 21 32 43 54 -1 Enter number of elements to remove: 12 Score of original data set: 36 Score after 12 element(s) removed: 0 Example Execution #8: Enter data now: 21 32 43 54 21 32 43 54 21 32 43 54 -1 Enter number of elements to remove: 13 Error! Maximum number to remove is 12. Enter number of elements to remove: -1 Error! Minimum number to remove is zero! Enter number of elements to remove: 0 Score of original data set: 36 Score after 0 element(s) removed: 36 Example Execution #9: Enter data now: 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -1 Enter number of elements to remove: 12 Score of original data set: 1201 Score after 12 element(s) removed: 685 Example Execution #10: Enter data now: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Enter number of elements to remove: 45 Score of original data set: 2500 Score after 45 element(s) removed: 25
Explanation / Answer
#include<stdio.h>
int main(){
int A[50],i,n,j,num;
printf("Enter the numbers");
for(i=0;i<50;i++){
scanf("%d",&n);
if(n == -1)
break;
A[i] = n;
}
while(1){
printf("Enter number of elements to remove: ");
scanf("%d",&num);
if(num <= i && num >=0)
break;
else if (num <=0)
printf("Error! Minimum number to remove is zero! ");
else
printf("Error! Maximum number to remove is %d ",i);
}
int num1 = num;
int len = i;
int B[len],C[len];
int k =0;
for(i=0;i<len;i++){
int count =1,flag =0;
for(j=0;j<i;j++)
if(A[i]==A[j]){
flag =1;
break;
}
if(flag == 1)
continue;
for(j = i+1;j<len;j++)
if(A[i]==A[j])
count++;
B[k] = count;
C[k] = A[i];
k++;
}
int score = 0,max,max_index;
for(i = 0;i<k;i++)
score += B[i] * B[i];
printf("Score of original data set: %d",score);
while(num>0){
max = B[0];
max_index = 0;
for(i=1;i<k;i++)
if(max < B[i]){
max = B[i];
max_index = i;
}
B[max_index]--;
num--;
}
score = 0;
for(i = 0;i<k;i++)
score += B[i] * B[i];
printf(" Score after %d element(s) removed: %d",num1,score);
return 0;
}