Читаем Программирование полностью

Однако он не работает (по крайней мере, пока не появится новая версия языка C++ (C++0x)), поэтому пока приходится прибегать к трюкам с инициализацией массива (в данном случае init_pos) и использовать его для инициализации объектов класса Matrix. Мы можем использовать объекты start_row и clear_row следующим образом:

board[white_start_row] = start_row;             // расставить белые фигуры

for (int i = 1; i<7; ++i) board[i] = clear_row; // очистить середину

                                                // доски

board[black_start_row] = start_row;             // расставить черные фигуры

Обратите внимание на то, что когда мы извлекли строку, используя выражение [i], мы получили значение lvalue (см. раздел 4.3); иначе говоря, мы можем присвоить результат элементу board[i].

<p id="AutBody_Root470"><strong>24.5.4. Ввод-вывод объектов класса Matrix</strong></p>

Библиотека Matrix предоставляет очень простые средства для ввода и вывода одно- и двухмерных объектов класса Matrix:

Matrix a(4);

cin >> a;

cout << a;

Этот фрагмент кода прочитает четыре разделенные пробелами числа типа double, заключенных в фигурные скобки; например:

{ 1.2 3.4 5.6 7.8 }

Вывод очень прост, поэтому мы просто можем увидеть то, что ввели. Механизм ввода-вывода двумерных объектов класса Matrix просто считывает и записывает последовательности одномерных объектов класса Matrix, заключенные в квадратные скобки. Рассмотрим пример.

Matrix m(2,2);

cin >> m;

cout << m;

Он прочитает запись

{

  { 1 2 }

  { 3 4 }

}

Вывод очень похож.

Операторы << и >> из класса Matrix позволяют писать простые программы. В более сложных ситуациях нам потребуется заменить их своими операторами. По этой причине определение операторов << и >> из класса Matrix помещены в заголовок MatrixIO.h (а не Matrix.h), поэтому, для того чтобы использовать матрицы в своей программе, вам не обязательно включать заголовок MatrixIO.h.

<p id="AutBody_Root471"><strong>24.5.5. Трехмерный объект класса Matrix</strong></p>

По существу, трехмерные объекты класса Matrix, как и матрицы более высоких размерностей, похожи на двумерные, за исключением того, что они имеют больше размерностей. Рассмотрим пример.

Matrix a(10,20,30);

a.size();             // количество элементов

a.dim1();             // количество элементов в размерности 1

a.dim2();             // количество элементов в размерности 2

a.dim3();             // количество элементов в размерности 3

int* p = a.data();    // извлекает данные по указателю (в стиле языка С)

a(i,j,k);             // (i,j,k)-й элемент (в стиле языка Fortran)

                      // с проверкой диапазона

a[i];                 // i-я строка (в стиле языка C)

                      // с проверкой диапазона

a[i][j][k];           // (i,j,k)-й элемент (в стиле языка С)

a.slice(i);           // строки от i-й до последней

a.slice(i,j);         // строки от i-й до j-й

Matrix a2 = a; // копирующая инициализация

a = a2;               // копирующее присваивание

a *= 7;               // пересчет (и +=, –=, /= и т.д.)

a.apply(f);           // a(i,j,k)=f(a(i,j,k)) для каждого элемента a(i,j,k)

a.apply(f,7);         // a(i,j,k)=f(a(i,j,k),7) для каждого элемента a(i,j,k)

b=apply(f,a);         // создает новую матрицу с условием b(i,j,k)==f(a(i,j,k))

b=apply(f,a,7);       // создает новую матрицу с условием b(i,j,k)==f(a(i,j,k),7)

a.swap_rows(7,9);     // переставляет строки a[7] <–> a[9]

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных