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

write a C++ program that outputs each number and its rank in the list from a giv

ID: 3665425 • Letter: W

Question

write a C++ program that outputs each number and its rank in the list from a given list of 20 distinct integers. The rank of a number x in list L is the number of elements larger than x in L.

For example,
Input: 20 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 1
Output: (20 0) (2 18) (3 17) (4 16) (5 15) (6 14) (7 13) (8 12) (9 11) (10 10) (11 9) (12 8) (13 7) (14 6) (15 5) (16 4) (17 3) (18 2) (19 1) (1 19)
/* the order of the pairs in the list in the output is not important */

Your program must implement the following algorithm:
Read input of N=20 integers into array A
Scan array A as index i runs from 0 to N-1
calculate the rank of A[i] by counting all numbers that are larger than A[i]
Output all elements and their ranks in list L (i.e. array A)

In this assignment you are asked to implement list L as a linear linked list such that each node in L contains an element and its rank in array A, and next fields.

Explanation / Answer

#include<bits/stdc++.h>
using namespace std;

struct node{
   int data;
   int rank;
   node* next;
}Head;

int main(){
   int N = 20;
   int arr[20];

   for(int i = 0; i < 20; i++)
       cin >> arr[i];

   node *list = &Head;
   for(int i = 0; i < 20; i++){
       int cnt = 0;
       for(int j = 0; j < 20; j++){
           cnt += (arr[j] > arr[i]);
       }
       list->next = new node();
       list = list->next;
       list->data = arr[i];
       list->rank = cnt;
       list->next = NULL;
   }

   list = Head.next;
   while(list != NULL){
       cout << " (" << list->data << " " << list->rank << ") ";
       list = list->next;
   }
   cout << endl;
   return 0;

}