Автор работы: Пользователь скрыл имя, 22 Января 2011 в 15:04, курсовая работа
Определить количество элементов массива расположенных между максимальным и «центральным» элементами массива (предполагается, что число элементов – нечётное и максимальный элемент - единственный). Если по какой либо причине количество определить не удаётся, выдать об этом сообщение с указанием причины.
Условия и ограничения:
Если
в массиве присутствует заданный
элемент и последующий за ним элемент
отличен от заданного, то удаляется элемент
отличный от заданного стоящий после заданного
элемента.
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 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;
}
}
void print(int *a, int n) // функция вывода элементов массива
{
cout<<("\n Массив:");
for (int i=0;i<n;i++)
cout<<" "<<a[i];
cout<<endl;
}
3.5.
Контрольные примеры
Заданный элемент = 6 (номер элемента =4). Следующий элемент массива отличен от заданного = 5(номер элемента =5), поэтому он удаляется.
Полученный
массив: a = { 1 2 4 6 3 }
Заданный элемент = 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 равен заданному и является последним.
Поэтому выводится сообщение «Заданный
элемент является последним в массиве»
Выводится сообщение
«Ошибка! Количество элементов массива
должно быть не менее двух.»
Выводится сообщение
«Ошибка! Количество элементов массива
должно быть не менее двух.»
Выводится сообщение
«В массиве нет заданного элемента»
4. ЗАДАЧА 3
4.1
Условие задачи
Вставка
в вектор новых элементов. Вставить
в массив элемент с заданным значением,
после элемента с заданным номером.
Если вставка невозможна, выдать об этом
сообщение.
4.2
Постановка задачи
Входные данные:
itn
n – длина массива;
int
*а – массив;
int
new_element – заданное
значение;
int
zad_nomer
– заданный номер.
Выходные данные:
Измененный
массив а, при наличии в этом массиве
элемента с заданным номером.
Условия и ограничения:
Отсутствие
в массиве элемента с заданным номером.
4.3.
Описание алгоритма
Вставка
заданного элемента после элемента
с заданным номером paste(a,n,new_element,zad_
Если
элемент 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.
Контрольные примеры
Заданное значение = 7. Заданный номер = 3
Полученный
массив: a = { 1 2 9 7 4 5 }
Заданный номер = 9.
Выводится сообщение
«Ошибка! Массив не имеет элемента с заданным
номером, так как количество элементов
массива менее 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.
Контрольные примеры
Выводится
сообщение «Да, Массив содержит два
подряд идущих положительных элемента.»
Выводится
сообщение «В массиве один элемент»
Выводится
сообщение «Два подряд идущих положительных
элементов не найдено»
Выводится сообщение
«Количество элементов массива менее
двух..»
Выводится сообщение «Два подряд идущих положительных элементов не найдено.»