- •3.8. Упражнения 49
- •Введение
- •1. Базовые элементы
- •1.1. Комментарии
- •1.2. Функция «main»
- •1.3. Идентификаторы и пространства имен
- •1.4. Типы
- •1.5. Переменные
- •1.7. Константы
- •1.6. Преобразование типов
- •1.8. Потоковый ввод – вывод
- •1.9. Операции
- •1.9.1. Арифметические операции
- •1.9.2. Поразрядные операции
- •1.9.3. Условный оператор
- •1.9.4. Операции отношения
- •1.9.5. Логические операции
- •1.10. Стандартные математические функции
- •1.11. Упражнения
- •2. Базовые конструкции
- •2.1 Ветвление
- •2.1.1. Конструкция «if – else»
- •2.1.2. Конструкция «switch»
- •2.2. Циклы
- •2.2.1. Цикл «for»
- •2.2.2. Цикл «while»
- •2.2.3. Цикл «do – while»
- •2.2.4. Операторы циклов
- •2.2.5. Вложенность
- •2.3. Упражнения
- •2.3.1. Ветвления
- •2.3.2. Циклы
- •2.3.3. Вложенность
- •3. Указатели. Массивы. Структуры
- •3.1. Указатели
- •3.2. Массивы
- •3.2.1. Статические массивы
- •3.2.2. Динамические массивы
- •3.4. Ссылки
- •3.5. Структуры
- •3.6. Объединение
- •3.7. Переопределение типов
- •3.8. Упражнения
- •3.8.1. Статические и динамические массивы
- •3.8.2. Многомерные массивы
- •3.8.3. Строки
- •4. Функции
- •4.1. Простые функции
- •4.2. Рекурсия
- •4.3. Указатели и ссылки
- •4.3.1. Передаваемые параметры
- •4.3.2. Возвращаемые значения
- •4.3.3. Ссылки и структуры в функциях
- •4.3.4. Указатели и массивы в функциях
- •4.3.5. Указатели и ссылки на функцию
- •4.4. Шаблоны функций
- •4.5. Упражнения
- •4.5.1. Простые функции
- •4.5.2. Параметры – ссылки и параметры — указатели
- •5. Стандартные классы
- •5.1. Класс «pair»
- •5.2. Класс «complex»
- •5.3. Класс «string»
- •5.4. Контейнеры. Алгоритмы. Итераторы
- •5.5. Класс «vector»
- •5.6. Упражнения
- •5.6.1. Класс «string»
- •5.6.2. Класс «vector»
- •6. Файловый ввод – вывод
- •6.1. Операции
- •6.2. Методы
- •6.3. Флаги
- •6.4. Двоичный режим
- •6.5. Упражнения
- •Ллитература
5.2. Класс «complex»
Класс «complex» – класс комплексных чисел. Для его использования необходимо подключить файл «<complex>» .
Комплексное число состоит из действительной и мнимой частей: «real» и «imag». Обе части числа могут иметь любой из встроенных арифметических типов. Доступ к ним осуществляется через «real» и «imag» соответственно.
Над комплексными числами определены арифметические операции сложения, разности, умножения и деления, а также проверки на равенство и неравенство.
Комплексные числа могут вводиться и выводиться при помощи потоков. Вывод выглядит следующим образом: «(real, imag)». Ввод может осуществляться тремя способами: «real», «(real)», «(real,imag)». Допустимо также непосредственное присвоение комплексному числу значения одного из арифметических типов.
Над комплексными числами могут, помимо стандартных математических, выполняться операции в полярной системе координат: «abs()», «arg()», «polar()», «norm()».
Листинг 5.2. Комплексные числа.
#include <iostream>
#include <complex>
using namespace std;
int main(void)
{
complex<double> x;
x = 3;
cout << polar(abs(x), arg(x)) << endl;
complex<int> y;
cin >> y;
cout << pow(abs(x), 2) << " = " << norm(x) << endl;
return 0;
}
5.3. Класс «string»
Данный класс предоставляет больше возможностей, по сравнению с С – строками, однако в некоторых случаях всеже приходится пользоваться последними, как например, при разборе параметров командной строки.
Стандартный строковый класс описан в файле «string». После его включения использование строк выглядят также, как использование встроенных типов.
Таблица 5.1. Операции со строкой.
Название |
Описание |
[] |
Доступа к символу по индексу без проверки на существование |
+ |
Конкатенация |
== |
Сравнения |
at |
Доступ к символу по индексу с проверкой на существование |
compare |
Сравнение строк или их чистей |
copy |
Копирование части строки |
data |
Приведение к С – строке |
empty |
Проверка на пустоту |
erase |
Удаление части строки |
find |
Поиск вхождения |
find_first_not_of |
Первое вхождение символа, отсутствующего в указанной строке |
find_first_of |
Первое вхождение символа, присутствующего в указанной строке |
find_last_not_of |
Последнее вхождение символа, отсутствующего в указанной строке |
find_last_of |
Последнее вхождение символа, присутствующего в указанной строке |
getline(istr, str, ch) |
Считывание строки с пробельными символами и символами конца строки внутри из потока istr в строку str до символа – ограничителя ch |
insert |
Вставка части строки |
append |
Добавление символов в конец строки |
length |
Длинна строки |
replace |
Замена части строки |
size |
Определение размера строки |
substr |
Получение части строки |
Следующий листинг демонстрирует некоторые возможности стандартного класса «string».
Листинг 5.3. Класс string.
#include <iostream>
#include <string>
using namespace std;
int main (void)
{
//создание строки;
string stext1;
//ввод значения созданной строки;
getline( cin, stext1, '.' );
//создание строки;
string stext2;
//ввод значения созданной строки;
cin >> stext2;
//замена первого вхождения введенного слова многоточием;
if (stext1.find(stext2))
stext1.replace(stext1.find(stext2), stext2.size(), "...");
//затирание второго вхождения;
if (stext1.find(stext2))
stext1.erase(stext1.find(stext2), stext2.length());
//преобразование к С – строке;
char *cstr = const_cast<char*>(stext1.data());
cout << cstr << endl;
return 0;
}
