Objectives: Use a single dimension array Use a menu to call various functions Us
ID: 3857717 • Letter: O
Question
Objectives:
Use a single dimension array
Use a menu to call various functions
Use multiple sorts and searches
Instructions:
Code a program with functions to sequentialSearch, binarySearch and sort an array with 2 different algorithms, along with a getSize function, print menu function, a printTheArray function, fillWithRandom function and a dispatch function. Also set up a 100 position integer array and an integer variable, called size, globally (before all methods are coded). Then the array and size do not have to be passed to any of these functions. (The alternative approach would be to define the array in the dispatch method after reading in a size. Then array name and size would be passed to all methods.) The menu should look like the following:
0. Exit
1. Get the size needed for today’s use of the array.
2. Fill an array with random numbers from 1-100.
3. Print the array with position numbers.
4. Sort the array in ascending sequence
5. Sort the array in descending sequence – use a different sort algorithm from step 4.
6. Sequential search of the array for a target – target should be passed to method and the method returns the found location or -1.
7. Binary search of the array for a target – target should be passed to method and the method returns the found location or -1. Remember that the array must be sorted before calling the binary search function.
The program should start with a request for a size from the user. (Type in 15.) Run the lab in this order:
Ask the user for the size of the array (1)
Fill the array with random values (2)
Print the array (3) (List the position number and the contents of the array position)
Sequentially search the array for a number in the array and then one not in the array, printing the appropriate messages of “Found in position ____” and “Not Found” (6, 6)
Sort the array into ascending sequence (4)
Print the array (3)
Do a binary search of the array for a number in the array and then for a value not in the array, printing the appropriate messages of “Found in position ____” and “Not Found” (7, 7)
Sort the array into descending sequence (5) (Use a different sort algorithm from code 4)
Finally, print the array again (3)
The main method will look like this: (everything else will be done in other functions)
int main ()
{
printMenu();
cout << “Type in a choice “ << endl;
cin >> choice;
while (choice != 0)
{
dispatch (choice); // one big switch statement
printMenu();
cout << “Type in a choice “ << endl;
cin >> choice;
}
return 0;
}
For the two search methods (choice 6 and 7), the program must ask for the target and then read in a target before calling the search method. After calling the search method, the program must determine if the search returned an integer (print “Found in position ______”) or the search returned a -1 (print “Not Found”).
Explanation / Answer
#include<iostream>
using namespace std;
int const size =100;//global variable size
int arr[size];//global array
void fillWithRandom();
void printTheArray();
void sortAsscending();
void sortDescending();
void sequentialSearch(int);
void binarySearch(int);
int getsize();
void printMenu();
void dispatch(int);
int main()
{
int choice;
printMenu();
cout<<"Type in a choice"<<endl;
cin>>choice;
while(choice!=0)
{
dispatch(choice);
printMenu();
cout<<"Type in a choice"<<endl;
cin>>choice;
}
return 0;
}
void dispatch(int choice)
{
switch(choice)
{
case 1:
cout<<"Size of the arrY IS --> "<<getsize();
break;
case 2:
fillWithRandom();
break;
case 3:
printTheArray();
break;
case 4:
sortAsscending();
break;
case 5:
sortDescending();
break;
case 6:
int key;
cout<<"Enter the value to search: ";
cin>>key;
sequentialSearch(key);
break;
case 7:
int search;
cout<<"Enter a number to find :";
cin>>search;
binarySearch(search);
break;
default:
cout<<"Wrong Choice"<<endl;
break;
}
}
void printMenu()
{
cout<<"0 Exit "<<endl<<"1 Get the size needed for today's use of the array"<<endl;
cout<<"2 Fill an array with random numbers from 1 -100."<<endl<<"3 Print the array with position number."<<endl;
cout<<"4 sort the array in asscending sequence"<<endl<<"5 sort the array in descending sequence"<<endl;
cout<<"6. Sequential Search"<<endl<<"7. Binary Search"<<endl;
}
int getsize()
{
//return size of the array
return size;
}
void binarySearch(int search)
{
int first,last,middle;
first = 0;
last = size-1;
middle = (first+last)/2;
while (first <= last)
{
if(arr[middle] < search)
{
first = middle + 1;
}
else if(arr[middle] == search)
{
cout<<search<<" found at location arr["<<middle+1<<"] ";
break;
}
else
{
last = middle - 1;
}
middle = (first + last)/2;
}
if(first > last)
{
cout<<"Not found! "<<search<<" is not present in the list.";
}
}
void sequentialSearch(int key)
{
bool found = false;
for(int i=0;i<size;i++){
if(key == arr[i]){
found = true;
cout<<"The value is found at index arr["<<i+1<<"]"<<endl;
}
}
if(!found){
cout<<"Key not found!";
}
}
void sortDescending()
{
cout<<"Sorting array using insertion sort technique... ";
int i,j,temp;
for(i=1;i<=size-1;i++)
{
temp=arr[i];
j=i-1;
while((temp<arr[j])&&(j>=0))
{
arr[j+1]=arr[j]; //moves element forward
j=j-1;
}
arr[j+1]=temp; //insert element in proper place
}
printf(" Sorted list in descending order as follows ");
for(i=size-1;i>=0;--i)
{
cout<<"arr["<<i+1<<"] is ->"<<arr[i]<<endl;
}
}
void sortAsscending()
{
int i,j,temp;
cout<<"Sorting array using bubble sort technique... ";
for(i=0; i<(size-1); i++)
{
for(j=0; j<(size-i-1); j++)
{
if(arr[j]>arr[j+1])
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
cout<<"Elements sorted successfully..!! ";
cout<<"Sorted list in ascending order : ";
for(i=0; i<size; i++)
{
cout<<"arr["<<i+1<<"] is ->"<<arr[i]<<endl;
}
}
void printTheArray()
{
for(int i=0;i<size;i++)
{
cout<<"arr["<<i+1<<"] is ->"<<arr[i]<<endl;
}
}
void fillWithRandom()
{
int random;
for(int i=0;i<size;i++)
{
random=rand()%100+1;//random numbers between 1 to 100
arr[i]=random;
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.