Презентация, доклад на тему Учебная презентация по теме Программирование в C++

Содержание

Введение

Слайд 1Введение
Основы C++ (ввод/вывод, переменные, ветвления, циклы)
Массивы
Строки
Множества

ВведениеОсновы C++ (ввод/вывод, переменные, ветвления, циклы)МассивыСтрокиМножества

Слайд 2Введение

Введение

Слайд 31. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ


Компилятор C++ и среда разработки — свободная кроссплатформенная среда

разработки Code::Blocks

Существуют также и другие среды разработки:
Среда Eclipse (Windows/Linux, бесплатная)
Среда Dev-C++ (Windows, бесплатная)
Среда Microsoft Visual C++ (Windows, коммерческая)

index

1. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕКомпилятор C++ и среда разработки — свободная кроссплатформенная среда разработки Code::BlocksСуществуют также и другие среды

Слайд 4Управление клавишами

Управление клавишами

Слайд 52. ПЕРВАЯ ПРОГРАММА НА C++
File → New → Empty file.
index

2. ПЕРВАЯ ПРОГРАММА НА C++File → New → Empty file.index

Слайд 6Вводим текст программы

#include

using namespace std;

int main()
{
cout

endl;
return 0;
}

Язык C++ является чувствительным к регистру — заменять main на Main или MAIN нельзя

Поддержка потоков (streams) ввода/вывода (Input/Output)

Использовать имена из стандартной библиотеки C++

main() — любая программа на C++ должна включать функцию с этим именем

cout — это имя объекта, который обеспечивает вывод информации на экран дисплея

endl приводит к переводу курсора на новую строку

Точка выхода из программы

Вводим текст программы#include using namespace std;int main(){cout

Слайд 7Сохраняем файл как my-program.cpp
Не рекомендуется использовать в именах файлов пробелы; вместо

hello world.cpp. программу лучше назвать hello-world.cpp.
При сохранении файла следует обязательно указывать расширение файла — cpp
Сохраняем файл как my-program.cppНе рекомендуется использовать в именах файлов пробелы; вместо hello world.cpp. программу лучше назвать hello-world.cpp.При

Слайд 8Компилируем и запускаем на выполнение
Кликаем на кнопке, на которой изображены желтая

шестеренка и зеленый треугольник, либо используем горячую клавишу F9
Компилируем и запускаем на выполнениеКликаем на кнопке, на которой изображены желтая шестеренка и зеленый треугольник, либо используем

Слайд 9II. Основы C++ (ввод/вывод, переменные, ветвления, циклы)

II. Основы C++ (ввод/вывод, переменные, ветвления, циклы)

Слайд 10ТИПЫ ПЕРЕМЕННЫХ В ЯЗЫКЕ C++


Целые числа — int
Занимает в памяти 4

байта
от −2 147 483 648 до 2 147 483 647
Вещественные числа — double
Занимает в памяти 8 байт
Максимальное число: 1,797693 ・ 10308
Минимальное отличное от нуля число: 2,225074 ・ 10−308
Символы — char
Занимает в памяти 1 байт

index

ТИПЫ ПЕРЕМЕННЫХ В ЯЗЫКЕ C++Целые числа — intЗанимает в памяти 4 байтаот −2 147 483 648 до

Слайд 11АРИФМЕТИЧЕСКИЕ ОПЕРАТОРЫ

Оператор присваивания = присваивает одной переменной, идентификатор которой указывается слева

от оператора = значение некоторого выражения, которое стоит справа
+ — оператор сложения
− — оператор вычитания
* — оператор умножения
/ — оператор деления (6/4 → 1, 6.0/4 → 1.25, 6/4.0 → 1.25)
% — оператор взятия остатка от деления целых чисел (6%4 → 2)
АРИФМЕТИЧЕСКИЕ ОПЕРАТОРЫОператор присваивания = присваивает одной переменной, идентификатор которой указывается слева от оператора = значение некоторого выражения,

Слайд 12Сокращенная запись операций в Си
инкремент
декремент
a = a + 1;
a++;
a = a

+ b;

a += b;

a = a - 1;

a--;

a = a – b;

a -= b;

a = a * b;

a *= b;

a = a / b;

a /= b;

a = a % b;

a %= b;

Сокращенная запись операций в Сиинкрементдекрементa = a + 1;a++;a = a + b;a += b;a = a

Слайд 13КОММЕНТАРИИ

// включают в себя весь последующий текст после этих символов и

продолжаются до конца строки
/* … */
КОММЕНТАРИИ// включают в себя весь последующий текст после этих символов и продолжаются до конца строки/* … */

Слайд 14ЗАДАЧА 1.
Вывести сумму a и b
#include
using namespace std;
int main()
{
double a,

b;
cout << "Input a: ";
cin >> a;
cout << "Input b: ";
cin >> b;
double x = a + b;
cout << "a + b = " << x << endl;
return 0;
}

#include
#include
using namespace std;
int main()
{
ifstream cin("input.txt");
ofstream cout("output.txt");
double a, b;
// cout << "Input a: ";
cin >> a;
// cout << "Input b: ";
cin >> b;
double x = a + b;
cout << "a + b = " << x << endl;
return 0;
}

Работа с файлами

ЗАДАЧА 1.Вывести сумму a и b#include using namespace std;int main(){double a, b;cout > a;cout > b;double x

Слайд 15ЗАДАЧА 2.
Дано трехзначное число. Найдите сумму его цифр.

ЗАДАЧА 2.Дано трехзначное число. Найдите сумму его цифр.

Слайд 16ВЕТВЛЕНИЯ
КОНСТРУКЦИЯ IF-ELSE
if (/* Condition */)
{
/* Instruction set #1 */
}
else
{
/* Instruction set

#2 */
}

НЕПОЛНОЕ ВЕТВЛЕНИЕ
if ( /* Condition */ )
{
/* Instruction set */
}

ОПЕРАТОРЫ СРАВНЕНИЯ
<
<=
>
>=
== — проверка на равенство двух чисел
!= — проверка на неравенство двух чисел

Логические операторы
Логическое И — &&
Логическое ИЛИ — ||
Логическое НЕ — !

index

ВЕТВЛЕНИЯКОНСТРУКЦИЯ IF-ELSEif (/* Condition */){/* Instruction set #1 */}else{/* Instruction set #2 */}НЕПОЛНОЕ ВЕТВЛЕНИЕif ( /* Condition

Слайд 17Переключатель switch
switch ( /* Expression */ )
{
case /* Constant expression */

:
/ * Instruction set */
break;
case /* Constant expression */ :
/ * Instruction set */
break;
default:
/ * Instruction set */
break;
}

Пример: число дней в месяце
switch (month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
cout << 31 << endl;
break;
case 4: case 6: case 9: case 11:
cout << 30 << endl;
break;
case 2: // February
cout << "28 or 29" << endl;
break;
default:
cout << "Invalid input" << endl;
break;
}

Переключатель switchswitch ( /* Expression */ ){case /* Constant expression */ :/ * Instruction set */break;case /*

Слайд 18ЗАДАЧА 3.
Даны числа a, b, c. Найдите все решения квадратного уравнения

ax2 + bx + c = 0. Программа должна вывести на экран компьютера один или два вещественных корня или сообщение о том, что квадратное уравнение вещественных корней не имеет. Для вычисления квадратного корня используется функция sqrt, для использования которой необходимо в начале программы подключить файл cmath

#include
#include
#include
using namespace std;
int main()
{
ifstream cin("input.txt");
ofstream cout("output.txt");
double a, b, c, x;
cin >> a >> b >> c;
if((b*b - 4*a*c) > 0) //Если дискриминант больше 0
{
x = ( -1*b + sqrt(b*b - 4*a*c) ) / (2 * a);
cout << "1-ый корень равен " << x << endl;
x = ( -1*b - sqrt(b*b - 4*a*c) ) / (2 * a);
cout << "2-ой корень равен " << x << endl;
}
if((b*b - 4*a*c) == 0) //Если дискриминант равен 0
{
x = ( -1*b ) / (2 * a);
cout << "Корень равен " << x << endl;
}
if((b*b - 4*a*c) < 0) //Если дискриминант меньше 0
{
cout << "Дискриминант меньше 0, корни невещественные." << endl;
}
return 0;
}

cout.precision (5);
//задаем компилятору сколько знаков после плавающей точки нужно вывести

cout << fixed << x;
//precision будет работать только если в начале cout-а вы напишите fixed


Слайд 19cmath
Операнды данных функций должны быть вещественными

cmathОперанды данных функций должны быть вещественными

Слайд 20Экспонента — показательная функция f(x)=exp(x)=ex , где e — число Эйлера

(e=2.718281828...)

Тригонометрические функции и их арк-версии, (В С++ используются не градусы а радианы)

acos(a) - возвращает угол в радианах из cos;
asin(a) - возвращает угол в радианах из sin;
atan(a) - возвращает угол в радианах из tan;
atan2(y, x) - возвращает угол по координатам x и y

cos(a) - возвращает cos угла, заданного в радианах;
sin(a) - возвращает sin угла, заданного в радианах;
tan(a) - возвращает tg угла, заданного в радианах;

const double PI = atan(1.0)*4;
cos((PI*a)/180) - возвращает cos угла, заданного в градусах;

// пример atan2
#include
#include

#define PI 3.14159265
// define — создание
// константы или макроса;
using namespace std;
int main()
{
double x = -10.0, y = 10.0;
cout << "Арктангенс x = " <<
x << " и y = " << y << " = " <<
(atan2(y, x) * 180 / PI) <<
" градусов " << endl;
return 0;
}

Логарифм числа b по основанию a - показатель степени, в которую надо возвести основание a, чтобы получить число b.

Экспонента — показательная функция f(x)=exp(x)=ex , где e — число Эйлера (e=2.718281828...)Тригонометрические функции и их арк-версии, (В С++ используются не

Слайд 21ЦИКЛЫ
Цикл while
while (Expression)
{
/* Instruction set */
}
Цикл do-while
do
{
/* Instruction set */
}
while (Expression);
Цикл

for
for (Expr 1; Expr 2; Expr 3)
{
/* Instruction set */
}

Expression_1
while (Expression_2)
{
/* Instruction set */
Expression_3;
}

int sum = 0, i;
for (i = 1; i <= n; i = i+1)
{
sum = sum + i;
}

for (int i = 1; i <= n; i++)
sum += i;

index

ЦИКЛЫЦикл whilewhile (Expression){/* Instruction set */}Цикл do-whiledo{/* Instruction set */}while (Expression);Цикл forfor (Expr 1; Expr 2; Expr

Слайд 22ЗАДАЧА 4.
Дано натуральное число n. Напишите программу, определяющую наибольшую и наименьшую

цифры данного числа.
ЗАДАЧА 4.Дано натуральное число n. Напишите программу, определяющую наибольшую и наименьшую цифры данного числа.

Слайд 23ПРОЦЕДУРЫ
Процедура – это вспомогательный алгоритм, который предназначен для выполнения некоторых действий.
Применение:
выполнение

одинаковых действий в разных местах программы
разбивка программы (или другой процедуры) на подзадачи для лучшего восприятия

index

ПРОЦЕДУРЫПроцедура – это вспомогательный алгоритм, который предназначен для выполнения некоторых действий.Применение:выполнение одинаковых действий в разных местах программыразбивка

Слайд 24Особенности:
обычно процедуры расположены выше основной программы
в заголовке процедуры перечисляются формальные параметры,

они обозначаются именами, поскольку могут меняться
при вызове процедуры в скобках указывают фактические параметры (числа или арифметические выражения) в том же порядке

void Tr( int x, int y, int c )

Tr ( 200, 100, 50);

x

y

c

Особенности:обычно процедуры расположены выше основной программыв заголовке процедуры перечисляются формальные параметры, они обозначаются именами, поскольку могут менятьсяпри

Слайд 25Особенности:
для каждого формального параметра в заголовке процедуры указывают его тип
внутри процедуры

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

void A ( int x, float y, char z ) { ... }

void A ( int x, float y, char z ) {
int a2, bbc = 345;
... }

локальные переменные

int a2, bbc = 345;

Особенности:для каждого формального параметра в заголовке процедуры указывают его типвнутри процедуры параметры используются так же, как и

Слайд 26Параметры-переменные
Задача: составить процедуру, которая меняет местами значения двух переменных.
Особенности: надо, чтобы

изменения, сделанные в процедуре, стали известны вызывающей программе.





main()
{
int x = 1, y = 2;
Swap ( x, y );
printf ( "x = %d, y = %d", x, y );
}

void Swap ( int a, int b )
{
int c;
c = a; a = b; b = c;
}

эта процедура работает с копиями параметров

x = 1, y = 2

Параметры-переменныеЗадача: составить процедуру, которая меняет местами значения двух переменных.Особенности: надо, чтобы изменения, сделанные в процедуре, стали известны

Слайд 27Применение: таким образом процедура (и функция) может возвращать несколько значений
Запрещенные варианты

вызова
Swap ( 2, 3 ); // числа
Swap ( x+z, y+2 ); // выражения

void Swap ( int & a, int & b )
{
int c;
c = a; a = b; b = c;
}

&

параметры могут изменяться

&

Применение:  таким образом процедура (и функция) может возвращать несколько значенийЗапрещенные варианты вызоваSwap ( 2, 3 );

Слайд 28ФУНКЦИИ
Функция – это вспомогательный алгоритм (подпрограмма), результатом работы которого является некоторое

значение.
Примеры:
вычисление модуля числа,
расчет значений по сложным формулам
ответ на вопрос (простое число или нет?)
Зачем?
для выполнения одинаковых расчетов в различных местах программы
для создания общедоступных библиотек функций

index

ФУНКЦИИФункция – это вспомогательный алгоритм (подпрограмма), результатом работы которого является некоторое значение. Примеры: вычисление модуля числа,

Слайд 29Задача: составить функцию, которая вычисляет наибольшее из двух значений, и привести

пример ее использования
Функция:

формальные параметры

int Max ( int a, int b )
{
if ( a > b ) return a ;
else return b ;
}

return - вернуть результат функции

тип результата

Задача: составить функцию, которая вычисляет наибольшее из двух значений, и привести пример ее использованияФункция:формальные параметрыint Max (

Слайд 30Особенности:
в начале заголовка ставится тип результата
формальные параметры описываются так же, как

и для процедур
можно использовать параметры-переменные
функции обычно располагаются до основной программы
Особенности:в начале заголовка ставится тип результатаформальные параметры описываются так же, как и для процедурможно использовать параметры-переменныефункции обычно

Слайд 31Особенности:
можно объявлять и использовать локальные переменные
локальные переменные

Особенности:можно объявлять и использовать локальные переменныелокальные переменные

Слайд 32Программа




main()
{
int a, b, с;
printf ( "Введите два числа\n" );

scanf ( "%d%d", &a, &b );
c = Max ( a, b );
printf ( "Наибольшее число %d", c );
}

int Max ( int a, int b )
{
...
}

фактические параметры

вызов функции

формальные параметры

index

Программаmain(){ int a, b, с; printf (

Слайд 33ЗАДАЧА 5. Алгоритм Евклида
Составить функцию, которая определяет наибольший общий делитель двух

натуральных и привести пример ее использования.
Пример:
Введите два числа:
14 21
НОД(14,21)=7
ЗАДАЧА 5. Алгоритм ЕвклидаСоставить функцию, которая определяет наибольший общий делитель двух натуральных и привести пример ее использования.

Слайд 34Задача: составить функцию, которая определяет, верно ли, что заданное число –

простое.
Особенности:
ответ – логическое значение: «да» (1) или «нет» (0)
результат функции можно использовать как логическую величину в условиях (if, while)
Алгоритм:
считаем число делителей в интервале от 2 до N-1, если оно не равно нулю – число составное.

count = 0;
for (i = 2; i < N; i ++)
if ( N % i == 0) count ++;
if ( count == 0 )
// число N простое}
else // число N составное

Логические функции

index

Задача: составить функцию, которая определяет, верно ли, что заданное число – простое.Особенности:ответ – логическое значение: «да» (1)

Слайд 35int Prime ( int N )
{
int count = 0, i;
for

(i = 2; i*i <= N; i++)
if (N % i == 0) count ++;
return (count == 0);
}

if (count == 0) return 1;
else return 0;

int Prime ( int N ) {int count = 0, i;for (i = 2; i*i

Слайд 36#include




main()
{
int N;
printf ( "Введите целое число\n" );
scanf

( "%d", &N );
if ( Prime( N ) )
printf ("%d - простое число", N);
else printf ("%d - составное число", N);
}

int Prime ( int N )
{
...
}

функция

Prime( N )

#include main(){ int N; printf (

Слайд 37МАССИВЫ
Массив – это группа однотипных элементов, имеющих общее имя и расположенных

в памяти рядом.
Особенности:
все элементы имеют один тип
весь массив имеет одно имя
все элементы расположены в памяти рядом

Объявление массивов

имя

размер массива (количество элементов)

тип
элементов

int A [ 5 ];


int A [ ];

const int N = 5;

N

МАССИВЫМассив – это группа однотипных элементов, имеющих общее имя и расположенных в памяти рядом.Особенности:все элементы имеют один

Слайд 38С присвоением начальных значений:
int A[4] = { 8, -3, 4,

6 };
float B[2] = { 1. };
char C[3] = { 'A', '1', 'Ю' };

остальные нулевые!

С присвоением начальных значений: int A[4] = { 8, -3, 4, 6 };float B[2] = { 1.

Слайд 39Что неправильно?
int N = 10;

float A[N];

const int

int X[4.5];

int A[10];
A[10] = 0;

float X[5];
int n = 1;
X[n-2] = 4.5;
X[n+8] = 12.;

выход за границы массива
(стираются данные в памяти)

int X[4];
X[2] = 4.5;

дробная часть отбрасывается
(ошибки нет)

float B[2] = { 1., 3.8, 5.5 };

int A[2] = { 1, 3.8 };

float

Что неправильно?    int N = 10;    float A[N];const int int X[4.5];

Слайд 40#include
#include
using namespace std;
int main() {
const int N = 10;
double

a[N];
for (int i = 0; i < N; ++i)
a[i] = rand() / (double)RAND_MAX - 0.5;
for (int i = 0; i < N; ++i)
cout << i << " " << a[i] << endl;
return 0;
}

Функция rand генерирует случайные числа, возвращает псевдослучайное целое число в диапазоне от 0 до RAND_MAX

#include #include using namespace std;int main() {const int N = 10;double a[N];for (int i = 0; i

Слайд 41МНОГОМЕРНЫЕ МАССИВЫ
Массивы могут быть и двумерные (матрицы), трехмерные и т.д.
Размерность массивов

в C++ никак не ограничивается.
Двумерный вещественный массив (2 строки, 3 столбца):
double matrix[2][3];
Обращаются к элементам такого массива, указывая два индекса:
matrix[1][2];

index

МНОГОМЕРНЫЕ МАССИВЫМассивы могут быть и двумерные (матрицы), трехмерные и т.д.Размерность массивов в C++ никак не ограничивается.Двумерный вещественный

Слайд 42Заполнить массив размера 2 × 3 случайными числами из сегмента [−0,5;

0,5] и вывести его на печать.
#include
#include
using namespace std;
int main() {
const int N = 2, M = 3;
double a[N][M];
for (int i = 0; i < N; ++i)
for (int j = 0; j < M; ++j)
a[i][j] = rand() / (double)RAND_MAX - 0.5;
for (int i = 0; i < N; ++i) {
for (int j = 0; j < M; ++j)
cout << a[i][j] << "\t";
cout << endl;
}
return 0;
}
Заполнить массив размера 2 × 3 случайными числами из сегмента [−0,5; 0,5] и вывести его на печать.#include

Слайд 44Динамические массивы и указатели
Динамическая память
Размер массива не известен на момент компиляции
Он

задается на этапе выполнения
Динамическое распределение памяти
Указатели
Переменная типа указатель хранит адрес, по которому расположен массив или какая-то другая переменная
имя_типа *идентификатор
int *a;
double *x, *y;
Сразу после объявления значение указателя не определено

index

Динамические массивы и указателиДинамическая памятьРазмер массива не известен на момент компиляцииОн задается на этапе выполненияДинамическое распределение памятиУказателиПеременная

Слайд 45Для создания массива в динамической памяти используется оператор new с указанием

размера создаваемого массива:
double *a;
a = new double[N];
Для уничтожения массива (освобождения занимаемой им памяти) служит оператор delete []:
delete [] a;
Для создания массива в динамической памяти используется оператор new с указанием размера создаваемого массива:double *a;a = new

Слайд 46#include
#include
using namespace std;

int main() {

int N;
cout

";
cin >> N;
double *a;
a = new double[N];
for (int i = 0; i < N; ++i)
a[i] = rand() / (double)RAND_MAX - 0.5;
for (int i = 0; i < N; ++i)
cout << i << "\t" << a[i] << endl;
delete [] a;
return 0;
}
#include #include using namespace std;int main() {int N;cout > N;double *a;a = new double[N];for (int i =

Слайд 47СИМВОЛЬНЫЕ СТРОКИ
char A[4] = { 'A', '3', '[', 'Ж'};
char B[10];
Это массивы

символов:

Для массива:
каждый символ – отдельный объект;
массив имеет длину N, которая задана при объявлении

index

СИМВОЛЬНЫЕ СТРОКИchar A[4] = { 'A', '3', '[', 'Ж'};char B[10];Это массивы символов:Для массива: каждый символ – отдельный

Слайд 48рабочая часть
s[0]
s[1]
s[2]
s[3]
char s[80];
признак окончания строки: символ с кодом 0
Символьная строка –

это последовательность символов, которая заканчивается символом '\0'.

\0 — символ нуль-терминатора

рабочая частьs[0]s[1]s[2]s[3]char s[80];признак окончания строки: символ с кодом 0Символьная строка – это последовательность символов, которая заканчивается символом

Слайд 49Задача: ввести слово с клавиатуры и заменить все буквы «а» на

буквы «б».

main()
{
char q[80];
int i;
cin>>q;
i = 0;
while ( q[i] != '\0' ) {
if ( q[i] == 'a' ) q[i] = 'b';
i ++;
}
cout<}

index

Задача: ввести слово с клавиатуры и заменить все буквы «а» на буквы «б».main(){ char q[80]; int i;

Слайд 50КОНТЕЙНЕР ДЛЯ СТРОК: STRING
#include
#include
#include

using namespace std;

int main(){

ifstream cin("input.txt");
ofstream cout("output.txt");

string str;
getline(cin, str);
cout << "Hello, " << str << "!!! \n";

return 0;
}

//длина строки
n1=str.size();
n2=str.length();

//пуста ли строка? (str.size() == 0)
cout << str.empty() << endl;

//Копирование и конкатенация
string str1 = str;
str=str+str1;

// Обращение к отдельным символам
cout << str[7] << str[0] << endl;
cout << str.at(7) << str.at(0) << endl;

//Получение подстроки
str.substr(pos, n);

//индекс 1-го вхождения символа или строки
n1=str.find(' ');

//1-е вхождение любого символа из строки
n2=s.find_first_of(", !");

index

КОНТЕЙНЕР ДЛЯ СТРОК: STRING#include #include #include using namespace std;int main(){  ifstream cin(

Слайд 51// разбить строку на вектор строк,
// используя пробелы и запятые как

разделители
vector v;
int i;
i = s.find_first_of(", ");
while(i > 0) {
// кусок строки до первого разделителя
v.push_back(s.substr(0, i));
// вырезать вместе с разделителем
s = s.substr(i+1);
i = s.find_first_of(", ");
}
v.push_back(s); // дописать остаток строки

int pos=3;
s1="vasia";

//вставка
s.insert(pos, s1);

//удаление
s.erase(pos, 2);

index


Слайд 52Функции преобразования
string s;
getline(cin, s);

//преобразует строку в тип int
int n;
n=atoi(s.c_str());
cout

в тип double
double n1;
n1=atof(s.c_str());
cout<

//число в строку на си (char *)
char str[11];
int number = 12345;
sprintf(str, "%d", number);
cout< string s;
s=string(str)+"!!!";
cout<

Функции преобразования string s;getline(cin, s);//преобразует строку в тип intint n;n=atoi(s.c_str());cout

Слайд 53КОНТЕЙНЕР ДЛЯ МНОЖЕСТВ: SET
Контейнеры, которые содержат некоторое количество отсортированных элементов.
В

множестве и мультимножестве все элементы сортируются автоматически.
Множества содержат только уникальные элементы, а мультимножества могут содержать дубликаты

Функциональность:
добавить элемент в рассматриваемое множество, при этом исключая возможность появления дублей
удалить элемент из множества
узнать количество (различных) элементов в контейнере
проверить, присутствует ли в контейнере некоторый элемент

index

КОНТЕЙНЕР ДЛЯ МНОЖЕСТВ: SETКонтейнеры, которые содержат некоторое количество отсортированных элементов. В множестве и мультимножестве все элементы сортируются

Слайд 54#include
#include // заголовочный файл множеств и мультимножеств
#include

using namespace

std;
int main()
{
set mySet; // объявили пустое множество
//multiset mySet; 
// добавляем элементы в множество
mySet.insert('I');
mySet.insert('n');
mySet.insert('f');
mySet.insert('i');
mySet.insert('n');
mySet.insert('i');
mySet.insert('t');
mySet.insert('y');

copy( mySet.begin(), mySet.end(), ostream_iterator(cout, " "));
return 0;
}

int n=mySet.size();
cout<
if(mySet.find('I') != mySet.end()) {
cout<<"yes"<}
else {
cout<<"no"<}

#include #include  // заголовочный файл множеств и мультимножеств#include using namespace std;int main(){  set mySet; //

Слайд 55Удаление элемента из set (Метод erase(...))
Один элемент, либо итератор, указывающий на

удаляемый элемент.
set s;
...
s.insert(54);
...
s.erase(29);
s.erase(s.find(57));

//интервальная форма
...
set::iterator it1, it2;
it1 = s.find(10);
it2 = s.find(100);
// Будет работать, если как 10, так и 100 присутствуют в множестве
s.erase(it1, it2);
// при таком вызове будут удалены
// все элементы от 10 до 100 не включительно
Удаление элемента из set (Метод erase(...))Один элемент, либо итератор, указывающий на удаляемый элемент.set s;...s.insert(54);...s.erase(29);s.erase(s.find(57));//интервальная форма...set::iterator it1, it2;it1

Слайд 56У set есть интервальный конструктор:

int data[5] = { 5, 1, 4,

2, 3 };
set S(data, data+5);

Данная функция set предоставляет эффективную возможность избавиться от дубликатов в vector:

vector v;
...
set s(all(v));
vector v2(all(s));

Теперь v2 содержит те же элементы, что и v, но без дубликатов. Элементы v2 упорядочены по возрастанию
У set есть интервальный конструктор:int data[5] = { 5, 1, 4, 2, 3 };set S(data, data+5);Данная функция

Что такое shareslide.ru?

Это сайт презентаций, где можно хранить и обмениваться своими презентациями, докладами, проектами, шаблонами в формате PowerPoint с другими пользователями. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами.


Для правообладателей

Яндекс.Метрика

Обратная связь

Email: Нажмите что бы посмотреть