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

  Scalar real() { return re; } // действительная часть

  Scalar imag() { return im; } // мнимая часть

  // операторы : = += –= *= /=

};

Стандартная библиотека complex поддерживает типы скалярных величин float, double и long double. Кроме членов класса complex и стандартных математических функций (раздел 24.8), заголовок содержит множество полезных операций.

Примечание: в классе complex нет операций < и %.

Класс complex используется так же, как любой другой встроенный тип, например double. Рассмотрим пример.

typedef complex dcmplx; // иногда выражение complex

                                // является слишком громоздким

void f(dcmplx z, vector& vc)

{

  dcmplx z2 = pow(z,2);

  dcmplx z3 = z2*9.3+vc[3];

  dcmplx sum = accumulate(vc.begin(), vc.end(), dcmplx());

  // ...

}

Помните, что не все операции над числами типов int и double определены для класса complex. Рассмотрим пример.

if (z2

Обратите внимание на то, что представление (схема) комплексных чисел в стандартной библиотеке языка С++ сопоставима с соответствующими типами в языках C и Fortran.

<p id="AutBody_Root479"><strong>24.10. Ссылки</strong></p>

По существу, вопросы, поднятые в этой главе, такие как ошибки округления, операции над матрицами и арифметика комплексных чисел, сами по себе интереса не представляют. Мы просто описываем некоторые возможности, предоставляемые языком С++, людям, которым необходимо выполнять математические вычисления.

Если вы подзабыли математику, то можете обратиться к следующим источникам информации.

Архив MacTutor History of Mathematics, размещенный на веб-странице http://www-gap.dcs.st-and.ac.uk/~history.

• Отличная веб-страница для всех, кто любит математику или просто хочет ее применять.

• Отличная веб-страница для всех, кто хочет увидеть гуманитарный аспект математики; например, кто из крупных математиков выиграл Олимпийские игры?

 • Знаменитые математики: биографии, достижения.

 • Курьезы.

• Знаменитые кривые.

• Известные задачи.

• Математические темы.

 • Алгебра.

 • Анализ.

 • Теория чисел.

 • Геометрия и топология.

 • Математическая физика.

 • Математическая астрономия.

 • История математики.

 • Многое другое

Freeman, T. L., and Chris Phillips. Parallel Numerical Algorithms. Prentice Hall, 1992.

Gullberg, Jan. Mathematics — From the Birth of Numbers. W. W. Norton, 1996. ISBN 039304002X. Одна из наиболее интересных книг об основах и пользе математики, которую можно читать одновременно и с пользой (например, о матрицах), и с удовольствием.

Knuth, Donald E. The Art of Computer Programming, Volume 2: Seminumerical Algorithms, Third Edition. Addison-Wesley, 1998. ISBN: 0202496842.

Stewart, G. W. Matrix Algorithms, Volume I: Basic Decompositions. SIAM, 1998. ISBN 0898714141.

Wood, Alistair. Introduction to Numerical Analysis. Addison-Wesley, 1999. ISBN 020194291X.

Задание

1. Выведите на экран размеры типов char, short, int, long, float, double, int* и double* (используйте оператор sizeof, а не заголовок ).

2. Используя оператор sizeof, выведите на экран размеры объектов Matrix a(10), Matrix b(10), Matrix c(10), Matrix d(10,10), Matrix e(10, 10,10).

3. Выведите на печать количество элементов в каждом из объектов, перечисленных в упр. 2.

4. Напишите программу, вводящую числа типа int из потока cin и результат применения функции sqrt() к каждому из этих чисел int. Если функцию sqrt(x) нельзя применять к некоторым значениям x, выведите на экран сообщение “корень квадратный не существует” (т.е. проверяйте значения, возвращаемые функцией sqrt()).

5. Считайте десять чисел с плавающей точкой из потока ввода и запишите их в объект типа Matrix. Класс Matrix не имеет функции push_back(), поэтому будьте осторожны и предусмотрите реакцию на попытку ввести неверное количество чисел типа double. Выведите этот объект класса Matrix на экран.

6. Вычислите таблицу умножения [0,n]*[0,m] и представьте ее в виде двумерного объекта класса Matrix. Введите числа n и m из потока cin и аккуратно выведите на экран полученную таблицу (предполагается, что число m достаточно мало, чтобы результаты поместились в одной строке).

7. Введите из потока cin десять объектов класса complex (да, класс cin поддерживает оператор >> для типа complex) и поместите его в объект класса Matrix. Вычислите и выведите на экран сумму десяти комплексных матриц.

8. Запишите шесть чисел типа int в объект класса Matrix m(2,3) и выведите их на экран.

Контрольные вопросы

1. Кто выполняет числовые расчеты?

2. Что такое точность?

3. Что такое переполнение?

4. Каковы обычные размеры типов double и int?

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

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

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

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

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

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

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

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

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