Учебная работа. Реферат: Модульное программирование 4

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Контрольные рефераты

Учебная работа. Реферат: Модульное программирование 4

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 Постановка задачки

Входные данные:

intn – длина массива;

int*а – массив.

Выходные данные:

Функция kol_vo(a,maxim,n), которая возвращает количество частей массива, находящихся меж наибольшим элементом и центральным элементом.

Условия и ограничения:

Массив должен содержать нечётное количество частей. Если при вводе длины массива число nоказывается чётным выводится сообщение «Ошибка! количество частей обязано быть нечётным».

2.3. Описание метода

Проверка присутствия нескольких наибольших частей neskolko(a,n).

Если наибольший элемент встречается в массиве не один раз (if (maxim!=I&& maxim==a[i])) то выводим: «Ошибка! В массиве несколько наибольших частей.», по другому вычисляем и выводим

2.4. Реализация решения задачки

Решение задачки 1 оформлено в виде подпрограммы kol_vo(a,maxim,n)
которая употребляет подпрограммы:

— enter(a,n)– функция ввода массива;

— max (a,n)– функция поиска номера наибольшего элемента;

— neskolko(a,n)
функция проверки единственности наибольшего элемент в массиве;

текст подпрограмм:

voidenter(int *a, intn) //функция ввода массива
a – массив, n – длина массива

{

for (int i=0;i<n;i++)

{

cout<<«n Введи «<<i+1<< » элемент: «; cin>>a[i]; }

}

intmax(int *a, intn) //функция поиска номера наибольшего элемента

{

int numbermax=0, max=a[0];

for (int j=1; j<n;j++) if (a[j]>max)

{

max=a[j];

numbermax=j;

}

returnnumbermax;

}

boolneskolko(int*a ,intn)//функция проверяющая есть ли несколько наибольших частей

{

Int d= max(a,n);

for (int i=0; i<n; i++)

if (d!=I && d ==a[i])

return true;

returnfalse;

}

intkol_vo(int*a, intmaxim, intn)//функция вычисления количества частей расположенных меж центральным и наибольшим элементами, maxim
номер наибольшего элемента

{

int x;

x=(n/2)-maxim;

intkol=(абс(x)-1);

cout <<«количество частей массива расположенных меж наивысшими центральным элементами=» << kol << «n»;

if (kol==0)

cout<<«Меж центральными наибольшим элементами нет частей»;

returnkol;

}

2.5. Контрольные примеры

1) n=7, a = { 1 2 3 6 5 9 3 } (вариант когда наибольший элемент находится справа от центрального элемента).

Центральный элемент = 6, номер центрального элемента = 4;

Наибольший элемент = 9, номер наибольшего элемента = 6;

количество частей меж наибольшим элементом и центральным элементом

kol= (абс((7/2)-6)-1)= 1

2) n=9, a = { 9 2 3 -1 4 5 4 7 8} (вариант когда наибольший элемент находится слева от центрального элемента).

Центральный элемент = 4, номер центрального элемента = 5;

Наибольший элемент = 9, номер наибольшего элемента = 1;

количество частей меж наибольшим элементом и центральным элементом kol= (абс((9/2)-1)-1)= 3

3) n=5, a = { 1 4 5 3 2} (вариант когда центральный элемент и наибольший элемент совпадают).

Центральный элемент = 5, номер центрального элемента = 3;

Наибольший элемент = 5, номер наибольшего элемента = 3;

Выводится сообщение «Центральный и наибольший элемент совпадают!»

4)
=3, a = {1 2 4} (вариант когда меж центральным элементом и наибольшим элементом нет частей).

Центральный элемент = 2, номер центрального элемента = 2;

Наибольший элемент = 4, номер наибольшего элемента = 3;

количество частей меж наибольшим элементом и центральным элементом

kol= (абс((3/2)-3)-1)= 0 Выводится сообщение «Меж центральным и наибольшим элементами нет частей»

5)
<=0, a – отсутствуют

Выводится сообщение «Массив пуст!»

6)
1, a=1

Выводится сообщение «Центральный и наибольший элемент совпадают.»

7) n
3, a={0 0 0}

Выводится сообщение «Ошибка! В массиве несколько наибольших частей. »

8) n
4, a={1 2 3 4}

Выводится сообщение «Ошибка! количество частей обязано быть нечётным »

3. ЗАДАЧА 2

3.1 Условие задачки

Удаление частей вектора. Опосля всякого элемента с данным значением, удалить один элемент, если он отличен от данного значения. Если удаление частей нереально, выдать о этом сообщение.

3.2 Постановка задачки

Входные данные:

Intn – длина массива;

Int*а – массив;

Intzad_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), – функция вывода массива.

текст подпрограмм:

intpoisk(int*a, intn, intzad_elem)//функция проверяющая наличие данного элемента в массиве

{

for( int i=0;i<n;i++)

if(a[i]==zad_elem)

return true;

returnfalse;

}

voiddel(int*a, int &n, intzad_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;

}

}

voidprint(int *a, intn) //функция вывода частей массива

{

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 – отсутствуют

Выводится сообщение «Ошибка! количество частей массива обязано быть не наименее 2-ух.»

6) n
1, a=1

Выводится сообщение «Ошибка! количество частей массива обязано быть не наименее 2-ух.»

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 оформлено в виде подпрограммы
которая употребляет подпрограммы:

— 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

Данное

Приобретенный массив:
= { 1 2 9 7 4 5 }

2) n=5, a = { 1 2 3 4 0 }, int zad_nomer
9

Данный номер = 9.

Выводится сообщение «Ошибка! Массив не имеет элемента с данным номером, потому что количество частей массива наименее 9»

3)
<=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

Приобретенный массив:
= { 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 – { }

Выводится сообщение «Количество частей массива наименее 2-ух..»

5) n
3, a={0 0 0}

Выводится сообщение «Два попорядку идущих положительных частей не найдено.»

ОПИСАНИЕ ОСНОВНОЙ ПРОГРАММЫ

6.1 Описание данных

Описание глобальных данных:

proverka pologit

Описание локальных данных:

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_____________________________________

функция ввода массива

функция вывода массива

функция находящая номер наибольшего элемента

функция проверяющая наличие данного элемента в массиве

функция удаляющая Опосля всякого элемента с данным значением, 1 элемент, если он отличен от данного

функция вставляющая элемент с данным значением опосля элемента с данным номером

функция проверяющая есть ли в массиве два попорядку идущих положительных элемента

функция нахождения количества частей расположенных меж центральным и наибольшим элементами

функция проверки единственности наибольшего элемент в массиве

>>>>>>>>>>>>>>>>>>> МЕНЮ <<<<<<<<<<<<<<<<<<<<

nЗадание № 1. Отыскать количество частей массива расположенных меж наибольшим и центральным элементами.

nЗадание № 2. Опосля всякого элемента с данным значением, удалить 1 элемент, если он отличен от данного

nЗадание № 3. Вставить элемент с данным значением опосля элемента с данным номером

nЗадание № 4. Проверить есть ли в массиве два попорядку идущих положительных элемента

Выход

Выберизадание

Вы избрали пункт №1-Отыскать количество частей массива расположенных меж наибольшим и центральным элементами

nВведите количество частей массива:

проверка на наличие частей в массиве

Массив пуст

проверка на чётность размерности массива

Ошибка! количество частей обязано быть нечётным

функциявводаэлементоввмассив

))//проверка на совпадения номера наибольшего и центрального элемента

Центральный и наибольший элемент совпадают

функция проверки единственности наибольшего элемент в массиве

Ошибка! В массиве несколько наибольших частей

функция нахождения количества частей расположенных меж центральным и наибольшим элементами

nВы избрали пункт №2-Опосля всякого элемента с данным значением, удалить 1 элемент, если он отличен от данного

Введите количество частей массива

Ошибка! количество частей массива обязано быть не наименее 2-ух

функция ввода частей массива

nВведите данный элемент для сопоставления:

Данный элемент является крайним в массиве

функция проверки наличия данного элемента в массиве

функция удаляющая опосля всякого элемента с данным значением,1 элемент, если он отличен от данного

функция вывода частей массива

В массиве нет данного элемента

nВы избрали пункт № 3-Вставить элемент с данным значением опосля элемента с данным номером

Введите количество частей массива

Массив пуст

функция ввода частей массива

Введите номер элемента опосля которого нужно произвести вставку:

если данный номер превосходит размерность массива

Ошибка! Массив не имеет элемента с данным номером, потому что количество частей массива наименее

Введите элемент для вставки

функция вставляющая элемент с данным значением опосля элемента с данным номером

функция вывода частей массива

Вы избрали пункт №4-Проверить есть ли в массиве два попорядку идущих положительных элемента

Введите количество частей массива:

количество частей массива наименее 2-ух

функция ввода частей массива

функция проверяющая есть ли в массиве два попорядку идущих положительных элемента

Да, Массив содержит два попорядку идущих положительных элемента

nДва попорядку идущих положительных частей не найдено

функция ввода массива, a – массив, n – длина массива

Введи
элемент

функция поиска номера наибольшего элемента

функция вывода частей массива

Массив

функция проверяющая есть ли в массиве два попорядку идущих положительных элемента

функция вставляющая элемент с данным значением опосля элемента с данным номером

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;

функция проверяющая наличие данного элемента в массиве

функция удаляющая опосля всякого элемента с данным значением, 1 элемент, если он отличен от данного

функция вычисления количества частей расположенных меж центральным и наибольшим элементами

количество частей массива расположенных меж наивысшими центральным элементами

Меж центральными наибольшим элементами нет частей

функция проверяющая есть ли несколько наибольших частей

Int d= max(a,n);

for (int i=0; i<n; i++)

if (d!=I && d ==a[i])

return true;

returnfalse;

}

ЛИТЕРАТУРА:

1)C/C++. архив программ. Код с комментами Создатель: Арт Фридман, Ларс Кландер, Марк Михаэлис, Херб Шильдт Издательство: Двучлен, 2001 г.

2)C++. Учебный курс Создатель: П. Франка Издательство: Питер, 2003 г.

3)Как программировать на C++ Создатель:Дейтел Х., Дейтел П

]]>