Модульное программирование. 2
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 |
|
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. Проверка состояния вектора. Проверить
содержаться ли в массиве два подряд идущих
положительных элемента.
Объединить
решение задач в одну программу.
Реализовать программу
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.
Контрольные примеры
- n=7, a = { 1 2 3 6 5 9 3 } (случай когда максимальный элемент находится справа от центрального элемента).
Центральный элемент = 6, номер центрального элемента = 4;
Максимальный элемент = 9, номер максимального элемента = 6;
Количество элементов между максимальным элементом и центральным элементом
kol= (abs((7/2)-6)-1)=
1
- n=9, a = { 9 2 3 -1 4 5 4 7 8} (случай когда максимальный элемент находится слева от центрального элемента).
Центральный элемент = 4, номер центрального элемента = 5;
Максимальный элемент = 9, номер максимального элемента = 1;
Количество элементов
между максимальным элементом и
центральным элементом kol= (abs((9/2)-1)-1)=
3
- n=5, a = { 1 4 5 3 2} (случай когда центральный элемент и максимальный элемент совпадают).
Центральный элемент = 5, номер центрального элемента = 3;
Максимальный элемент = 5, номер максимального элемента = 3;
Выводится
сообщение «Центральный и максимальный
элемент совпадают!»
- n=3, a = {1 2 4} (случай когда между центральным элементом и максимальным элементом нет элементов).
Центральный элемент = 2, номер центрального элемента = 2;
Максимальный элемент = 4, номер максимального элемента = 3;
Количество элементов между максимальным элементом и центральным элементом
kol= (abs((3/2)-3)-1)=
0 Выводится сообщение «Между центральным
и максимальным элементами нет элементов»
- n<=0, a – отсутствуют
Выводится сообщение
«Массив пуст!»
- n=1, a=1
Выводится сообщение
«Центральный и максимальный элемент
совпадают.»
- n=3, a={0 0 0}
Выводится сообщение
«Ошибка! В массиве несколько максимальных
элементов. »
- 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 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.
Контрольные примеры
- n=6, a = { 1 2 4 6 5 3 }, zad_elem=6
Заданный элемент = 6 (номер элемента =4). Следующий элемент массива отличен от заданного = 5(номер элемента =5), поэтому он удаляется.
Полученный
массив: a = { 1 2 4 6 3 }
- 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 равен заданному и является последним.
Поэтому выводится сообщение «Заданный
элемент является последним в массиве»
- n<=0, a – отсутствуют
Выводится сообщение
«Ошибка! Количество элементов массива
должно быть не менее двух.»
- n=1, a=1
Выводится сообщение
«Ошибка! Количество элементов массива
должно быть не менее двух.»
- 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_
Если
элемент 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.
Контрольные примеры
- 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 }
- n=5, a = { 1 2 3 4 0 }, int zad_nomer=9
Заданный номер = 9.
Выводится сообщение
«Ошибка! Массив не имеет элемента с заданным
номером, так как количество элементов
массива менее 9»
- n<=0, a – отсутствуют
Выводится сообщение
«Массив пуст.»
- n=1, a=1, int zad_nomer=9
Выводится сообщение
«Ошибка! Массив не имеет элемента с заданным
номером, так как количество элементов
массива менее»
- 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.
Контрольные примеры
- n=5, a = { -5 3 2 -2 -1 }
Выводится
сообщение «Да, Массив содержит два
подряд идущих положительных элемента.»
- n=1, a = { 1 }
Выводится
сообщение «В массиве один элемент»
- n=3, a = { 0 -9 -2 }
Выводится
сообщение «Два подряд идущих положительных
элементов не найдено»
- n<=0, a – { }
Выводится сообщение
«Количество элементов массива менее
двух..»
- n=3, a={0 0 0}
Выводится сообщение «Два подряд идущих положительных элементов не найдено.»

- Модульное программирование
- Модульное программирование
- Модульное программирование
- Модульное программирование. Интеллектуальная собственность
- Модульное программирование на примере сортировки последовательностей
- Модульно обучение на уроках спецтехнологии
- Модульно-рейтингове навчання в школі
- Модуль манипулятора промышленного робота
- Модуль Маркетинг и управление качеством АН «Недвижимость»
- Модульная керамика
- Модульная технология на уроках информатики в школе
- Модульная технология обучения
- Модульное обучение
- Модульное обучение в школе