Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Can only be done in stdio.h. We also must use user-defined functions and can onl

ID: 3693420 • 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>
void selectionSort(int *a,int s){
   int i=0,j=0,temp=0;
   for(i=0;i<s;i++){
for(j=i+1;j<s;j++){
if(a[i]>a[j]){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
}
int main(void) {
   // your code goes here
   int arr[50],ele=0;
   int count[20],cnt=0;
   int i=0,k=0,uarr[50];
   int size1=0,size2=0;
   int j=0,score=0;
   printf("Enter data now :");
   while(1){
   scanf("%d",&arr[i]);
   if(arr[i]==-1){
       break;
   }
   uarr[i] = arr[i];
   i++;
   }
  
   size1=i;size2=i;
//   for (i = 0; i < size1; i++) {
// printf("%d ", arr[i]);
//}
   for (i = 0; i < size1; i++) {
for (j = i + 1; j < size1;) {
if (uarr[j] == uarr[i]) {
for (k = j; k < size1; k++) {
uarr[k] = uarr[k + 1];
}
size1--;
} else
j++;
}
}
//printf(" dup ");
//for (i = 0; i < size1; i++) {
// printf("%d ", uarr[i]);
//}
for(i=0;i<size1;i++){
    cnt=0;
    for(j=0;j<size2;j++){
        if(uarr[i]==arr[j]){
            cnt = cnt + 1;
        }
    }
    count[i] = cnt;
}
printf(" ");
//for (i = 0; i < size1; i++) {
// printf("%d ", count[i]);
// }
selectionSort(&count,size1);
printf(" ");
for (i = 0; i < size1; i++) {
printf("%d ", count[i]);
}
printf("Enter number of elements to remove:");
scanf("%d",&ele);
for(i=0;i<size1;i++){
        score += (count[i]*count[i]);
}
printf(" Score of original data set: %d",score);
score=0;
for(i=0;i<ele;i++){
        score += (count[i]*count[i]);
}
printf(" Score after %d element(s) removed: %d",ele,score);
   return 0;
}