Автор работы: Пользователь скрыл имя, 22 Января 2011 в 15:04, курсовая работа
Определить количество элементов массива расположенных между максимальным и «центральным» элементами массива (предполагается, что число элементов – нечётное и максимальный элемент - единственный). Если по какой либо причине количество определить не удаётся, выдать об этом сообщение с указанием причины.
ОПИСАНИЕ ОСНОВНОЙ ПРОГРАММЫ
6.1
Описание данных
Описание глобальных
данных:
void enter(int *a, int n); //функция ввода массива
void print(int *a, int n); // функция вывода массива
int max(int *a, int n); // функция находящая номер максимального элемента
int poisk(int*a,int n,int zad_elem);//функция проверяющая наличие заданного элемента в массиве
void del(int*a,int &n,int zad_elem);//функция удаляющая После каждого элемента с заданным значением, 1 элемент, если он отличен от заданного
void paste(int*a,int &n,int new_element,int zad_nomer);//функция вставляющая элемент с заданным значением после элемента с заданным номером
bool proverka pologit(int*a,int n);//функция проверяющая есть ли в массиве два подряд идущих положительных элемента.
int kol_vo(int*a,int maxim,int n);//функция нахождения количества элементов расположенных между центральным и максимальным элементами
bool
neskolko(int*a,int n);//функция
проверки единственности
максимального элемент
в массиве
Описание локальных
данных:
int *а – массив.
Int n – длина массива.
Int choice – номер задания, выбираемого из меню.
Int numbermax – номер максимального элемента.
Int zad_elem – значение элемента для сравнения
Int zad_nomer – заданный номер элемента после которого необходимо произвести вставку
Int
new_element
– значение нового элемента.
Программа использует
подпрограммы решения задач 1-4:
Enter(a,n), print(a,n),
max(a,n), kol_vo(a,maxim,n), paste(a,n,new_element,zad_
6.2
Описание алгоритма:
Выбор требуемой задачи из меню.
Выполнение выбранной
задачи по соответствующим условиям.
6.3
Текст программы
______________________________
#include<iostream>
using namespace std;
void enter(int *a, int n); //функция ввода массива
void print(int *a, int n); // функция вывода массива
int max(int *a, int n); // функция находящая номер максимального элемента
bool poisk(int*a,int n,int zad_elem);//функция проверяющая наличие заданного элемента в массиве
void del(int*a,int &n,int zad_elem);//функция удаляющая После каждого элемента с заданным значением, 1 элемент, если он отличен от заданного
void paste(int*a,int &n,int new_element,int zad_nomer);//функция вставляющая элемент с заданным значением после элемента с заданным номером
bool proverka pologit(int*a,int n);//функция проверяющая есть ли в массиве два подряд идущих положительных элемента
int kol_vo(int*a,int maxim,int n);//функция нахождения количества элементов расположенных между центральным и максимальным элементами
bool
neskolko(int*a,int n);//функция проверки единственности
максимального элемент в массиве
int main()
{ int n,choice;
do
{
system("dhcp 1251|cls");
cout<<"\n>>>>>>>>>>>>>>>>>>> МЕНЮ <<<<<<<<<<<<<<<<<<<< ";
cout<<"\nЗадание № 1. Найти количество элементов массива расположенных между максимальным и центральным элементами.";
cout<<"\nЗадание № 2. После каждого элемента с заданным значением, удалить 1 элемент, если он отличен от заданного.";
cout<<"\nЗадание № 3. Вставить элемент с заданным значением после элемента с заданным номером.";
cout<<"\nЗадание № 4. Проверить есть ли в массиве два подряд идущих положительных элемента.";
cout<<"\n0. Выход"<<"\n";
cout<<"\n Выбери задание => ";
cin>>choice;
switch(choice)
{
case(1):
{
cout <<"\nВы выбрали пункт №1-Найти
количество элементов массива расположенных
между максимальным и центральным элементами.";
cout<<"\nВведите количество элементов массива: ";
cin>>n;
if (n==0)//проверка на наличие элементов в массиве
{
cout<<"\nМассив пуст!\n";
return 1;
}
if ((n%2)==0)//проверка на чётность размерности массива
{
cout <<"Ошибка! Количество элементов должно быть нечётным. \n";
return 10;
}
int *a = new int [n];
enter(a,n);//функция ввода элементов в массив
if (max(a,n)==(n/2))//проверка на совпадения номера максимального и центрального элемента
{
cout<<"Центральный и максимальный элемент совпадают";
return 9;
}
int maxim=max(a,n);
if (neskolko(a,n)) //функция проверки единственности максимального элемент в массиве
cout <<"Ошибка! В массиве несколько максимальных элементов. \n";
else
kol_vo(a,maxim,n);//функция нахождения количества
элементов расположенных между центральным
и максимальным элементами
system("pause");
break;
delete []a;
}
case(2):
{
cout <<"\nВы выбрали пункт №2-После каждого элемента с заданным значением, удалить 1 элемент, если он отличен от заданного.";
int zad_elem;
cout <<"\nВведите количество элементов массива:";
cin >> n;
if (n<2)
{
cout <<"Ошибка! Количество элементов массива должно быть не менее двух.\n";
return 3;
}
int*a = new int [n];
enter(a,n);//функция ввода элементов
массива
cout <<"\nВведите заданный элемент для сравнения: ";
cin >> zad_elem;
if (zad_elem==a[n-1])
{
cout <<"\n Заданный элемент является последним в массиве ";
return 4;
}
if (poisk(a,n,zad_elem))//функция проверки наличия заданного элемента в массиве
{
del(a,n,zad_elem);//функция удаляющая после каждого элемента с заданным значением,1 элемент, если он отличен от заданного
print(a,n);//функция вывода элементов массива
}
else cout<<"\nВ массиве нет заданного
элемента ";
system("pause");
break;
delete[]a;
}
case(3):
{
cout <<"\nВы выбрали пункт № 3-Вставить элемент с заданным значением после элемента с заданным номером.";
int new_element, zad_nomer;
cout <<"\nВведите количество элементов массива:";cin >> n;
if (n<1)
{
cout <<"\n Массив пуст\n";
return 5;
}
int* a = new int[n+1];
enter(a,n);//функция ввода
элементов массива
cout <<"\nВведите номер элемента после которого необходимо произвести вставку: ";
cin>>zad_nomer;
if (n<zad_nomer)// если заданный номер превышает размерность массива
{
cout<<"Ошибка! Массив не имеет элемента с заданным номером, так как количество элементов массива менее "<<zad_nomer;
return 6;
}
cout <<"\nВведите элемент для вставки:";