Nayyab F.
asked 05/27/21This is the question regarding array and i want the best solution of this question
Write a Menu Driven C++ program that creates one-dimensional array arr[] and initialize it with user of
size 15. The program should do following Tasks using Menu, The menu operations are implemented using
functions: (7X5=35 marks)
a) Write a function count(), that counts the occurrences of x (a number) in arr[].
b) Write a function partition (), that take the first element of the array x and put x in a position such
that all smaller elements (smaller than x) are before x, and put all greater elements (greater than
x) after x.
c) Write a function next_XOR(),the count of elements which are equal to the XOR of the next two
elements in an array.
d) Write a function duplicates(),which calculated the frequencies of all the elements and display
them.
e) Write a function circular(),which replace every element of the array by the sum of next two
consecutive elements in a circular manner i.e. arr[0] = arr[1] + arr[2], arr[1] = arr[2] + arr[3],
... arr[n – 1] = arr[0] + arr[1].
f) Write a function Search(), takes an array and element to search in the array and returns the index
of element if the element is found. And return the negative number if not found.
g) Write a function shift_circular (), which shifts an array circularly left by two positions. Thus, if p[0]
= 15, p[1]= 30, p[2] = 28, p[3]= 19 and p[4] = 61 then after the shift p[0] = 28, p[1] = 19, p[2] = 61,
p[3] = 15 and p[4] = 30.
1 Expert Answer

Patrick B. answered 05/27/21
Math and computer tutor/teacher
using namespace std;
#include <iostream>
#include <string.h>
#include <math.h>
#define MAX (15)
menu(int * A)
{
cout << "Here's the list: >";
for (int iLoop=0; iLoop<MAX; iLoop++) { cout <<A[iLoop] << " "; }
cout << "<\n" <<endl;
int n;
cout << "*****************************" << endl;
cout << " (1) SEARCH FOR NUMBER " << endl;
cout << " (2) PARTITION " << endl;
cout << " (3) NEXT XOR " << endl;
cout << " (4) FREQUENCY TABLE " << endl;
cout << " (5) SUM NEXT TWO " << endl;
cout << " (6) LINEAR SEARCH " << endl;
cout << " (7) CIRCULAR SHIFT " << endl;
cout << "*****************************" << endl;
cout << " Input Selection of ZER0 to Quit :>";
cin >> n;
return(n);
}
Input(int * A)
{
int x;
for (int iLoop=0; iLoop<MAX; iLoop++)
{
cout << " Int # " << (iLoop+1) << " :>";
cin >> x;
A[iLoop]=abs(x);
}
}
//returns # of times x occurs in A
int NumberFreq(int * A, int x)
{
int iReturn=0;
for (int iLoop=0; iLoop<MAX; iLoop++)
{
if (x==A[iLoop])
{
iReturn++;
}
}
return(iReturn);
}
Partition(int * A, int * a)
{
int iTemp;
memcpy(a,A,MAX*sizeof(int));//copies
int pivot = a[0];
int iLeft=1;
int iRight=MAX-1;
while (iLeft<iRight)
{
while (a[iLeft]<=pivot)
{
iLeft++;
}
while (a[iRight]>= pivot)
{
iRight--;
}
if (iLeft<iRight)
{
iTemp = a[iLeft];
a[iLeft] = a[iRight];
a[iRight]= iTemp;
iLeft++; iRight--;
}
}
iTemp = a[iLeft-1];
a[iLeft-1]=pivot;
a[0]=iTemp;
}
NextXOR(int * a)
{
int iReturn=0;
for(int iLoop=0; iLoop<MAX; iLoop++)
{
int x=a[(iLoop+1)%MAX];
int y=a[(iLoop+2)%MAX];
if (a[iLoop]==(x^y))
{
cout << "match found at index " << iLoop << " : num = " << a[iLoop] << endl;
iReturn++;
}
}
return(iReturn);
}
FreqTable(int * A, int * freq)
{
for (int iLoop=0; iLoop<MAX; iLoop++)
{
freq[A[iLoop]]++;
}
for (int iLoop=0; iLoop<32767; iLoop++)
{
if (freq[iLoop]>0)
{
cout << " num # = " << iLoop << " freq : " << freq[iLoop] << endl;
}
}
}
SumNextTwo(int * A, int * a)
{
for(int iLoop=0; iLoop<MAX; iLoop++)
{
int x=A[(iLoop+1)%MAX];
int y=A[(iLoop+2)%MAX];
a[iLoop]= x+y;
}
}
LeftShift(int * A)
{
int firstNum = A[0];
for (int iLoop=0; iLoop<MAX-1; iLoop++)
{
A[iLoop]=A[iLoop+1];
}
A[MAX-1]=firstNum;
}
LinearSearch(int * a, int itarget)
{
int iReturn=-1;
for (int iLoop=0; iLoop<MAX; iLoop++)
{
if (a[iLoop]==itarget)
{
iReturn = iLoop;
break;
}
}
return(iReturn);
}
main()
{
int A[MAX], iMenuChoice=-1;
int a[MAX];
int xTarget;
int freq[32767];
Input(A);
while ((iMenuChoice = menu(A))!=0)
{
switch (iMenuChoice)
{
case 1:
{
cout << " input target # :>";
cin >> xTarget;
int iFreqCount = NumberFreq(A,xTarget);
cout << " The number " << xTarget << " occurs " << iFreqCount << " times in the list " << endl;
break;
}
case 2:
{
Partition(A,a);
for (int i=0; i<MAX; i++) { cout << a[i] << " "; }
cout << endl;
break;
}
case 3:
{
memcpy(a,A,MAX*sizeof(int));
cout << NextXOR(a) << " elements are equal to XOR of their next two neighbors " << endl;
break;
}
case 4:
{
memset(freq,0,32767*sizeof(int));
FreqTable(A,freq);
break;
}
case 5:
{
memcpy(a,A,MAX*sizeof(int));
SumNextTwo(A,a);
for (int i=0; i<MAX; i++) { cout << a[i] << " "; }
cout << endl;
break;
}
case 6:
{
cout << " input target # :>";
cin >> xTarget;
int iIndexPos = LinearSearch(A,xTarget);
if (iIndexPos>=0)
{
cout << xTarget << " found at index position " << iIndexPos << endl;
}
else
{
cout << xTarget << " not found " << endl;
}
break;
}
case 7:
{
memcpy(a,A,MAX*sizeof(int));
for (int iLoop=0; iLoop<2; iLoop++)
{
LeftShift(a);
}
for (int i=0; i<MAX; i++) { cout << a[i] << " "; }
cout << endl;
break;
}
} //switch
}//while
}
Still looking for help? Get the right answer, fast.
Get a free answer to a quick problem.
Most questions answered within 4 hours.
OR
Choose an expert and meet online. No packages or subscriptions, pay only for the time you need.
Nayyab F.
i want the solution in c++ languagge05/27/21