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

help with c++ Repeat the above program with the random numbers sorted into binar

ID: 3802412 • Letter: H

Question


help with c++ Repeat the above program with the random numbers sorted into binary bins, where bin A contains all numbers evenly divisible by 2, bin B contains all numbers evenly divisible by 4, bin C contains numbers evenly divisible by 8, bin D contains numbers evenly divisible by 16 and bin E contains numbers evenly divisible by 32. Test run your program for the case N = 2000, max = 5000 and min = 1. Write a C/C+ program that uses a random number generator to create a 1 row, N column vector of random numbers RN [] between min and max, where N, min, max are input by the user. Then write a sorting code that creates anew random number vector RNup[] that contains all of the original random numbers placed in rising order and a second vector RNdown[] that contains all of the original random numbers placed into falling order. Print out both new vectors RNup and RNdown. After writing above program to sort the numbers into rising and falling order, calculate the median grade. Note the grades must be ordered before the median formula can be used: If (N%2 == 0) MEDIAN = 0.5*(Grades[N/2] + Grades[1 + N/2]); If (N%2 == 1) MEDIAN = Grades[(N + 1)/2]; Test your program for the case N = 200, min = 0 and max = 5000.

Explanation / Answer

6.

#include <iostream>

#include <conio.h>

using namespace std;

void mergeUp(int arr[], int l, int m, int r)

{

    int i, j, k;

    int n1 = m - l + 1;

    int n2 = r - m;

    int L[n1], R[n2];

    for (i = 0; i < n1; i++)

        L[i] = arr[l + i];

    for (j = 0; j < n2; j++)

        R[j] = arr[m + 1+ j];

    i = 0;

    j = 0;

    k = l;

    while (i < n1 && j < n2)

    {

        if (L[i] <= R[j])

        {

            arr[k] = L[i];

            i++;

        }

        else

        {

            arr[k] = R[j];

            j++;

        }

        k++;

    }

    while (i < n1)

    {

        arr[k] = L[i];

        i++;

        k++;

    }

    while (j < n2)

    {

        arr[k] = R[j];

        j++;

        k++;

    }

}

void mergeSortUp(int arr[], int l, int r)

{

    if (l < r)

    {

        int m = l+(r-l)/2;

        mergeSortUp(arr, l, m);

        mergeSortUp(arr, m+1, r);

        mergeUp(arr, l, m, r);

    }

}

void mergeDown(int arr[], int l, int m, int r)

{

    int i, j, k;

    int n1 = m - l + 1;

    int n2 = r - m;

    int L[n1], R[n2];

    for (i = 0; i < n1; i++)

        L[i] = arr[l + i];

    for (j = 0; j < n2; j++)

        R[j] = arr[m + 1+ j];

    i = 0;

    j = 0;

    k = l;

    while (i < n1 && j < n2)

    {

        if (L[i] >= R[j])

        {

            arr[k] = L[i];

            i++;

        }

        else

        {

            arr[k] = R[j];

            j++;

        }

        k++;

    }

    while (i < n1)

    {

        arr[k] = L[i];

        i++;

        k++;

    }

    while (j < n2)

    {

        arr[k] = R[j];

        j++;

        k++;

    }

}

void mergeSortDown(int arr[], int l, int r)

{

    if (l < r)

    {

        int m = l+(r-l)/2;

        mergeSortDown(arr, l, m);

        mergeSortDown(arr, m+1, r);

        mergeDown(arr, l, m, r);

    }

}

void printArray(int A[], int size)

{

    int i;

    for (i=0; i < size; i++)

        printf("%d ", A[i]);

    printf(" ");

}

int main()

{

int n,i,min,max;

cin>>n;

    int RN[n];

cout<<min;

cout<<max;

   for(i = 0; i < n; i++){

RN[i]=min + rand() % (max - min);

   }

    printArray(RN, n);

    mergeSortUp(RN, 0, n - 1);

    printArray(RN, n);

mergeSortDown(RN, 0, n - 1);

    printArray(RN, n);

    return 0;

}

5.

#include <iostream>

#include <conio.h>

using namespace std;

void merge(int arr[], int l, int m, int r)

{

    int i, j, k;

    int n1 = m - l + 1;

    int n2 = r - m;

    int L[n1], R[n2];

    for (i = 0; i < n1; i++)

        L[i] = arr[l + i];

    for (j = 0; j < n2; j++)

        R[j] = arr[m + 1+ j];

    i = 0;

    j = 0;

    k = l;

    while (i < n1 && j < n2)

    {

        if (L[i] <= R[j])

        {

            arr[k] = L[i];

            i++;

        }

        else

        {

            arr[k] = R[j];

            j++;

        }

        k++;

    }

    while (i < n1)

    {

        arr[k] = L[i];

        i++;

        k++;

    }

    while (j < n2)

    {

        arr[k] = R[j];

        j++;

        k++;

    }

}

void mergeSort(int arr[], int l, int r)

{

    if (l < r)

    {

        int m = l+(r-l)/2;

        mergeSort(arr, l, m);

        mergeSort(arr, m+1, r);

        merge(arr, l, m, r);

    }

}

void printArray(int A[], int size)

{

    int i;

    for (i=0; i < size; i++)

        printf("%d ", A[i]);

    printf(" ");

}

int main()

{

int n,i,min,max,j=0,k=0,l=0,p=0,q=0;

cin>>n;

    int RN[n],a[n],b[n],c[n],d[n],e[n];

cout<<min;

cout<<max;

   for(i = 0; i < n; i++){

RN[i]=min + rand() % (max - min);

   }

    printArray(RN, n);

    mergeSort(RN, 0, n - 1);

    printArray(RN, n);

for(i = 0; i < n; i++){

if(RN[i]%2 == 0)

       a[j++] = RN[i];

if(RN[i]%2 == 0)

       b[k++] = RN[i];

   if(RN[i]%2 == 0)

       c[l++] = RN[i];

   if(RN[i]%2 == 0)

       d[p++] = RN[i];

   if(RN[i]%2 == 0)

       e[q++] = RN[i];

   }

   printArray(a, j);

   printArray(b, k);

   printArray(c, l);

   printArray(d, p);

   printArray(e, q);

    return 0;

}