2.3.2 Програма та програмна реалізація

Дане завдання реалізоване у модулі TASK3.CPP (TASK3.EXE)

На початку програми оголошений масив р[10][10]. Оголошений лічильник k – який підраховує кількість локальних мінімумві у матрицці. Під час запуску підпрограма запитує користувача розмірності матриці n. Після цього вона заповняється елементами. Наступним етапом є опрацювання матриці оператором for. Після опрацювання виводиться повідомлення про кількість локальних мінімумів k та інфориація про кожного з них. Програма побудована згідно алгоритму:

void TASK3()



Розглянемо програму:

 //Task3.cpp

#include <iostream.h>

#include <conio.h>

void TASK3(){

clrscr();

int i,j,n,k,k1;

k=0;

int p[10][10];

cout<<"Vvedit znachenia n:"<<"\n";

cin>>n;

for (i=0; i<=n-1; i++ ){

for (j=0; j<=n-1; j++){

cout<<"Vvedit znachenia p["<<i<<"]["<<j<<"]: ";

cin>>p[i][j];}

}

for (i=0; i<=n-1; i++ )

for (j=0; j<=n-1; j++){

k1=0;

if ((i==0) || (p[i-1][j]>p[i][j])) k1++;

if ((i==n-1) || (p[i+1][j]>p[i][j])) k1++;

if ((j==0) || (p[i][j-1]>p[i][j])) k1++;

if ((i==n-1) || (p[i][j+1]>p[i][j])) k1++;

if (k1==4){k++; cout<<"Inform pro lokalnuy minimymiv"<<endl; cout<<"p["<<i<<"]["<<j<<"]="<<p[i][j]<<endl;

}

cout<<endl;}

cout<<"Kilkist lokalnux minimymiv\n"<<k;

getch();

}


2.3.3 Тестування завдання

Для тесту були введені наступні значення(рис. 2.331). В результаті був отриманий наступний результат:

Рис. 3.31 Тестовий приклад Task3.cpp

2.4 Завдання 4 Операції над лінійним списком. Робота з динамічною пам’яттю

 

2.4.1 Постановка завдання

Визначено наступний покажчик на початок лінійного списку:

struct Node // NODE: вузол лінійного списку

{

Node *pLink; // Pointer LINK:

 // Покажчик на черговий вузол

float Info // INFOrmation: інформація

 } *Start;


Написати прототип, визначення і приклад виклику функції для видалення зі списку k останніх елементів із звільненням зайнятої ними пам’яті. В окркмому випадку, перед викликом цієї функції лінійний список може бути порожній або може містити будь-яку кількість елементів.

Усі вихідні дані (покажчик на корінь лінійного списку, кількість що видаляються елементів) і результати виконання функції (покажчик на початок лінійного списку) повинні передаватися через список параметрів.

 

2.4.2 Програма та програмна реалізація

Дане завдання реалізоване у модулі TASK4.CPP (TASK4.EXE)

Опишемо алгоритм роботи даної програми:

Створено список (Node *pLink;),у якому оголошено наступні функції:

void func(Node *Start); // Відповідає за видалення

 елементів зі списку

void vvid(); // Вводимо елементи списку

 (кінцевий елемент - 0)

void vuvid(Node *Start); // Виводить результат, без останніх

 k- елементів

void clear(Node *Start); // Звільняє займану ними пам’ять

Розглянемо програму:

// Task4.cpp

#include <iostream.h>

#include <conio.h>

struct Node

 {

Node *pLink;

float Info;

 } *Start, *Cur, *New, *Prev;

int n=0;

void func(Node *Start);

void vvid();

void vuvid(Node *Start);

void clear(Node *Start);

char Empty;

void TASK4()

 {

clrscr();

vvid();

vuvid(Start);

func(Start);

vuvid(Start);

clear(Start);

getch();

 }

void vvid()

 {

cout << "Vvedit elementu spusky (kintsevuj element - 0):\n";

Cur = new Node;

Start = Cur;

do

 {

Prev = Cur;

cin >> Cur->Info;

Cur->pLink = new Node;

Cur = Cur->pLink;

n++;

} while(Prev->Info != 0);

Prev->pLink = NULL;

delete Cur;

n--;

Cur = Start;

while(Cur->pLink != NULL)

 {

Prev=Cur;

Cur=Cur->pLink;

 }

if(Start==Cur) Start = NULL;

 else

 {

Prev->pLink=NULL;

delete Cur;

 }

 }

void vuvid(Node *Start)

 {

if(Start != NULL)

 {

cout << "\n\nVvedenuj spusok:\n";

Cur = Start;

while(Cur != NULL)

 {

cout << Cur->Info << " ";

Cur = Cur->pLink;

 }

cout << "\n\n";

}

Else {

cout << "\nVu ne vvelu spusok";

Empty ='y'; }

}

void func(Node *Start) {

if(Start != NULL)

 { int k;

Cur=Start;

cout << "Vvedit kilkist elementiv do vudalennja: ";

cin >> k;

if(k<n) {

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

 { Prev=Cur;

Cur=Cur->pLink;

 }

Prev->pLink=NULL;

while(Cur!=NULL)

 {

Prev=Cur;

Cur=Cur->pLink;

delete Prev;

}

 }

else

cout << "Vu vvelu kilkist bilshy abo rivny kilkosti elementiv y Zpusky"; }

}

void clear(Node *Start) {

if(Start != NULL) {

Cur = Start;

while(Cur != NULL) {

Prev = Cur;

Cur = Cur->pLink;

delete Prev; }

delete Cur; }

}

2.4.3 Тестування завдання

При запуску програми з’являється повідомлення з проханням ввести елементи списку (кінцевий елемент списку - 0). Вводимо елементи списку. Натискаємо клавышу enter і появляється перелік всіх введених елементів списку. Після цього слід ввести кількість k - останніх елементів для видалення з кінця списку із звільненням займаної ними пам’яті. Кінцевим результатом є вивід на екран списку без k останніх елементів і звільнення займаної ними пам’яті(рис. 3.41).

Рис. 3.41 Приклад видалення k останніх елементів зі списку із звільненням пам’яті

2.5 Програма-монітор

2.5.1 Постановка завдання

Написати програму-монітор,яка б об’єднувала всі модулі, додати інформацію про автора і протестувати роботу проекту


2.5.2 Програма та програмна реалізація

Дане завдання реалізоване у модулі MAIN.CPP (MAIN.EXE)

Даний проект складається з 6 модулів та основного модуля, в якому міститься головна функція main() проекту. Додаткові модулі не зв’язані один з одним, а лише з головним модулем.

Загальна схема проекту із способами взаємодії між модулями наведена на рисунку 2.521


Рис. 2.521 Схема проекту

Розбиття програми на різні процедури визначається логічною структурою програми. Використання додаткових модулів дозволило спростити реалізацію проекту та більш наочно показати взаємодію одних частин проекту з іншими та значно зменшити час на відлагодження та компіляцію цілого проекту.

MAIN.CPP (додаток 1) – основний файл проекту, в ньому знаходиться послідовність дій програми, тобто в даному модулі програма викликає інші підмодулі які виконуюсь певну функцію. Програма спочатку запускає електронну титульну сторінку курсової роботи і для продовження просить натиснути будь яку клавішу, після цього виводить головне меню, в якому запитує виконання наступної дії. Після кожної виконаної дії програма виводить головне меню.

Всі ці дії безпосередньо виконуються лише запуском відповідних функцій з додаткових модулів. Крім того, функція GRAPH() ініціалізує графічний режим, підключаючи BGI драйвер EGAVGA.BGI.

Програма-монітор побудована згідно алгоритму(додатку 5).

Опишу словесно алгоритм роботи основного модулю проекту.

Цей модуль є основним меню програми, в якому надається змога вибрати любе завдання. Він містить наступні функції:

void TYTUL() – виводить титульну сторінку проекту,

void GRAPH() – ініціалізує графічний режим, підключаючи BGI драйвер EGAVGA.BGI,

void TASK1() – запускає перше завдання на виконання,

void TASK2() – запускає друге завдання на виконання,

void TASK3() – запускає третє завдання на виконання,

void TASK4() – запускає четверте завдання на виконання,

void AVTOR() – виводить повідомлення про автора проекту.

До нього підключаються усі інші модулі програми і саме з нього вони починають своє виконання. При запуску програми цей модуль починає виконання TYTUL, тобто він ініціалізовує графічний режим і виводить титульну сторінку на екран. Після цього необхідно натиснути будь-яку клавішу, щоб повернутися в головне меню. Кожному пункту меню відповідає відповідна цифра, після вводу якої запускаються інші функції (наприклад підкючення графічного режиму за допомогою функції GRAPH() і виконання підпрогами виводу повідомлення про автора - AVTOR(), це ввід цифри 6).

Підпрограма AVTOR(додаток 3). Спочатку встановлюється колір фону, після цього встановлюється колір тексту, що містить іформацію про автора. Після цього виконується затримка цього зображення на екрані монітора за допомогою функції getch() і після натискання будь-якої клавіші виконується очистка екрану за допомогою функції clrscr() і пвернення до основного меню.

Підпрограма TYTUL(додаток 2) містить лише іншу текстову інформацію. Після натискання клавіші enter підпрограма повертається у головне меню функції main().

 


Информация о работе «Розробка програм мовою С++»
Раздел: Информатика, программирование
Количество знаков с пробелами: 42425
Количество таблиц: 0
Количество изображений: 17

Похожие работы

Скачать
29682
0
0

... системах наукової класифікації. Однак перш ніж зануритися в об’єктно-орієнтовану розробку, давайте розглянемо деякі з властивостей, загальні для класу "об'єктів". Абстракція Ціль об'єктно-орієнтованого програмування полягає в тому, щоб побачити в задачі абстракції об'єктів реального світу. Що за реальні об'єкти малися на увазі? Буквально будь-які, аби вони давали представлення про функці ...

Скачать
27398
0
2

... процесором, тільки коли він працює в приміщенням режимі. Метою виконання даної курсової роботи є отримання практичних навичок роботи програмування мовою асемблера. Підсумком виконання курсової роботи є розробка алгоритму контролю на парність масиву даних, що зберігається в деякій області пам'яті і програми на мові асемблера, який реалізує даний алгоритм. 1. Загальний розділ Надійність ...

Скачать
13575
0
8

... x запишеться у вигляді наступної функції цей запис представляє собою приклад програми на мові Lisp. В даному курсовому проекті на мови Lisp розроблено програму Sierpins, яка реалізує побудову рекурсивних кривих Серінського. На початку програми встановлюється значення змінної *VMode*‚ яка керує установкою відео режиму, і за замовчуванням встановлена в значення 18. Ця установка відповідає ...

Скачать
28806
1
17

... сть у користуванні та невеликі розміри виконавчого файлу.. Створена нами програма проста та інтуїтивно зрозуміла і легка у користуванні. У пояснювальній записці вповні розглянута проблема пошуку коренів нелінійних рівнянь, наведені необхідні формули та теореми. Крім того, побудовані блок-схеми алгоритмів основних функцій відповідають діючим стандартам і вимогам. Отже, можемо зробити висновок, ...

0 комментариев


Наверх