Ћекции.ќрг


ѕоиск:




 атегории:

јстрономи€
Ѕиологи€
√еографи€
ƒругие €зыки
»нтернет
»нформатика
»стори€
 ультура
Ћитература
Ћогика
ћатематика
ћедицина
ћеханика
ќхрана труда
ѕедагогика
ѕолитика
ѕраво
ѕсихологи€
–елиги€
–иторика
—оциологи€
—порт
—троительство
“ехнологи€
“ранспорт
‘изика
‘илософи€
‘инансы
’ими€
Ёкологи€
Ёкономика
Ёлектроника

 

 

 

 


Device. put (char_var);, 2 страница




 

20. ”вести координати 10 крапок на площин≥ ≥ визначити, у €к≥й ≥з чвертей б≥льше всього крапок.

 

21. ”вести п'€ть набор≥в стор≥н трикутника а, b, c ≥ визначити дл€ €ких стор≥н висота буде найб≥льшою.

ѕ≥дказка: де

 

22. ”вести координати п'€ти крапок ≥ визначити €ка з них потрапить в окружн≥сть з рад≥усом R ≥ координатами центра (а, в).

ѕ≥дказка: р≥вн€нн€ окружност≥ маЇ вид:

 

23. ”вести п'€ть шестирозр€дних ц≥лих чисел ≥ знайти дл€ €ких з них сума Ђл≥вихї трьох цифр б≥льше суми Ђправихї трьох.

 

24. ѕ≥драхувати ск≥льки раз≥в функц≥€

приймаЇ негативне значенн€, €кщо .

25. ќбчислити функц≥ю у вигл€д≥ формули

дл€ кожного значенн€ i.

 


2 –ќ«¬Тя«јЌЌя «јƒј„ C ¬» ќ–»—“јЌЌяћ ќƒЌќ¬»ћ≤–Ќ»’ ≤ ƒ¬ќ¬»ћ≤–Ќ»’ ћј—»¬≤¬

 

2.1 ÷≥ль роботи

 

ѕрищепити студентам навички розвТ€занн€ задач з використанн€м одновим≥рних ≥ двовим≥рних масив≥в, складних цикл≥в ≥ використанн€ покажчик≥в.

 

2.2 ћетодичн≥ рекомендац≥њ з орган≥зац≥њ самост≥йноњ роботи студент≥в

 

ѕри п≥дготовц≥ до роботи повторити способи опису одновим≥рних ≥ двовим≥рних масив≥в, використанн€ ≥ндексованих зм≥нних при обробц≥ даних, орган≥зац≥ю введенн€ ≥ виведенн€ масив≥в, використанн€ покажчик≥в.

Ќа в≥дм≥ну в≥д задач, розгл€нутих у попередн≥й лабораторн≥й робот≥, аргумент функц≥њ може бути заданий ≥ ≥ншим способом Ч у вигл€д≥ дов≥льного набору значень.

 

ѕриклад 2.1 ќбчислити функц≥ю y = axi2 Ц sin xi, де x1=-1, x2=-0,93, x3=-0,49, x4=0, x5=1,13, x6=0,96, x7=1,75.

 

ѕри розвТ€занн≥ такоњ задач≥ кожне з перерахованих значень треба ввести в пам'€ть комп'ютера, дл€ чого буде потр≥бно в≥дпов≥дна к≥льк≥сть ком≥рок. “акий дов≥льний р€д однотипних значень, €к≥ мають одне загальне символ≥чне ≥м'€ (≥дентиф≥катор), називаЇтьс€ масивом. ќкреме значенн€ масиву називаЇтьс€ його елементом, а м≥сце розташуванн€ елемент≥в у масив≥ визначаЇтьс€ за допомогою його ≥ндексу. ” пам'€т≥ комп'ютера масив займаЇ ст≥льки ком≥рок пам'€т≥, ск≥льки в ньому елемент≥в.

” схем≥ алгоритму розвС€занн€ задач≥ спочатку передбачаЇтьс€ введенн€ значень вс≥х елемент≥в оброблюваного масиву x[n] (n =7). „исло в дужках визначаЇ к≥льк≥сть елемент≥в масиву. Ќумерац≥€ елемент≥в масиву починаЇтьс€ з 0 ≥зак≥нчуЇтьс€ n Ц1. ƒал≥ введен≥ елементи використовуютьс€ при обчисленн≥ функц≥њ, шл€хом вказ≥вки ≥ндексу в≥дпов≥дного елемента.

—хема алгоритму розвТ€занн€ ц≥Їњ задач≥ ≥ програма вигл€дають наступним чином:

// P2_1.CPP -обчисленн€ значень функц≥њ

// використанн€ одновим≥рного масиву

#include <iostream>

 
 


 

a=10.5

 

i=0

 

y=axi*xi-sin(xi)

i=i+1

так

немаЇ

#include <math.h>

Using namespace std;

Void main()

{

const int n =7;

float x[n];

Int i;

Float a, y;

// ¬веденн€ масиву

cout<< "¬вед≥ть значенн€ масиву:" <<endl;

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

{

cout << "x [" << i << "] = ";

cin >> x [ i ];

cout << x [ i ] << endl;

}

a = 10.5;

// ќбчисленн€ функц≥њ

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

{

y = a*x [ i ] * x [ i ] Ц sin (x [ i ]); cout << "ѕри значенн≥=" << x[i]

<< "y = " << y << endl;

}

}

ѕри запису цього алгоритму у вигл€д≥ програми спочатку треба описати масив за допомогою оператора float x [n], ввести його значенн€ в пам'€ть комп'ютера, а пот≥м робити необх≥дн≥ обчисленн€.

” програм≥, що реал≥зуЇ даний алгоритм, дл€ введенн€ елемент≥в масиву використовуЇтьс€ оператор cin >> x [i];, перед цим оператором знаходитьс€ п≥дказка cout << "x [" << i << "] = "; ≥ зазначен номер елемента x[i], значенн€ €кого треба ввести.

ќсоблив≥сть виконанн€ оператора введенн€ cin >> x[i]; пол€гаЇ в тому, що, зустр≥вши його в програм≥, комп'ютер призупинить њњ виконанн€ поки не буде введене значенн€ елемента x[i] ≥ натиснута клав≥ша Enter, п≥сл€ чого обробка програми буде продовжена. «азначений оператор включений у цикл, реал≥зований за допомогою оператора f or, ≥ повторюваний n раз≥в, дл€ забезпеченн€ введенн€ вс≥х елемент≥в масиву.

ќск≥льки в мов≥ — ++ ≥ндексац≥€елемент≥в масиву починаЇтьс€ з нул€, то масив float x[7] (n =7) ≥з семи елемент≥в включаЇ ≥ндексован≥ елементи x[0], x[1], x[2] Е x[6] ≥ при цьому x[0] Ч звертанн€ до першого елемента, x[1] Ч зверненн€ до другого елемента масиву ≥ т.д. ѕропонована програма використовуЇ два цикли: один Ч дл€ введенн€ елемент≥в масиву, ≥нший Ч дл€ обчисленн€ функц≥њ. ÷≥ операц≥њ можна виконати й в одному цикл≥, тод≥ програма буде мати вигл€д:

 

// –2_2.CPP Ч введенн€ елемент≥в одновим≥рного масиву

// ≥ обчисленн€ функц≥њ зд≥йснюЇтьс€ в одному цикл≥

#include < math.h>

#include < iostream>

Using namespace std;

Float a, y;

Void main ()

{

const int n =7;

float x [ n ];

Int i;

Float a, y;

a = 10.5;

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

{

cout << "x [ " << i << "] = ";

cin >> x [ i ];

y = a * x[ i ]*x[ i ] - sin(x[ i ]);

cout << "ѕри значенн≥ =" << x[≥] << " y= " << y << endl;

}

}

ѕриклад 2.2 ќбробити в≥дом≥сть усп≥шност≥ групи студент≥в з 10 чолов≥к по програмуванню, п≥драхувавши середн≥й бал групи ≥ к≥льк≥сть в≥дм≥нник≥в.

—писок оц≥нок представимо масивом mas[i] (i=0..9), ≥ програма, що реал≥зуЇ таку задачу, вигл€даЇ в такий спос≥б:

 

// –2_3.CPP Ч використанн€ одновим≥рних масив≥в

// ¬изначенн€ середнього бала групи ≥ к≥лькост≥ в≥дм≥нник≥в

#include < math.h >

#include < iostream>

Using namespace std;

Void main ()

{

const int n = 10; // розм≥рн≥сть масиву

float mas[n]; // опис одновим≥рного масиву

Int i, k;

Float s;

s = 0; // s - зм≥нна дл€ п≥дсумовуванн€ оц≥нок групи

k = 0; // k - з м≥нна дл€ п≥драхунку к≥лькост≥ в≥дм≥нник≥в

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

{

cout << " mas [ " << i << "] = ";

cin >> mas [ i ];

cout << mas [ i ] << endl;

s = s + mas [ i ];

if (mas[ i ] = = 5)

k =k+1;

}

cout << "—ередн≥й бал = " << s / float(n) << endl;

cout << " ≥льк≥сть в≥дм≥нник≥в =" << k<< endl;

}

 

” ц≥й програм≥ зм≥нна s служить дл€ обчисленн€ суми оц≥нок групи, а зм≥нна k Ч дл€ п≥драхунку к≥лькост≥ в≥дм≥нник≥в. ѕеред обчисленн€м треба задати цим зм≥нним початкового нульового значенн€. ќператор

cout << " mas [ " << i << "] = ";

усередин≥ циклу виконуЇ роль п≥дказки про необх≥дн≥сть введенн€ черговоњ оц≥нки, а наприк≥нц≥ використовуЇтьс€ дл€ виведенн€ результат≥в обчисленн€ (cout << "—ередн≥й бал"<< s / float (n) << endl; cout << " ≥льк≥сть в≥дм≥нник≥в =" <<k<< endl;).

 р≥м одновим≥рних масив≥в, тобто таких, де положенн€ елемента визначаЇтьс€ за допомогою одного ≥ндексу, у практиц≥ розвТ€занн€ задач часто застосовуютьс€ багатовим≥рн≥ масиви. ” них положенн€ елемента визначаЇтьс€ шл€хом запису дек≥лькох ≥ндекс≥в. Ќайб≥льш широке поширенн€ одержали двовим≥рн≥ масиви, €к≥ називаютьс€ матриц€ми. ћатриц≥ €вл€ють собою пор€дковий запис дек≥лькох одновим≥рних масив≥в, наприклад:

 

ћ≥сце розташуванн€ кожного елемента визначаЇтьс€ за допомогою двох ≥ндекс≥в Ч номера р€дка ≥ номери стовпц€, тобто пор€дкового номера в р€дку.

≤ндекси таких масив≥в записуютьс€ в квадратних дужках. Ќаприклад, запис ћ[1] [2] вказуЇ на елемент, що знаходитьс€ в другому р€дку ≥ третьому стовпц≥, тобто маючий значенн€ -20.5 (рахунок ≥ндекс≥в починаЇтьс€ з 0). ƒл€ перебору вс≥х елемент≥в матриц≥ при њхньому введенн≥-виведенн≥, а також при обробц≥ в програм≥ варто передбачати орган≥зац≥ю двох цикл≥в: один Ч дл€ завданн€ значень ≥ндексу р€дк≥в, ≥нший -≥ндексу стовпц≥в.

 

ѕриклад 2.3 ƒо кожного елемента вищенаведеноњ матриц≥ M додати число 10.

 

// –2_4.CPP Ч використанн€ двовим≥рних масив≥в

// ƒо кожного елемента матриц≥ додати число 10.

 

#include < iostream>

Using namespace std;

Void main ()

{

const int n = 3; // к≥льк≥сть р€дк≥в матриц≥

const int m = 5; // к≥льк≥сть стовпц≥в матриц≥

float M [ n] [m];

Int i, k;

Float s;

s = 10;

cout << " ¬вед≥ть значенн€ масиву:" << endl;

// ¬ веденн€ значень двовим≥рного масиву

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

for (k = 0; k < m; k ++)

{

cout << " M [ " << i << "] = " << "[ " << k << ]";

cin >> M [ i ] [ k ];

cout << M [ i ] [ k ] << endl;

M [ i ] [ k ] = M [ i ] [ k ] + s; // ћожна M [ i ] [ k ] + = s;

}

cout << "Ќове значенн€ матриц≥:" << endl;

// ¬иведенн€ матриц≥ в природному вигл€д≥

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

{

cout << endl;

for (k = 0; k < m; k++)

cout << M [ i ] [ k ] << " ";

}

}

” програм≥ при опис≥ матриц≥ в оператор≥

float M[n][m];

вказуЇтьс€ д≥апазон зм≥ни двох ≥ндекс≥в, перший з €ких призначений дл€ ≥ндексуванн€ р€дк≥в, другий Ч стовпц≥в.

ѕри введенн≥, обробц≥ ≥ виведенн≥ матриц≥ дл€ перебору вс≥х њњ елемент≥в використовуЇтьс€ два цикли, один ≥з €ких Ї вкладеним в ≥нш≥й. ÷е дозвол€Ї при кожн≥м значенн≥ зм≥нноњ i перебирати вс≥ значенн€ k.

–озгл€нута програма може бути скорочена шл€хом об'Їднанн€ вс≥х трьох блок≥в циклу в один, але в такому випадку вона буде менш наочною.

 

 

2.3 ¬икористанн€ покажчик≥в

” мов≥ — ++ широко використовуютьс€ дан≥, що називаютьс€ покажчиками.

ѕокажчики Ч це зм≥нн≥, котр≥ м≥ст€ть адресу пам'€т≥, розпод≥леноњ дл€ ≥ншоњ зм≥нноњ. ”с≥ зм≥нн≥, розгл€нут≥ до цього, збер≥гали €к≥сь значенн€ (дан≥). ÷≥ дан≥ могли бути р≥зних тип≥в: символьного, ц≥лого, д≥йсного ≥ т.д. ѕри оголошенн≥ зм≥нноњ - покажчика необх≥дно вказати тип даних, адресу €ких буде м≥стити зм≥нна, ≥ ≥м'€ покажчика з попередньою з≥рочкою.

«агальний формат опису покажчика наступний:

тип * ≥м'€;

де тип Ч тип значень, на который буде вказувати покажчик;

≥м'€ Ч ≥м'€ зм≥нноњ-покажчика;

* Ч означаЇ операц≥ю над типом, що читаЇтьс€ "покажчик" на тип.

Ќаведемо приклади визначень покажчик≥в:

int *pn; // покажчик на ц≥ле значенн€;

float *pf1, *pf2; // два покажчики на д≥йсн≥ значенн€;

ѕокажчики не прив'€зують дан≥ до €кого-небудь визначеного ≥мен≥ зм≥нноњ ≥ можуть м≥стити адреси будь-€кого не≥менованого значенн€. ≤снуЇ адресна константа NULL, що означаЇ "порожню" адресу.

” мов≥ — ++ знаходитьс€ усього два оператори, що в≥днос€тьс€ до покажчик≥в:

У&Ф Ч оператор " адреса значенн€ ";

У* У Ч оператор "значенн€ за адресою".

ќператор " * ", використовуваний разом з покажчиками, вит€гаЇ значенн€, на €ке вказуЇ зм≥нна, розташована безпосередньо п≥сл€ нього.

ќператор " & ", використовуваний разом з покажчиками, повертаЇ адресу зм≥нноњ, розташованоњ безпосередньо п≥сл€ нього.

ѕокажчики можна оголосити одним з наступних способ≥в:

<тип> *ptr;

<тип> *ptr = <перем≥нна - покажчик>;

<тип> *ptr =&<≥м'€ зм≥нноњ>; // адреса зм≥нноњ

” програм≥ це може вигл€дати в такий спос≥б:

int *ptx,b; float y; // оголошен≥ перем≥нна - покажчик ptx ≥звичайн≥ зм≥нн≥ by;

float *sp = &y; // покажчику sp привласнюЇтьс€ адреса зм≥нноњ y

float *p = sp; // покажчику p привласнюЇтьс€ значенн€ (адреса значенн€),

// €ке м≥ститьс€ в зм≥нн≥й sp, тобто адреса зм≥нноњ y.

ѕри оголошенн≥ покажчик≥в символ " * " може розташовуватис€ або перед ≥м'€м покажчика або записуватис€ в≥дразу п≥сл€ оголошенн€ типу покажчика ≥ поширюЇ свою д≥ю т≥льки на одну зм≥нну - покажчик, перед €кою в≥н знаходитьс€, наприклад:

long * pt; long* Uk; int * ki, x, h; // оголошенн€ опис≥в

” раз≥ потреби опису покажчика на ком≥рку дов≥льного типу, зам≥сть ≥дентиф≥катора типу записуЇтьс€ слово void, наприклад:

 

void *p, *pt; // описан≥ два покажчики на дов≥льний тип даних

ѕерш н≥ж використовувати покажчик у програм≥, йому обов'€зково треба присвоњти адресу €кого - небудь даного, тобто про≥н≥ц≥ал≥зувати, ≥накше можуть бути непередбачен≥ результати.

ƒл€ доступу до значенн€ зм≥нноњ, адреса €коњ збер≥гаЇтьс€ в покажчику, досить у в≥дпов≥дному оператор≥ програми записати ≥м'€ покажчика ≥з символом "*", наприклад:

 

int *p, *p1; // ќголошен≥ два покажчики на ком≥рку пам'€т≥ int;

int x =12, y=5, m [7 ]; // ќголошен≥ зм≥нн≥ x,y ≥ масив m,

// зм≥нн≥ x,y ≥н≥ц≥ал≥зован≥

p = &y; // ѕокажчику p привласнена адреса зм≥нноњ y.

“епер, €кщо написати оператор виведенн€ на екран у вигл€д≥:

cout << "јдреса р " << p << "«наченн€ по ц≥й адрес≥= " <<*p;,

тод≥ виведетьс€ адреса ком≥рки пам'€т≥, де записана зм≥нна y ≥ значенн€ ц≥Їњ зм≥нноњ (тобто 5).

¬икористовуючи запис x = *p;,одержуЇмо x=5, тому що *p = y = 5;.

«м≥нити значенн€ y можна таким чином:

y = 10; // чи *p = 10;

≥ виконавши операц≥ю

* p= * p+5; // це р≥внозначно операц≥њ y = y + 5; тобто y = 15.

 

ѕри оголошенн≥ покажчик≥в, њм потр≥бно привласнювати початков≥ значенн€ (≥н≥ц≥ал≥зувати), при цьому можна або привласнювати адресу об'Їкта (зм≥нноњ), або адресу конкретного м≥сц€ пам'€т≥ (масиву), або число 0 ( нуль),наприклад:

int *pt = (char *) 0x00147; // ѕривласнюЇтьс€ адреса ком≥рки

int *arrpt = new int [10]; // ¬изначаЇтьс€ початкова адреса розм≥щенн€

// динам≥чного масиву

сhar *p = 0; // ≤н≥ц≥ал≥зац≥€ нулем

ќск≥льки покажчики Ч це спец≥альн≥ зм≥нн≥, то в операц≥€х з ≥ншим покажчиками вони можуть використовуватис€ без символу " * ", тобто без розкритт€ посиланн€, наприклад:

 

float *pt1, *pt2, x=15, m[5];

pt1=&x;

pt2=pt1;

pt1 = m; // або pt1 = &m[0]; m Ч це ≥м'€ масиву, що

// розгл€даЇтьс€€к спец≥альний покажчик Ц константа.

Ќаиведемо програму з використанн€м покажчик≥в:

// P2_5.CPP Ч застосуванн€ покажчик≥в

#include < iostream>

Using namespace std;

Int main ()

{

int x = 10;

int *px = &x;

cout << " x =" << x << endl;

cout << "*px =" << *px << endl;

x* = 2; // або x = x*2;

cout << " Ќове значенн€* px =" << *px << endl;

*px += 2; // або *px =*px + 2;

cout << " Ќове значенн€* px=, тобто х=" << x << endl;

Return 0;

}

–езультат виконанн€ програми:

x = 10

*px = 10

Ќове значенн€ *px = 20

Ќове значенн€*px, тобто x = 22

—ам покажчик-зм≥нна маЇ свою адресу, тому буде справедливим

наступний запис:

int *pt1, *pt2;

pt1 = (int*) &pt2; // тут покажчику pt1 привласнюЇтьс€ адреса пам'€т≥,

// де розташована зм≥нна pt2

÷е маЇ сенс у ситуац≥њ, коли:

int y,*pt1, *pt2 =&y;

pt1 = (int*) & pt2;.

≤снують наступн≥ обмеженн€ на використанн€ операц≥њ вз€тт€ адреси " & ":

Ч не можна визначати адресу константи (оск≥льки њй не прид≥л€Їтьс€ ком≥рка пам'€т≥), тобто неприпустимий запис: vp = &345;

Ч не можна визначати адресу результату арифметичного виразу, тому наступний запис нев≥рний: vp = & (x + y);.

 

ƒл€ зм≥нних Ц покажчик≥в дозволен≥ операц≥њ:

Ч присвоюванн€;

Ч ≥нкремент ≥ декремент;

Ч додаванн€ ≥ в≥дн≥манн€;

Ч пор≥вн€нн€ покажчик≥в однакового типу.

Ќаприклад, демонстрац≥йна програма з використанн€м зм≥нних-покажчик≥в може мати вигл€д:

 

// P2_6.CPP Ч використанн€ зм≥нних- покажчик≥в

#include < iostream>

Using namespace std;

Void main (void)

{

int *ptr1 = (int*)100;

int *ptr2 = (int*) 200;

ptr1++;

ptr2 -= 10;

cout << "ptr1=" << ptr1 << endl;

cout << "ptr2=" << ptr2 << endl;

cout << "ptr2 - ptr1=" << ptr2 - ptr1 << endl;

}

–езультат виконанн€ програми:

ptr1 = 00000068

ptr2 = 000000A0

ptr2 - ptr1 = 14

” програм≥ операц≥€ ptr1++ зб≥льшить адресу на 4 байта, оск≥льки дан≥ типу int займають 4 байти, операц≥€ ptr2-=10 зменьшуЇ адресу на 40 байт≥в. јдреси вивод€тьс€ на екран в ш≥стнадц€тковому вигл€д≥.

 

2.4 ¬икористанн€ масив≥в ≥ покажчик≥в

 

” мов≥ — ++ масиви ≥ покажчики зв'€зан≥ м≥ж собою. ѕри оголошенн≥ масиву у вигл€д≥: int mas [20]; ≥м'€ масиву mas визначаЇтьс€ €к покажчик-константа на перший (нульовий) елемент масиву, тобто на адресу першого елемента масиву &mas[0].

ƒл€ доступу до елемент≥в масиву ≥снуЇ два способи:

Ч використанн€ ≥ндексу елемента масиву, наприклад, mas[2] або mas[i];

Ч використанн€ адресного виразу тобто виразу з покажчиком на

масив, наприклад, *(mas +2) чи *(mas+i).

≤м'€ масив-покажчик, можна записати в наступному вигл€д≥:

 

int mas [20];

int *ptr1;

ptr1 = mas; // чи ptr1 = &mas[0];

ѕ≥сл€ оголошенн€ масиву int mas [20]; вираз &mas[0]mas Ї екв≥валентними.

ƒл€ обнул≥нн€ елемент≥в оголошеного масиву досить ≥н≥ц≥ал≥зувати його перший елемент: int mas[10] = {0}; ѕри цьому першому елементу не обов'€зково привласнювати значенн€ 0. якщо в оголошеному масив≥ ≥н≥ц≥ал≥зуЇтьс€ трохи перших елемент≥в, то ≥нш≥ ≥н≥ц≥ал≥зуютьс€ нул€ми.

Ќаприклад, у випадку коли float mas [10] ={ 12.2, 34.56 };, останн≥ в≥с≥м елемент≥в одержать значенн€ 0.

√лобальн≥ масиви автоматично ≥н≥ц≥ал≥зуютьс€ дв≥йковими нул€ми, у тому числ≥ ≥ символьн≥.

ѕри оголошенн≥ масив≥в можна використовувати одну з форм запису:

< тип > < ≥м'€ > [n] // ќголошенн€ одновим≥рного

// масиву з n елемент≥в

< тип > < ≥м'€ > [n] = { значенн€ } // «наченн€ елемент≥в масиву

< тип > < ≥м'€ > [ ] = { значенн€ } // розд≥лен≥ комою

Ќаприклад:

float m[6];

float m[6] = { 3.4, 4.5, 5.6, 6.7, 8.9, 10.3 };

float m[ ] = { 3.45, 4.56, 5.67, 6.78 };

ƒвовим≥рн≥ ≥ багатовим≥рн≥ масиви описуютьс€ аналог≥чним образом, тобто правом≥рний запис:

 

int mas [2][5] ={ 1, 2, 3, 4, 5,

10, 11, 13, 14, 25 };

int mas [2][5] ={ {1, 2, 3, 4, 5},

{10, 11, 13, 14, 25} };

int mas [ ][5] ={ 1, 2, 3, 4, 5,

10, 11, 13, 14, 25 };.

ѕри оголошенн≥ одновим≥рних масив≥в њхн≥й розм≥р можна не вказувати, €кщо оголошений масив в≥дразу ≥н≥ц≥ал≥зуЇтьс€.

¬ оголошенн≥ багатовим≥рних масив≥в можна опускати к≥льк≥сть ≥ндекс≥в т≥льки першого вим≥ру при одночасн≥й ≥н≥ц≥ал≥зац≥њ. якщо п≥д час оголошенн€ масив≥в ≥н≥ц≥ал≥зац≥€ не проводитьс€, то к≥льк≥сть ≥ндекс≥в треба вказувати завжди ≥ скр≥зь.

ќск≥льки дл€ масив≥в завжди в пам'€т≥ прид≥л€Їтьс€ суц≥льний блок ком≥рок пам'€т≥, у €ких розташовуютьс€ елементи, то адресу наступного елемента mas[1] можна вказати шл€хом зб≥льшенн€ покажчика на 1, тобто €кщо p = &mas[0], тод≥ p=p + 1 або (p += 1) адл€ i елемента масиву адреса може бути визначена €к p + i;. ѕри цьому автоматично виконуЇтьс€ операц≥€ зб≥льшенн€ адреси з урахуванн€м типу масиву ≥ к≥лькост≥, що в≥дводитьс€, байт дл€ кожного його елемента, отже:

адреса х[≥] = адреса x[0] + ≥*sizeof (тип);.

якщо два покажчики р1р2 указують на елементи одного масиву, то до них застосовн≥ операц≥њ в≥дносини: ==,!=, <, <=, >, >=.

Ќаприклад, в≥дношенн€ вигл€ду р1 < р2 ≥стинно, €кщо р1 указуЇ на б≥льш ранн≥й елемент, н≥ж р2. ¬с€кий покажчик можна пор≥вн€ти з нулем.

¬арто звернути увагу, що дл€ покажчик≥в, що посилаютьс€ на елементи р≥зних масив≥в, результат арифметичних операц≥й ≥ в≥дносин не визначений. ¬ арифметиц≥ з покажчиками можна використовувати адресу не ≥снуючого "наступного за масивом " елемента.  р≥м того, до покажчика можна додати де€ке ц≥ле значенн€, наприклад можна записати:





ѕоделитьс€ с друзь€ми:


ƒата добавлени€: 2015-11-05; ћы поможем в написании ваших работ!; просмотров: 536 | Ќарушение авторских прав


ѕоиск на сайте:

Ћучшие изречени€:

Ѕольшинство людей упускают по€вившуюс€ возможность, потому что она бывает одета в комбинезон и с виду напоминает работу © “омас Ёдисон
==> читать все изречени€...

2293 - | 2003 -


© 2015-2024 lektsii.org -  онтакты - ѕоследнее добавление

√ен: 0.161 с.