Respuesta :
Answer:
Program approach:-
- Using the header file.
- Using the standard namespace I/O.
- Define the main function.
- Check whether entered the value is negative.
- Find the middle position of the array.
- Display message if value not found.
- Returning the value.
Explanation:
Program:-
//required headers
#include <stdio.h>
#include<iostream>
using namespace std;
//main function
int main()
{ double rain[12], temp_rain[12], sum=0, avg=0, temp;
int month=0, i, j, n=12, low=0, mid=0, high=12, x, found=0;
char month_name[][12]={"January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"};
//store input values to arrays rain and temp_rain
while(month<n)
{ cout<<"Enter the total rainfall for month "<<month+1<<" :";
cin>>temp;
//check whether the entered value is negative
if(temp<0)
{ cout<<"Enter a non negative value"<<endl;
}
else
{ rain[month]=temp;
temp_rain[month]=temp;
//total sum is found out and stored to sum
sum+=temp;
month++;
}
}
//find average rainfall
avg=sum/n;
//display total and average rainfall for the year
cout<<"Total rainfall for the year: "<<sum<<endl;
cout<<"Average rainfall for the year: "<<avg<<endl;
//perform bubble sort on temp_rain array
for(i=0; i<n-1; i++)
{ for (j=0; j<n-i-1; j++)
{ if (temp_rain[j]>temp_rain[j+1])
{
temp=rain[j];
temp_rain[j]=temp_rain[j+1];
temp_rain[j+1]=temp;
}
}
}
//get search value and store it to x
cout<<"Enter the value to search for a specific rain amount: ";
cin>>x;
//perform binary search on temp_rain array
while (low<=high)
{
//find the middle position of the array
int mid=(low+high)/2;
//if a match is found, set found=1
if(x==temp_rain[mid])
{ found=1;
break;
}
//ignore right half if search item is less than the middle value of the array
else if(x<temp_rain[mid])
high=mid-1;
//ignore left half if search item is higher than the middle value of the array
else
low=mid+1;
}
//if a match is found, then display the month for the found value
if(found==1)
{
for(i=0; i<n; i++)
{ if(x==rain[i])
cout<<"Found matching rainfall for this month: "<<month_name[i];
}
}
//display message if value not found
else
cout<<"Value not found.";
return 0;
}