Задача Модульное программирование 4
Работа добавлена на сайт bukvasha.net: 2015-10-29Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
от 25%
договор
zФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ
Федеральное государственное образовательное учреждение
высшего профессионального образования
«ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»
КУРСОВАЯ РАБОТА
по дисциплине «Технология программирования»
на тему: «Модульное программирование»
Студентки II курса вечернего отделения Щербаковой Н.М.
Руководитель Пучкин М.В.
Ростов-на-Дону
2009
Содержание | ||
1. | Задание на курсовую работу | 3 |
2. | Задача 1 | 4 |
2.1 | Условие задачи: Найти количество элементов массива расположенных между максимальными центральным элементами. | 4 |
2.2 | Постановка задачи | 4 |
2.3 | Описание алгоритма | 4 |
2.4 | Реализация решения задачи | 4 |
2.5 | Контрольные примеры | 5 |
3. | Задача 2 | 7 |
3.1 | Условие задачи: После каждого элемента с заданным значением, удалить 1 элемент, если он отличен от заданного. | 7 |
3.2 | Постановка задачи | 7 |
3.3 | Описание алгоритма | 7 |
3.4 | Реализация решения задачи | 7 |
3.5 | Контрольные примеры | 8 |
4. | Задача 3 | 10 |
4.1 | Условие задачи: Вставить элемент с заданным значением после элемента с заданным номером. | 10 |
4.2 | Постановка задачи | 10 |
4.3 | Описание алгоритма | 10 |
4.4 | Реализация решения задачи | 10 |
4.5 | Контрольные примеры | 11 |
5. | Задача 4 | 12 |
5.1 | Условие задачи: Проверить есть ли в массиве два подряд идущих положительных элемента. | 12 |
5.2 | Постановка задачи | 12 |
5.3 | Описание алгоритма | 12 |
5.4 | Реализация решения задачи | 12 |
5.5 | Контрольные примеры | 12 |
6. | Основная программа | 14 |
6.1 | Описание данных | 14 |
6.2 | Описание алгоритма | 15 |
6.3 | Текст программы | 15 |
Литература | 23 |
1.ЗАДАНИЕ НА КУРСОВУЮ РАБОТУ
Решить 4 задачи:
Задача 1. Определить количество элементов массива расположенных между максимальным и «центральным» элементами массива (предполагается, что число элементов – нечётное и максимальный элемент - единственный). Если по какой либо причине количество определить не удаётся, выдать об этом сообщение с указанием причины.
Задача 2. Удаление элементов вектора. После каждого элемента с заданным значением, удалить один элемент, если он отличен от заданного значения. Если удаление элементов невозможно, выдать об этом сообщение.
Задача 3 Вставка в вектор новых элементов. Вставить в массив элемент с заданным значением, после элемента с заданным номером. Если вставка невозможна, выдать об этом сообщение.
Задача 4. Проверка состояния вектора. Проверить содержаться ли в массиве два подряд идущих положительных элемента.
Объединить решение задач в одну программу. Реализовать программу средствами языка программирования C++.
2. ЗАДАЧА 1
2.1 Условие задачи
Определить количество элементов массива расположенных между максимальным и «центральным» элементами массива (предполагается, что число элементов – нечётное и максимальный элемент - единственный). Если по какой либо причине количество определить не удаётся, выдать об этом сообщение с указанием причины.
2.2 Постановка задачи
Входные данные:
int n – длина массива;
int *а – массив.
Выходные данные:
Функция kol_vo(a,maxim,n), которая возвращает количество элементов массива, находящихся между максимальным элементом и центральным элементом.
Условия и ограничения:
Массив должен содержать нечётное количество элементов. Если при вводе длины массива число n оказывается чётным выводится сообщение «Ошибка! Количество элементов должно быть нечётным».
2.3. Описание алгоритма
Проверка присутствия нескольких максимальных элементов neskolko(a,n).
Если максимальный элемент встречается в массиве неоднократно (if (maxim!=I && maxim==a[i])) то выводим: «Ошибка! В массиве несколько максимальных элементов.», иначе вычисляем и выводим значение функции kol_vo(a,n).
2.4. Реализация решения задачи
Решение задачи 1 оформлено в виде подпрограммы kol_vo(a,maxim,n), которая использует подпрограммы:
- enter (a,n)– функция ввода массива;
- max (a,n) – функция поиска номера максимального элемента;
- neskolko(a,n) –функция проверки единственности максимального элемент в массиве;
Текст подпрограмм:
void enter(int *a, int n) // функция ввода массива, a – массив, n – длина массива
{
for (int i=0;i<n;i++)
{
cout<<"\n Введи "<<i+1<< " элемент: "; cin>>a[i]; }
}
int max(int *a, int n) // функция поиска номера максимального элемента
{
int numbermax=0, max=a[0];
for (int j=1; j<n;j++) if (a[j]>max)
{
max=a[j];
numbermax=j;
}
return numbermax;
}
bool neskolko(int*a ,int n)//функция проверяющая есть ли несколько максимальных элементов
{
Int d= max(a,n);
for (int i=0; i<n; i++)
if (d!=I && d ==a[i])
return true;
return false;
}
int kol_vo(int*a, int maxim, int n)//функция вычисления количества элементов расположенных между центральным и максимальным элементами, maxim – номер максимального элемента
{
int x;
x=(n/2)-maxim;
int kol=(abs(x)-1);
cout <<"Количество элементов массива расположенных между максимальными центральным элементами =" << kol << "\n";
if (kol==0)
cout<<"Между центральными максимальным элементами нет элементов";
return kol;
}
2.5. Контрольные примеры
1) n=7, a = { 1 2 3 6 5 9 3 } (случай когда максимальный элемент находится справа от центрального элемента).
Центральный элемент = 6, номер центрального элемента = 4;
Максимальный элемент = 9, номер максимального элемента = 6;
Количество элементов между максимальным элементом и центральным элементом
kol= (abs((7/2)-6)-1)= 1
2) n=9, a = { 9 2 3 -1 4 5 4 7 8} (случай когда максимальный элемент находится слева от центрального элемента).
Центральный элемент = 4, номер центрального элемента = 5;
Максимальный элемент = 9, номер максимального элемента = 1;
Количество элементов между максимальным элементом и центральным элементом kol= (abs((9/2)-1)-1)= 3
3) n=5, a = { 1 4 5 3 2} (случай когда центральный элемент и максимальный элемент совпадают).
Центральный элемент = 5, номер центрального элемента = 3;
Максимальный элемент = 5, номер максимального элемента = 3;
Выводится сообщение «Центральный и максимальный элемент совпадают!»
4) n=3, a = {1 2 4} (случай когда между центральным элементом и максимальным элементом нет элементов).
Центральный элемент = 2, номер центрального элемента = 2;
Максимальный элемент = 4, номер максимального элемента = 3;
Количество элементов между максимальным элементом и центральным элементом
kol= (abs((3/2)-3)-1)= 0 Выводится сообщение «Между центральным и максимальным элементами нет элементов»
5) n<=0, a – отсутствуют
Выводится сообщение «Массив пуст!»
6) n=1, a=1
Выводится сообщение «Центральный и максимальный элемент совпадают.»
7) n=3, a={0 0 0}
Выводится сообщение «Ошибка! В массиве несколько максимальных элементов. »
8) n=4, a={1 2 3 4}
Выводится сообщение «Ошибка! Количество элементов должно быть нечётным »
3. ЗАДАЧА 2
3.1 Условие задачи
Удаление элементов вектора. После каждого элемента с заданным значением, удалить один элемент, если он отличен от заданного значения. Если удаление элементов невозможно, выдать об этом сообщение.
3.2 Постановка задачи
Входные данные:
Int n – длина массива;
Int *а – массив;
Int zad_elem – заданное значение.
Выходные данные:
Измененный массив а, при наличии заданного элемента и последующий за ним элемент отличен от заданного.
Условия и ограничения:
Если в массиве присутствует заданный элемент и последующий за ним элемент отличен от заданного, то удаляется элемент отличный от заданного стоящий после заданного элемента.
3.3. Описание алгоритма
Проверка наличия заданного элемента poisk(a,n,zad_elem) в массиве.
Если заданный элемент найден, и последующий за ним элемент отличен от заданного, то этот последующий элемент удаляется, иначе не выполняется никаких действий и выводится сообщение: «В массиве нет заданного элемента»
3.4. Реализация решения задачи
Решение задачи 2 оформлено в виде подпрограммы del(a,n,zad_elem), которая использует подпрограммы:
- enter(a,n), – функция ввода массива.
- poisk(a,n,zad_elem), – функция проверки наличия заданного элемента в массиве.
- print(a,n,zad_elem), – функция вывода массива.
Текст подпрограмм:
int poisk(int*a, int n, int zad_elem)//функция проверяющая наличие заданного элемента в массиве
{
for( int i=0;i<n;i++)
if(a[i]==zad_elem)
return true;
return false;
}
void
{
for (int i=0; i<n; i++)
if (a[i]==zad_elem)
if (a[i+1]!=zad_elem)
{
for (i=i+1; i<n-1; i++)
a[i]=a[i+1];
n=n-1;
}
}
void print(int *a, int n) // функция вывода элементов массива
{
cout<<("\n Массив:");
for (int i=0;i<n;i++)
cout<<" "<<a[i];
cout<<endl;
}
3.5. Контрольные примеры
1) n=6, a = { 1 2 4 6 5 3 }, zad_elem=6
Заданный элемент = 6 (номер элемента =4). Следующий элемент массива отличен от заданного = 5(номер элемента =5), поэтому он удаляется.
Полученный массив: a = { 1 2 4 6 3 }
2) n=5, a = { 1 2 4 4 5}, zad_elem=4
Заданный элемент = 4(номер элемента =3). Следующий элемент массива не отличен от заданного = 4(номер элемента =4), поэтому он не удаляется. Элемент под номером 5 отличен, поэтому он удаляется.
Полученный массив: a = { 1 2 4 4 }
3) n=4, a={1 2 3 5}, zad_elem=5
Заданный элемент = 5(номер элемента =4). Заданный элемент является последним. Выводится сообщение «Заданный элемент является последним в массиве»
4) n=7, a={1 2 3 6 5 8 8}, zad_elem=8
Заданный элемент = 8(номер элемента =6). Следующий элемент массива не отличен от заданного = 8(номер элемента =7), поэтому он не удаляется. Элемент под номером 7 равен заданному и является последним. Поэтому выводится сообщение «Заданный элемент является последним в массиве»
5) n<=0, a – отсутствуют
Выводится сообщение «Ошибка! Количество элементов массива должно быть не менее двух.»
6) n=1, a=1
Выводится сообщение «Ошибка! Количество элементов массива должно быть не менее двух.»
7) n=3, a={0 0 0}, zad_elem=6
Выводится сообщение «В массиве нет заданного элемента»
4. ЗАДАЧА 3
4.1 Условие задачи
Вставка в вектор новых элементов. Вставить в массив элемент с заданным значением, после элемента с заданным номером. Если вставка невозможна, выдать об этом сообщение.
4.2 Постановка задачи
Входные данные:
itn n – длина массива;
int *а – массив;
int new_element – заданное значение;
int zad_nomer – заданный номер.
Выходные данные:
Измененный массив а, при наличии в этом массиве элемента с заданным номером.
Условия и ограничения:
Отсутствие в массиве элемента с заданным номером.
4.3. Описание алгоритма
Вставка заданного элемента после элемента с заданным номером paste(a,n,new_element,zad_nomer).
Если элемент c заданным номером найден после него производится вставка заданного значения.
4.
4. Реализация решения задачи
Решение задачи 3 оформлено в виде подпрограммы paste, которая использует подпрограммы:
- entery(a,n) – функция ввода массива;
- print (a,n) – функция вывода массива.
Текст подпрограмм:
void paste(int*a ,int&n ,int new_element, int zad_nomer)//функция вставляющая элемент с заданным значением после элемента с заданным номером
{
Int m=n+1;
Int *b=new int[m];
for (int i=0; i<=zad_nomer; i++)
b[i]=a[i];
b[zad_nomer+1]=new_element;
for (int i=zad_nomer+2; i<m; i++)
b[i]=a[i-1]
delete [] a;
a=b;
}
4.5. Контрольные примеры
1) n=5, a = { 1 2 9 4 5 }, int zad_nomer=3, int new_element=7
Заданное значение = 7. Заданный номер = 3
Полученный массив: a = { 1 2 9 7 4 5 }
2) n=5, a = { 1 2 3 4 0 }, int zad_nomer=9
Заданный номер = 9.
Выводится сообщение «Ошибка! Массив не имеет элемента с заданным номером, так как количество элементов массива менее 9»
3) n<=0, a – отсутствуют
Выводится сообщение «Массив пуст.»
4) n=1, a=1, int zad_nomer=9
Выводится сообщение «Ошибка! Массив не имеет элемента с заданным номером, так как количество элементов массива менее»
5) n=3, a={0 0 0}, int zad_nomer=3, int new_element=9
Полученный массив: a = { 0 0 0 9 }
5. ЗАДАЧА 4
5.1 Условие задачи
Проверка состояния вектора. Проверить содержаться ли в массиве два подряд идущих положительных элемента.
5.2 Постановка задачи
Входные данные:
Int n – длина массива;
int *а – массив.
Выходные данные:
Логическая функция proverka pologit(a,n), которая возвращает истину, если в массиве есть два подряд идущих положительных элемента.
Условия и ограничения:
Ограничений нет, при условии наличия элементов в массиве.
5.3. Описание алгоритма
Сравнение элементов массива друг с другом.
5.4. Реализация решения задачи
Решение задачи 4 оформлено в виде подпрограммы proverka pologit(a,n).
Текст
подпрограммы
:
bool proverka(int*a,int n)//функция проверяющая есть ли в массиве два подряд идущих положительных элемента
{
for(int i=0;i<n-1;i++)
if ((a[i]>0)&&(a[i+1]>0))
return true;
return false;
}
5.5. Контрольные примеры
1) n=5, a = { -5 3 2 -2 -1 }
Выводится сообщение «Да, Массив содержит два подряд идущих положительных элемента.»
2) n=1, a = { 1 }
Выводится сообщение «В массиве один элемент»
3) n=3, a = { 0 -9 -2 }
Выводится сообщение «Два подряд идущих положительных элементов не найдено»
4) n<=0, a – { }
Выводится сообщение «Количество элементов массива менее двух..»
5) n=3, a={0 0 0}
Выводится сообщение «Два подряд идущих положительных элементов не найдено.»
ОПИСАНИЕ ОСНОВНОЙ ПРОГРАММЫ
6.1 Описание данных
Описание глобальных данных:
void enter(int *a, int n); //функция ввода массива
void
(
int
*
a
,
int
n
); // функция вывода массива
int
max
(
int
*
a
,
int
n
); // функция находящая номер максимального элемента
int
poisk
(
int
*
a
,
int
n
,
int
zad
_
elem
);//функция проверяющая наличие заданного элемента в массиве
void
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_nomer), poisk(a,n,zad_elem), proverka pologit(a,n,), del(a,n,Zad_elem), neskolko(a,n).
6.2 Описание алгоритма:
Выбор требуемой задачи из меню.
Выполнение выбранной задачи по соответствующим условиям.
6.3 Текст программы
_______________________________Main.cpp_____________________________________
#include<iostream>
using namespace std;
void enter(int *a, int n); //функция ввода массива
void
(
int
*
a
,
int
n
); // функция вывода массива
int
max
(
int
*
a
,
int
n
); // функция находящая номер максимального элемента
bool
poisk
(
int
*
a
,
int
n
,
int
zad
_
elem
);//функция проверяющая наличие заданного элемента в массиве
void
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
<<"\
n
0. Выход"<<"\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Введите элемент для вставки:";
cin
>>
new
_
element
;
paste
(
a
,
n
,
new
_
element
,
zad
_
nomer
);//функция вставляющая элемент с заданным значением после элемента с заданным номером
print
(
a
,
n
);//функция вывода элементов массива
system("pause");
break;
delete[]a;
}
case
(4):
{
cout
<<"\
nВы выбрали пункт №4-Проверить есть ли в массиве два подряд идущих положительных элемента.";
cout
<<"\
nВведите количество элементов массива: ";
cin
>>
n
;
if
(
n
<2)
{
cout
<<"\
nКоличество элементов массива менее двух.";
return 7;
}
int*a = new int [n];
enter
(
a
,
n
);//функция ввода элементов массива
if
(
proverka
(
a
,
n
))//функция проверяющая есть ли в массиве два подряд идущих положительных элемента
cout
<<"\
n
Да, Массив содержит два подряд идущих положительных элемента. \n
";
else
cout
<<"\n Два подряд идущих положительных элементов не найдено.\n
";
system("pause");
break;
delete[]a;
}
case(0):break;
default: {break;}
};
}
while(choice!=0);
return 0;
}
void
enter
(
int
*
a
,
int
n
) // функция ввода массива, a – массив, n – длина массива
{
for (int i=0;i<n;i++)
{
cout<<"\n Введи "<<i+1<< " элемент= ";
cin>>a[i]; }
}
int
max
(
int
*
a
,
int
n
) // функция поиска номера максимального элемента
{
int numbermax=0, max=a[0];
for (int j=1; j<n;j++)
if (a[j]>max)
{
max=a[j];
numbermax=j;
}
return numbermax;
}
void print(int *a, int n) // функция вывода элементов массива
{
cout<<("\n Массив:");
for (int i=0;i<n;i++)
cout<<" "<<a[i];
cout<<endl;
}
bool
proverka
pologit
(
int
*
a
,
int
n
)//функция проверяющая есть ли в массиве два подряд идущих положительных элемента
{
for(int i=0;i<n-1;i++)
if ((a[i]>0)&&(a[i+1]>0))
return true;
return false;
}
void
paste
(
int
*
a
,
int
&
n
,
int
new
_
element
,
int
zad
_
nomer
)//функция вставляющая элемент с заданным значением после элемента с заданным номером
{
Int m=n+1;
Int *b=new int[m];
for (int i=0; i<=zad_nomer; i++)
b[i]=a[i];
b[zad_nomer+1]=new_element;
for (int i=zad_nomer+2; i<m; i++)
b[i]=a[i-1]
delete [] a;
a=b;
}
bool
poisk
(
int
*
a
,
int
n
,
int
zad
_
elem
)//функция проверяющая наличие заданного элемента в массиве
{
for( int i=0;i<n;i++)
if(a[i]==zad_elem)
return
true
;
return
false
;
}
void
del (
int
*
a
,
int
&
n
,
int
zad
_
elem
)//функция удаляющая после каждого элемента с заданным значением, 1 элемент, если он отличен от заданного
{
for (int i=0; i<n; i++)
if (a[i]==zad_elem)
if (a[i+1]!=zad_elem)
{
for (i=i+1; i<n-1; i++)
a[i]=a[i+1];
n
=
n
-1;
}
}
int
kol
_
vo
(
int
*
a
,
int
maxim
,
int
n
)//функция вычисления количества элементов расположенных между центральным и максимальным элементами
{
int x;
x=(n/2)-maxim;
int
kol
=(
abs
(
x
)-1);
cout
<<"Количество элементов массива расположенных между максимальными центральным элементами = " << kol
<< "\
n
";
if
(
kol
==0)
cout
<<"Между центральными максимальным элементами нет элементов";
return
kol
;
}
bool
neskolko
(
int
*
a
,
int
n
)//функция проверяющая есть ли несколько максимальных элементов
{
Int d= max(a,n);
for (int i=0; i<n; i++)
if (d!=I && d ==a[i])
return true;
return false;
}
ЛИТЕРАТУРА:
1)C/C++. Архив программ. Код с комментариями Автор: Арт Фридман, Ларс Кландер, Марк Михаэлис, Херб Шильдт Издательство: Бином,2001 г .
2)C++. Учебный курс Автор: П. Франка Издательство: Питер,2003 г .
3)Как программировать на C++ Автор:Дейтел Х., Дейтел П
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
))//функция проверки наличия заданного элемента в массиве
{
a
,
n
,
zad
_
elem
);//функция удаляющая после каждого элемента с заданным значением,1 элемент, если он отличен от заданного
(
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Введите элемент для вставки:";
cin
>>
new
_
element
;
paste
(
a
,
n
,
new
_
element
,
zad
_
nomer
);//функция вставляющая элемент с заданным значением после элемента с заданным номером
(
a
,
n
);//функция вывода элементов массива
system("pause");
break;
delete[]a;
}
case
(4):
{
cout
<<"\
nВы выбрали пункт №4-Проверить есть ли в массиве два подряд идущих положительных элемента.";
cout
<<"\
nВведите количество элементов массива: ";
cin
>>
n
;
if
(
n
<2)
{
cout
<<"\
nКоличество элементов массива менее двух.";
return 7;
}
int*a = new int [n];
enter
(
a
,
n
);//функция ввода элементов массива
if
(
proverka
(
a
,
n
))//функция проверяющая есть ли в массиве два подряд идущих положительных элемента
cout
<<"\
n
Да, Массив содержит два подряд идущих положительных элемента. \n
";
else
cout
<<"\n Два подряд идущих положительных элементов не найдено.\n
";
system("pause");
break;
delete[]a;
}
case(0):break;
default: {break;}
};
}
while(choice!=0);
return 0;
}
void
enter
(
int
*
a
,
int
n
) // функция ввода массива, a – массив, n – длина массива
{
for (int i=0;i<n;i++)
{
cout<<"\n Введи "<<i+1<< " элемент= ";
cin>>a[i]; }
}
int
max
(
int
*
a
,
int
n
) // функция поиска номера максимального элемента
{
int numbermax=0, max=a[0];
for (int j=1; j<n;j++)
if (a[j]>max)
{
max=a[j];
numbermax=j;
}
return numbermax;
}
void print(int *a, int n) // функция вывода элементов массива
{
cout<<("\n Массив:");
for (int i=0;i<n;i++)
cout<<" "<<a[i];
cout<<endl;
}
bool
proverka
pologit
(
int
*
a
,
int
n
)//функция проверяющая есть ли в массиве два подряд идущих положительных элемента
{
for(int i=0;i<n-1;i++)
if ((a[i]>0)&&(a[i+1]>0))
return true;
return false;
}
void
paste
(
int
*
a
,
int
&
n
,
int
new
_
element
,
int
zad
_
nomer
)//функция вставляющая элемент с заданным значением после элемента с заданным номером
{
Int m=n+1;
Int *b=new int[m];
for (int i=0; i<=zad_nomer; i++)
b[i]=a[i];
b[zad_nomer+1]=new_element;
for (int i=zad_nomer+2; i<m; i++)
b[i]=a[i-1]
delete [] a;
a=b;
}
bool
poisk
(
int
*
a
,
int
n
,
int
zad
_
elem
)//функция проверяющая наличие заданного элемента в массиве
{
for( int i=0;i<n;i++)
if(a[i]==zad_elem)
return
true
;
return
false
;
}
void
int
*
a
,
int
&
n
,
int
zad
_
elem
)//функция удаляющая после каждого элемента с заданным значением, 1 элемент, если он отличен от заданного
{
for (int i=0; i<n; i++)
if (a[i]==zad_elem)
if (a[i+1]!=zad_elem)
{
for (i=i+1; i<n-1; i++)
a[i]=a[i+1];
n
=
n
-1;
}
}
int
kol
_
vo
(
int
*
a
,
int
maxim
,
int
n
)//функция вычисления количества элементов расположенных между центральным и максимальным элементами
{
int x;
x=(n/2)-maxim;
int
kol
=(
abs
(
x
)-1);
cout
<<"Количество элементов массива расположенных между максимальными центральным элементами = " << kol
<< "\
n
";
if
(
kol
==0)
cout
<<"Между центральными максимальным элементами нет элементов";
return
kol
;
}
bool
neskolko
(
int
*
a
,
int
n
)//функция проверяющая есть ли несколько максимальных элементов
{
Int d= max(a,n);
for (int i=0; i<n; i++)
if (d!=I && d ==a[i])
return true;
return false;
}
ЛИТЕРАТУРА:
1)C/C++. Архив программ. Код с комментариями Автор: Арт Фридман, Ларс Кландер, Марк Михаэлис, Херб Шильдт Издательство: Бином,
2)C++. Учебный курс Автор: П. Франка Издательство: Питер,
3)Как программировать на C++ Автор:Дейтел Х., Дейтел П