Задач з лабораторної роботи № 5

Задача А. Програмування задачі А з лабораторної роботи виконується діями і командами, яки наведени далі.

Крок 1. На диску D:\ створіть папку Lab_5.

Крок 2. Після запуску у роботу С++ Buіlder у меню Fіle виконайте

команду New. У результаті відкриється вікно New Іtems, де вибіраємо Consol Wіzard.

Крок 3. У вікні редактора коду наберіть наступний текст програми і виконайте компіляцію:

/***************************************************/

// Структура даних до трикутника з вершинами

// P1(x1, y1), P2(x2, y2), Р3(x3, y3)

/***************************************************/

//---------------------------------------------------------------------------

 

#pragma hdrstop

 

//---------------------------------------------------------------------------

#include <stdio.h>

#include <math.h>

#include <conio.h>

#include <alloc.h>

#define Xmax 52 /* 52 */

#define Xmin 5 /* 1 */

#define Ymax 21 /* 25 */

#define Ymin 3 /* 1 */

struct point {

float x,y;

} k[2];

/* функція для завдання координат вершин трикутника*/

point * scan_xy(void)

{

gotoxy(44,1);

printf("Введіть координати вершин трикутника:");

gotoxy(62,2);

printf(" вершина P1(x1,y1) ");

gotoxy(66,3);

printf(" x1="); scanf("%f",&k[0].x);

gotoxy(66,4);

printf(" y1="); scanf("%f",&k[0].y);

gotoxy(62,5);

printf(" вершина P2(x2,y2) ");

gotoxy(66,6);

printf(" x2="); scanf("%f",&k[1].x);

gotoxy(66,7);

printf(" y2="); scanf("%f",&k[1].y);

gotoxy(62,8);

printf(" вершина P3(x3,y3) ");

gotoxy(66,9);

printf(" x3="); scanf("%f",&k[2].x);

gotoxy(66,10);

printf(" y3="); scanf("%f",&k[2].y);

return k;

}

/* функція з обчислення коефіцієнтів для*/

/* масштубування координат до вершин трикутника на рисунку */

float * m_ko(struct point k[])

{

float xma,xmi,ymi,yma;

static float * mk;

int i;

xma = k[0].x; xmi = k[0].x;

yma = k[0].y; ymi = k[0].y;

for(i=0; i<=2; i++)

{

if(k[i].x > xma)

xma = k[i].x;

if(k[i].x < xmi)

xmi = k[i].x;

}

for(i=0; i<=2; i++)

{

if(k[i].y > yma)

yma = k[i].y;

if(k[i].y < ymi)

ymi = k[i].y;

}

mk = (float *) calloc(2, sizeof(float));

* mk= yma;

*(mk + 1) = xma;

return mk;

}

 

/* функція до розрахунку масштабованих координат*/

/* вершин трикутника і їхній показ на рисунку*/

void out_point(struct point k[], float mk[])

{ int i;

double x,y;

float s;

for(i=0; i<=2; i++)

{

y = Ymax - ((k[i].y * (Ymax - Ymin))/mk[0]);

x = Xmin + ((k[i].x * (Xmax - Xmin))/mk[1]);

gotoxy(floor(x), floor(y)); textcolor(MAGENTA);

textbackground(WHITE); textcolor(BLACK);

cprintf("o"); gotoxy(floor(x) + 1, floor(y));

textmode(LASTMODE); textbackground(WHITE);

textcolor(BLACK);

cprintf("P%d\a",i + 1);

textmode(LASTMODE);

s = k[0].x *(k[1].y-k[2].y) + k[1].x *(k[2].y-k[0].y);

s = (s + k[2].x *(k[0].y-k[1].y))/2;

gotoxy(40,23);

printf("Площа трикутника S=%f",fabs(s));

textbackground(WHITE);

gotoxy(1,23); textcolor(BLACK);

printf(" Лабораторна"); gotoxy(1,24);

printf(" робота N5");

textbackground(WHITE);

gotoxy(50,24); textcolor(BLACK);

printf(" Натиснути будь-яку клавішу");

textmode(LASTMODE); gotoxy(3,22);

printf("0.00\t|\t|\t|\t|\t|\t%f ---> X ",mk[1]);

gotoxy(1,2);

printf("%f",mk[0]);

gotoxy(2,3); printf("Y ^");

gotoxy(4,4); printf("|");

gotoxy(4,5); printf("|");

gotoxy(4,6); printf("-");

gotoxy(4,10); printf("-");

gotoxy(4,15); printf("-");

gotoxy(4,20); printf("-");

gotoxy(78,24);

}

}

 

/*функція фарбування полю під рисунок*/

void pole(void)

{

int x,y;

for(y = Ymin; y <= Ymax; y++)

{ for(x = Xmin; x <= Xmax; x++)

{

gotoxy(x,y); textbackground(GREEN);

cprintf(" ");

}

}

}

 

//------------------------------------------------------------------------

#pragma argsused

int main(int argc, char* argv[])

{

clrscr();

scan_xy();

pole();

out_point(k, m_ko(k));

getch();

return 0;

}

 

//---------------------------------------------------------------------------

Задача Б. Для файлу створеного до задачі А з лабораторної роботи № 5 виконуємо команди програмного відладчика С++ Builer, яки наведені у пункті 5.2. Необхідно вивчити методику використання наступних команд програмного відладчика:

- команди майстра з оцінки виразів (Tooltip Expression Evaluation);

- команди вікна спостережень у програмі значень змінних (Watch List);

- команди вікна з оцінки і модифікації значень (Evaluate/Modify);

- команди з використання крапок переривання без хрестиків (breakpoint);

- команди з спостереження появи хрестиків на breakpoint;

- трасування програми С++ по кроках командами з таблиці 5-1.

 

 

Таблиця 5-1.

Команда "Гарячі" клавіші Дія команди
Step Over (По кроках без заходу в….) F8 Покрокове виконання рядків програми, вважаючи виклик функції за один рядок, тобто вхід у функцію не виконується.
Trace Into (Трасування з заходом у...) F7 Покрокове виконання рядків програми з заходом у функцію, яка буде визвана.
Trace to Next Source Line (Трасування до наступного рядка) Shift+F7 Перехід до наступного рядку програми, що виконується.
Run toCursor (Виконати до курсора) F4 Виконується програма до того місця (виконуємого оператора), де розташован курсор у програмі.
Run Until Return (Виконати до виходу з функції) Shift+F8 Виконання програми до виходу з викликаної функції з зупинкою на операторі, що викликає функцію.
Show Execution Point (Показати крапку виконання) - Міститься курсор на операторі, що буде виконуватись наступним.

 

5.5 Контрольні питання до лабораторної роботи № 5

1. Пояснить, до яких задач необхідно у програмах С++ оголошувати

змінні з данимі типу "структура".

2. Покажить можливі варіанти оголошення структур.

3. Пояснить правила запису значень і читання значень у полях змінної структурного типу і покажчика на структуру.

4. Покажить формат оголошення структур з бітовими полями.

5. Покажить дію команд з трасировки програми С++ по кроках.

6. Покажить методику використання команди breakpoint для пошуку

помилок у програмних модулях до прикладної програми С++.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: