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 Постановка задачи
Входные данные:
itnn – длина массива;
int*а – массив;
int new_element – заданное значение;
intzad_nomer – заданный номер.
Выходные данные:
Измененный массив а, при наличии в этом массиве элемента с заданным номером.
Условия и ограничения:
Отсутствие в массиве элемента с заданным номером.
4.3. Описание алгоритма
Вставка заданного элемента после элемента с заданным номером paste(a,n,new_element,zad_nomer).
Если элемент cзаданным номером найден после него производится вставка заданного значения.
4.4. Реализация решения задачи
Решение задачи 3 оформлено в виде подпрограммы paste, которая использует подпрограммы:
- entery(a,n) – функция ввода массива;
- print (a,n) – функция вывода массива.
Текст подпрограмм:
voidpaste(int*a ,int&n ,intnew_element, intzad_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).
Текст подпрограммы:
boolproverka(int*a,intn)//функция проверяющая есть ли в массиве два подряд идущих положительных элемента
{
for(int i=0;i<n-1;i++)
if ((a[i]>0)&&(a[i+1]>0))
return true;
returnfalse;
}
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); //функция ввода массива
voidprint(int *a, intn); // функция вывода массива
intmax(int *a, intn); // функция находящая номер максимального элемента
intpoisk(int*a,intn,intzad_elem);//функция проверяющая наличие заданного элемента в массиве
voiddel(int*a,int &n,intzad_elem);//функция удаляющая После каждого элемента с заданным значением, 1 элемент, если он отличен от заданного
voidpaste(int*a,int &n,intnew_element,intzad_nomer);//функция вставляющая элемент с заданным значением после элемента с заданным номером
boolproverka pologit(int*a,intn);//функция проверяющая есть ли в массиве два подряд идущих положительных элемента.
intkol_vo(int*a,intmaxim,intn);//функция нахождения количества элементов расположенных между центральным и максимальным элементами
boolneskolko(int*a,intn);//функция проверки единственности максимального элемент в массиве
Описание локальных данных:
int *а – массив.
Intn – длина массива.
Intchoice – номер задания, выбираемого из меню.
Intnumbermax – номер максимального элемента.
Intzad_elem – значение элемента для сравнения
Intzad_nomer – заданный номер элемента после которого необходимо произвести вставку
Intnew_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); //функция ввода массива
voidprint(int *a, intn); // функция вывода массива
intmax(int *a, intn); // функция находящая номер максимального элемента
boolpoisk(int*a,intn,intzad_elem);//функция проверяющая наличие заданного элемента в массиве
voiddel(int*a,int &n,intzad_elem);//функция удаляющая После каждого элемента с заданным значением, 1 элемент, если он отличен от заданного
voidpaste(int*a,int &n,intnew_element,intzad_nomer);//функция вставляющая элемент с заданным значением после элемента с заданным номером
boolproverkapologit(int*a,intn);//функция проверяющая есть ли в массиве два подряд идущих положительных элемента
intkol_vo(int*a,intmaxim,intn);//функция нахождения количества элементов расположенных между центральным и максимальным элементами
boolneskolko(int*a,intn);//функция проверки единственности максимального элемент в массиве
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 элемент, если он отличен от заданного.";