Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
сука лаби.docx
Скачиваний:
17
Добавлен:
12.05.2015
Размер:
848.39 Кб
Скачать

//Функція

int function (int *x )

{

int s = 0, n; int* z;pt;pt; //об'ява простих змiнних та вказiвника

pta(s); pta(z); ptv(s); ptv(z); pt; //їх параметри

cout << " input value for n =";

cin >> n; //введення розмiру масиву

z = new int[n]; //створення динамiчного масиву z у пам'ятi

ptv(z); ptvp(z); pt; //новi параметри вказiвника z

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

{

z[i] = x[i]; //iнiцiалiзацiя масиву z

s += z[i]; // розрахунок суми елементiв

}

delete[]z;

return s;

}

/*Лабораторна робота 14 (файл LAB14A.CPP)*/

/*Вивчення розподiлу пам"ятi */

#include <conio.h>

#include <iostream.h>

// макрокоманди

#define pt cout << "\n"

#define pta(z) cout << " Address "#z" = "<<&z

#define ptv(v) cout << " Value "#v"= "<<v

#define ptvp(p) cout << " Value at pointer "#p" = "<<*p

//Глобальнi змiнна y1 та вказiвник на змiнну цiлого типу y2

int y1 = 1,*y2;

main ()

{

clrscr(); pt;

//Адреси та значення глобальних даних

pta(y1); ptv(y1); pt; pta(y2); ptv(y2); pt;

y2 = &y1; //встановлення вказiвника у2 на змiнну у1

pta(y2); ptv(y2); ptvp(y2); pt; // новi параметри вказiвника у2

// auto variables and pointers

int x = 10, *x1, **x2, *x3;

pta(x); ptv(x); pt; //address and value of локальної змiнної x

pta(x1); ptv(x1); ptvp(x1); pt; //address and value of вказiвника x1

x1 = &x; //встановлення вказiвника х1 на змiнну х

pta(x1); ptv(x1); ptvp(x1); pt; //новi параметри вказiвника х1

pta(x3); ptv(x3); ptvp(x3); pt; //параметри вказiвника х3

x3 = new int; //резервування мiсця для змiнної

pta(x3); ptv(x3); ptvp(x3); pt; //новi параметри вказiвника х3

x3 = x1; //вказiвники вказують на ту ж саму змiнну х

pta(x3); ptv(x3); ptvp(x3); pt; //новi параметри вказiвника х3

pta(x2); ptv(x2); ptvp(x2); pt; // параметри вказiвника х2

ptv(x3); //значення змiнної х

++x3; //змiна адреси у вказiвниковi

ptv(x3); pt; //значення у пам'ятi за цiєю адресою

*x3 = 100; //запис туди нового значення

x2 = &x3; //запис адреси вказiвника х3 у вказiвник х2-

// створення подвiйної (непрямої) вказiвки на нову змiнну

// iз значенням 100 , у якої немає iменi

pta(x2); ptv(x2); pt; //звернення за значенням до нової змiнної

delete x3;

//Динамічні масиви

int a[4] = {1, 2, 3, 4 }, *a1, i; //описи змiнних

pta(a); pta(a1); pt; //адреси масиву та вказiвника а1 ptvp(a); ptvp(a1); pt; // значення за цими адресами

a1 = a; //встановлення вказiвника а1 на початок масиву

ptv(a1); ptvp(a1); pt; //новi параметри вказiвника а1

int *b; pta(b); ptv(b); ptvp(b); pt; // параметри вказiвника b

b = new int[4]; //створення динамiчного масиву b у пам'ятi

pta(b); ptv(b); ptvp(b); pt; //новi параметри вказiвника b

//запис значень у масив b та виведення на екран

cout << "\n array b \n";

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

{

// b[i] = a[i]; //класична адресацiя елементiв масиву

// *b++=*a1++;// адресацiя через вказiвники,змiна значень вказiвникiв

*b++ = a[i];

// b[i] = *a1++;

// *(b+i)=*(a+i); //адресацiя через вказiвники,але без змiни їх значень

}

b -= 4; //повернення звернення на початок массиву

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

{

cout << " " << b[i]; //контроль створення масиву b

}

delete []b; getch();

int a2[3][3] = {1,2,3,4,5,6,7,8,9}, a3[3][3], *a4, j;

pt; pta(a2); pta(a3); pta(a4); pt; //адреси масивiв та вказiвника а4

ptv(a2); ptvp(a2); pt; //значення за цими адресами

ptv(a2[0][0]); ptv(a3[0][0]); pt; //значення перших елементiв масивiв

a4 = new int[9]; //створення динамiчного масиву а4 у пам'ятi

pta(a4); ptvp(a4); pt; //новi параметри вказiвника а4

// iнiцiалiзацiя масивiв а3 та а4

cout << "\n array a3 \n";

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

for(j = 0; j < 3; j ++)

{

// a3[i][j] = *(*(a2+i)+j);

*(*(a3+i)+j) = *(*(a2+i)+j);

// a3[i][j] = a2[i][j];

cout << " " << a3[i][j];

*a4++ = a3[i][j];

}

a4 = a4 - 9; pt; //повернення звернення на початок масиву

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

for(j = 0; j < 3; j ++)

{

cout << " " << *(a4+i*3+j);

}

int function(int *x ); //прототип функцiї

int s1;

//розрахунок суми заданої iз клавiатури кiлькостi елементiв n

//s1 = function(&a2[0][0]);

s1 = function(a4);

cout << " s1 = " << s1;

delete []a4; getch(); return 0;

}

/*Лабораторна робота 14 (файл LAB14B.CPP)*/

/*Вивчення розподiлу пам"ятi */

#include <iostream.h>

// макрокоманди

#define pt cout << "\n"

#define pta(z) cout << " Address "#z" = " << &z

#define ptv(v) cout << " Value "#v"= " << v

#define ptvp(p) cout << " Value at pointer "#p" = " << *p

int function(int *x )

{

int s = 0, n; int * z; //об'ява простих змiнних та вказiвника

pt; pt; pta(s); pta(z); ptv(s); ptv(z); pt; //їх параметри

cout << " input value for n =";

cin >> n; //введення розмiру масиву

z = new int[n]; //створення динамiчного масиву z у пам'ятi

ptv(z); ptvp(z); pt; //новi параметри вказiвника z

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

{

z[i] = x[i]; //iнiцiалiзацiя масиву z

s += z[i]; // розрахунок суми елементiв

}

delete[]z;

return s;

}

Лабораторна робота №18

РОБОТА З СИМВОЛАМИ ТА РЯДКАМИ

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