русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Операція індексації масиву


Дата додавання: 2014-04-22; переглядів: 960.


Операція індексації, яка звичайно використовується для доступу до елементів масиву, може бути перезавантажена. Це корисно в тому випадку, коли ми хочемо змінити спосіб роботи С++ з масивами. Наприклад, нам може знадобитися «безпечний масив», в якому закладена автоматична перевірка використовуваного для доступу до масиву індексу елемента. Вона буде перевіряти, чи не вийшли ми за межі масиву.

Реалізувати перезавантаження операції можна різними способами. Далі представлені три:

§ з використанням двох окремих методів put() і get() (програма 10.10)

§ з використанням методу access(), що використовує повернення за посиланням (програма 10.11)

§ перезавантажена операція [], що використовує повернення за посиланням (програма 10.12).

 

#include <iostream.h>

#include <conio.h>

#include <bios.h>

#include <process.h>

const int LIMIT=100;

class safearray

{private:

int arr[LIMIT];

public:

void putel(int n,int elvalue)

{if (n<0 || n>=LIMIT)

{cout<<”\nПомилковий індекс!”;exit(1);}

arr[n]=elvalue;

}

 

int getel(int n) const

{if(n<0|| n>=LIMIT)

{cout<<”\nПомилковий індекс!”;exit(1);}

return arr[n];

}

};

////////////////

int main()

{

clrscr();

safearray sal;

//elementy

for (int j=0;j<LIMIT;j++)

sal.putel(j,j*10);

//показати

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

{int temp=sal.getel(j);

cout<<”Елемент “<<j<<”=”<<temp<<endl;

}

bioskey(0);

return 0;

}

Програма 10.10

 

#include <iostream.h>

#include <conio.h>

#include <bios.h>

#include <process.h>

const int LIMIT=10;

class safearray

{private:

int arr[LIMIT];

public:

int& access(int n)

{

if (n<0||n>=LIMIT)

{cout<<"\nПомилковий індекс:";exit(1);}

return arr[n];

}

};

////////////////

int main()

{

clrscr();

safearray sal;

//елементи

for (int j=0;j<LIMIT;j++)

sal.access(j)=j*10;

//показати

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

{int temp=sal.access(j);

cout<<"Елемент "<<j<<"="<<temp<<endl;

}

bioskey(0);

return 0;

}

Програма 10.11

У цій програмі рядок

sal.access(j)=j*10;

означає, що значення j*10 буде поміщене в елемент масиву arr[j], посилання на який повертається методом.

 

#include <iostream.h>

#include <conio.h>

#include <bios.h>

#include <process.h>

const int LIMIT=10;

class safearray

{private:

int arr[LIMIT];

public:

int& operator[](int n)

{

if (n<0||n>=LIMIT)

{cout<<"\nПомилковий індекс:";exit(1);}

return arr[n];

}

};

////////////////

int main()

{

clrscr();

safearray sal;

//elementy

for (int j=0;j<LIMIT;j++)

sal[j]=j*10;

//show

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

{int temp=sal[j];

cout<<"Елемент "<<j<<"="<<temp<<endl;

}

bioskey(0);

return 0;

}

Програма 10.12

В цій програмі ми можемо використовувати звичайний запис операції індексації масиву

sal[j]=j*10;

і

temp=sal[j]

для вводу-виводу елементів масиву.

 


<== попередня лекція | наступна лекція ==>
Операції арифметичного присвоювання | Перетворення типів


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн