С++ Программирование

Содержание

Слайд 2

http://www.codeblocks.org

http://www.codeblocks.org

Слайд 3

Слайд 4

Слайд 5

Слайд 6

Создание и сохранение проекта

Создание и сохранение проекта

Слайд 7

Слайд 8

Слайд 9

Слайд 10

Слайд 11

Слайд 12

Слайд 13

Слайд 14

Язык С разработан Дэнисом Ритчи в начале 70-х годов под OC

Язык С разработан Дэнисом Ритчи в начале 70-х годов под OC

UNIX
С++ разработан Бьерном Страуструпом в 1979 г.
Слайд 15

Слайд 16

#include - организация ввода-вывода using namespace std; - поле имен #include

#include - организация ввода-вывода
using namespace std; - поле имен
#include

- стандартная библиотека. Здесь почти всё, что надо.
Слайд 17

Переменная – именованная область памяти, в которой хранятся данные. Максимальное количество

Переменная – именованная область памяти, в которой хранятся данные.
Максимальное количество символов

- 31
Начинается с буквы. Верхние и нижние регистры различаются. Можно использовать латинские буквы, цифры и некоторые символы. Нельзя использовать ключевые слова в качестве переменных.
Данные – информация, которая хранится в ячейке памяти
Слайд 18

long long 64 бита (целое) -2 64 - 2 63 -18446744073709551616 9223372036854775808

long long 64 бита (целое) -2 64 - 2 63 -18446744073709551616


9223372036854775808
Слайд 19

Объявление переменных long long k;

Объявление переменных

long long k;

Слайд 20

Модификаторы типов

Модификаторы типов

Слайд 21

Операторы ввода/вывода Ввод cin >> a >>b; int k, p; char

Операторы ввода/вывода

Ввод
cin >> a >>b;
int k, p; char c;
cin>>k>>c>>p;
5:6 k=5, c=‘:’,

p=6
Вывод
cout << a << b;
cout << a << ‘ ‘ << b << endl;
if(!cin.eof())
Слайд 22

Задание ширины поля вывода #include cout cout Примеры использования различных типов выравнивания:

Задание ширины поля вывода

#include
cout << setw(10) << a;
cout << setfill('0') <<

setw(2) << h << ":" << setw(2) << m << endl;

Примеры использования различных типов выравнивания:

Слайд 23

Вывод действительных чисел Для вывода действительных чисел в формате с фиксированной

Вывод действительных чисел

Для вывода действительных чисел в формате с фиксированной точкой

используется манипулятор fixed, для вывода с плавающей точкой - манипулятор scientific.
По умолчанию числа выводятся с точностью в 6 знаков после точки
cout << scientific << setprecision(15) << x << endl;
Слайд 24

Вывод/ввод по формату printf(формат, переменная, переменная,…); printf(“Сумма равна=%d\n”,s); printf(“%d %d”,s1,s2); scanf(“%d %d”, &s1, &s2);

Вывод/ввод по формату

printf(формат, переменная, переменная,…);
printf(“Сумма равна=%d\n”,s);
printf(“%d %d”,s1,s2);
scanf(“%d %d”, &s1, &s2);

Слайд 25

форматы %d – целое %u – целое без знака %p –

форматы

%d – целое
%u – целое без знака
%p – указатель
%f

– вещественное
%e – вещественное в экспоненциальной форме
%с – символ
%s – строка
%x – целое в шестнадцатеричной форме
Для указания длины поля %4d
Слайд 26

Управляющие последовательности \n – перевод на другую строку \f – очистка

Управляющие последовательности

\n – перевод на другую строку
\f – очистка экрана
\t

– табуляция
\b – стирание символа перед курсором
Слайд 27

Литералы - константы - это фиксированные значения, которые не могут быть

Литералы - константы

- это фиксированные значения, которые не могут быть

изменены программой. Они могут иметь любой базовый тип данных.
Символьные константы – например, ‘A’
Строковые константы – например, “abc”
Слайд 28

Восьмеричные и шестнадцатеричные константы Восьмеричные начинаются с 0 int a =

Восьмеричные и шестнадцатеричные константы

Восьмеричные начинаются с 0
int a = 011; (9)
Шестнадцатеричные

начинаются с 0x
int b = 0xFF; (255)
Слайд 29

Инициализация переменных это присваивание им значений. int a; a = 10;

Инициализация переменных

это присваивание им значений.
int a;
a = 10;
int a = 10;
Различные

способы ввода данных.
Слайд 30

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

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

Слайд 31

Инкремент и декремент x = x + 1 x++ ++x (инкремент)

Инкремент и декремент

x = x + 1 x++ ++x (инкремент)
x =

x - 1 x-- --x (декремент)
Префиксная форма ++x - сначала х увеличивается на 1, потом выполняются остальные операции.
Постфиксная форма x-- - сначала выполняются операции, а затем изменяется значение x.
Слайд 32

Например x = 10; y = ++x; Результат x = 11

Например

x = 10;
y = ++x; Результат x = 11
y =

11
x = 10;
y = x++ Результат x = 11
y = 10
Слайд 33

Приоритеты

Приоритеты

Слайд 34

cmath cmath — заголовочный файл стандартной библиотеки языка программирования С, разработанный

cmath

cmath — заголовочный файл стандартной библиотеки языка программирования С, разработанный для

выполнения простых математических операций. Большинство функций привлекают использование чисел с плавающей точкой.
#include
Слайд 35

Слайд 36

Слайд 37

Слайд 38

Слайд 39

Выражения Если в выражении присутствуют переменные и литералы разного типа, то

Выражения

Если в выражении присутствуют переменные и литералы разного типа, то компилятор

приводит их к одному типу (с использованием типорасширения)
Слайд 40

В С++ предусмотрена возможность установить для выражения заданный тип. (Тип) выражение

В С++ предусмотрена возможность установить для выражения заданный тип.
(Тип) выражение
(float) x/2

приведение типа – унарный оператор.
Слайд 41

Логические переменные Тип bool принимают два значения true(истина) или false(ложь)

Логические переменные

Тип bool принимают два значения true(истина) или false(ложь)

Слайд 42

Слайд 43

Слайд 44

Слайд 45

Инструкция if Выражение – некоторое действительное выражение, которое может быть интерпретировано

Инструкция if

Выражение – некоторое действительное выражение, которое может быть интерпретировано как

истинное или ложное.
Числовое значение равное нулю, интерпретируется как ложное, не равное нулю - как истинное.
Слайд 46

Пример

Пример

Слайд 47

Конструкция if – else - if

Конструкция if – else - if

Слайд 48

Пример

Пример

Слайд 49

Слайд 50

Инструкция switch

Инструкция switch

Слайд 51

Слайд 52

Слайд 53

Слайд 54

Цикл while Цикл выполняется, если выражение=ИСТИНА Выход из цикла – выражение = ЛОЖЬ

Цикл while
Цикл выполняется, если выражение=ИСТИНА
Выход из цикла – выражение = ЛОЖЬ

Слайд 55

Цикл do – while for , while – сначала проверяется условие,

Цикл do – while
for , while – сначала проверяется условие,

потом выполняются инструкции цикла;
do-while – сначала выполняются инструкции цикла, потом проверяется условие.
Слайд 56

Цикл выполняется пока выражение = ИСТИНА


Цикл выполняется пока выражение = ИСТИНА

Слайд 57

continue

continue

Слайд 58

Слайд 59

break Немедленный выход из цикла

break

Немедленный выход из цикла

Слайд 60

Слайд 61

Цикл for

Цикл for

Слайд 62

Слайд 63

Вариации на тему цикла for

Вариации на тему цикла for

Слайд 64

#include #include #include #include using namespace std; int main() { int

#include
#include
#include
#include
using namespace std;
int main()
{ int i;
for(i=0;

!kbhit(); i++) cout << i << ' ';
system("pause");
return 0; }
Слайд 65

Слайд 66

Слайд 67

Одномерные массивы

Одномерные массивы

Слайд 68

Слайд 69

#include using namespace std; int main() { int n; cin >>

#include
using namespace std;
int main()
{ int n;
cin >> n;
int a[n];
int i;
for(i=0;

ia[i]=i;
for(i=0; icout << a[i] << ' ';
return 0;
}
Слайд 70

Двумерные массивы

Двумерные массивы

Слайд 71

#include using namespace std; int main() { int n, m; cin

#include
using namespace std;
int main()
{ int n, m;
cin >> n >>

m;
int a[n][m];
int i, j;
for(i=0; i < n; i++)
for(j=0; j < m; j++)
cin >> a[i][j];
for(i=0; i < n; i++)
{for(j=0; j < m; j++)
cout<< a[i][j] << ' ';
cout << endl;}
return 0;
}
Слайд 72

cin>>n; int *a=new int[n];

cin>>n;
int *a=new int[n];

Слайд 73

Инструкция go to Инструкция безусловного перехода. Метка – это идентификатор, за которым стоит двоеточие.

Инструкция go to

Инструкция безусловного перехода.
Метка – это идентификатор, за которым стоит

двоеточие.
Слайд 74

Слайд 75

Строки Строковый литерал “Привет” “” – нулевой литерал. Состоит только из

Строки
Строковый литерал
“Привет”
“” – нулевой литерал. Состоит только из нулевого символа

– признака завершения строки
Слайд 76


Слайд 77

строки класса string #include

строки класса string

#include

Слайд 78

string st2, st3, s1, s2, s3; операции присваивания: st2 = st3;

string st2, st3, s1, s2, s3;
операции присваивания:
st2 = st3; // копируем

st3 в st2

s3 = s1 + s2;

s1 += s2;

Последний элемент ‘\0’
S[i] = ‘a’;
S[i]= 97;
Int k = s[i];
Int k = s[i] - ’0’;

Слайд 79

Слайд 80

Слайд 81

int res = stoi(s1); Int k=count(s.begin(), s.end(), a); (в алгоритмах)

int res = stoi(s1);
Int k=count(s.begin(), s.end(), a); (в алгоритмах)

Слайд 82

#include #include #include using namespace std; int main() { string s,

#include
#include
#include
using namespace std;
int main()
{
string s, s1;
getline(cin,

s);
s1=s;
reverse(s.begin(), s.end());
if(s==s1)
cout<<"yes";
else
cout<<"no";
return 0;
}
Слайд 83

Векторы . #include vector a(n); vector a; vector ivector = { , , };

Векторы

.
#include
vector a(n);
vector a;
vector ivector = {<элемент [0]>,

<[1]>, <[2]>};
Слайд 84

vector a(10) for (auto now : a) { cout

vector a(10)
for (auto now : a)
{ cout << now

<< " ";}
Слайд 85

Методы push_back a.push_back(temp); size() l=a. size() pop_back() clear() — удалить все

Методы

push_back a.push_back(temp);
size() l=a. size()
pop_back()
clear() — удалить все элементы вектора
empty() — проверить вектор

на пустоту
a.resize(10);
a.insert (it,200);
Слайд 86

a.erase(a.begin()+1); ///стираем 1 элемент вектора a.erase(a.begin()+2,a.begin()+6); ///стираем 3-6 элементы вектора, 7 элемент не стирается

a.erase(a.begin()+1);
///стираем 1 элемент вектора
   a.erase(a.begin()+2,a.begin()+6);
///стираем 3-6 элементы вектора,
7 элемент не стирается

Слайд 87

Пары #include #include #include vector > a(n); vector > a;

Пары

#include
#include
#include
vector > a(n);
vector >

a;
Слайд 88

for (int i = 0; i int temp; cin >> temp;

for (int i = 0; i < n; i++) {

int temp;
cin >> temp;
a[i] = {temp, i}; // создание пары значение - номер
}
sort(a.begin(), a.end());
Слайд 89

for (auto now : a) { cout } cout for(int i=0; i cout

for (auto now : a) {
cout << now.second << "

";
}
cout< for(int i=0; i cout<
Слайд 90

#include #include #include using namespace std; int main() { vector v1;

#include
#include
#include
using namespace std;
int main()
{
vector v1;
vector

s1;
string s;
int l, a, i, k;
cin>>l;

for(i=0; i {
cin>>s;
s1.push_back(s);
}
cin>>s;
k=count(s1.begin(), s1.end(),s);
cout << k << endl;
return 0;
}

Слайд 91

#include #include using namespace std; int main() { vector v1; vector

#include
#include
using namespace std;
int main()
{
vector v1;
vector

s1;
string s;
int l, a, i, k;
cin>>l;
for(i=0; i {
cin>>s;
s1.push_back(s);
}

cin>>s;
vector::iterator p;
p = find(s1.begin(), s1.end(), s);
k=p-s1.begin();
cout << k <<' '< s1.erase(p, p+1);
for(auto x:s1)
cout< return 0;
}

Слайд 92

Вектор векторов #include #include #include using namespace std; int main() {vector

Вектор векторов

#include
#include
#include
using namespace std;
int main()
{vector < vector

> vec;
int i, j, n, a, m;
vector v1;
cin>>n>>m;
//vector v1(m);

for(i=0; i{v1.clear();
for(j=0; j{
cin>>a;
// v1[j]=a;
v1.push_back(a);
}
vec.push_back(v1);
}
for(i=0; i{for(j=0; jcout<cout<return 0;
}

Слайд 93

#include #include using namespace std; int main() { //Удаление диапазона vector

#include
#include
using namespace std;
int main()
{
//Удаление диапазона
vector v1,

v2;
int i, k1, k2;
for(i=0; i<10; i++)
v1.push_back(2*i);
k1=1; k2=3;
v1.erase(v1.begin()+k1, v1.begin()+k2);
for(i=0; i cout< cout<//Удаление заданного значения
for(i=0; i<10; i++)
v2.push_back(2*i);
std::vector::iterator p;
p = std::remove(v2.begin(), v2.end(), 10); //(или)
//p = std::find(v2.begin(), v2.end(), 10);
v2.erase(p, p+1);
for(i=0; i cout< cout<

//То же для пар
vector > vp;
pair pr;
for(i=0; i<10; i++)
{
pr.first=i;
pr.second=2*i;
vp.push_back(pr);
}
/*
vp.erase(vp.begin()+k1, vp.begin()+k2);
for(i=0; i cout< cout<*/
std::vector>::iterator p1;
pr.first=3;
pr.second=6;
p1 = std::remove(vp.begin(), vp.end(), pr);
vp.erase(p1, p1+1);
for(i=0; i cout< cout< return 0;
}
Remove удаляет заданный элемент, записывая остальные элементы по верх, длина вектора не изменяется.
Int index=p-v2.begin();

Слайд 94

Турнир муниципальный 18-19

Турнир муниципальный 18-19

Слайд 95

#include #include using namespace std; int main() {int n, i, k,

#include
#include
using namespace std;
int main()
{int n, i, k, p, f,

m, r,a;
cin>>n;
vector s(n);
vector s1(0);
for(i=0; i s[i]=i+1;
p=n-1;
k=0;
f=1;
while(f != n)
{
f*=2;
k++;
}
m=n;

cout< for(int g=0; g {
m=m/2;
for(int j=0; j {
cin>>r;
if(r==1) a=s[2*j];
else
a=s[2*j+1];
s1.push_back(a);
}
for (auto now : s1) { cout << now << " ";}
cout< s=s1;
s1.clear();
}
cout< return 0;
}

Слайд 96

Сортировки Метод пузырька Время работы n2 5 4 2 7 4

Сортировки Метод пузырька Время работы n2

5 4 2 7 4 9 1
4

5
2 5
5 7
4 7
7 9
1 9

4 2 5 4 7 1 9
2 4
4 5
4 5
5 7
1 7

2 4 4 5 1 7 9
2 4
4 4
4 5
1 5

2 4 4 1 5 7 9
2 4
4 4
1 4

2 4 1 4 5 7 9
2 4
1 4

2 1 4 4 5 7 9
1 2

1 2 4 4 5 7 9

Слайд 97

for(i=0; i for(j=0; j if(a[j] > a[j+1]) {a1=a[j]; a[j]=a[j+1]; a[j+1]=a1;}

for(i=0; i for(j=0; j if(a[j] > a[j+1])
{a1=a[j];

a[j]=a[j+1];
a[j+1]=a1;}
Слайд 98

Быстрая сортировка 4 6 3 9 8 5 2 7 9

Быстрая сортировка

4 6 3 9 8 5 2 7 9 4

1 3 1 6 7
Выбор элемента 7
4 6 3 5 2 4 1 3 1 6 7 7 9 9 8
Выбор элементов 4 9
3 2 1 3 1 4 4 6 5 6 7 7 8 9 9
Выбор элементов 1 5
1 1 3 2 3 4 4 5 6 6 7 7 8 9 9
Выбор элементов 2
1 1 2 3 3 4 4 5 6 6 7 7 8 9 9
Слайд 99

Время работы nlog(n) #include sort(a.begin(), a.end()); reverse(begin(a), end(a)); sort(a.rbegin(), a.rend()); sort(a.begin(), a.end(), cmp); cmp - компаратор

Время работы nlog(n)
#include sort(a.begin(), a.end());
reverse(begin(a), end(a));
sort(a.rbegin(), a.rend());
sort(a.begin(), a.end(), cmp);
cmp -

компаратор
Слайд 100

#include #include using namespace std; bool fsort(int a, int b) {

#include
#include
using namespace std;
bool fsort(int a, int b)
{
if(a%2==0)
return

a < b;
else
return b < a;
}
int main()
{
vector v;
int n, a;
cin>>n;
for(int i=0; i {
cin>>a;
v.push_back(a);
}

sort(v.begin(), v.end());
for(int i=0; i cout< cout< sort(v.rbegin(), v.rend());
for(int i=0; i cout< cout< sort(v.begin(), v.end(), fsort);
for(int i=0; i cout< cout< return 0;
}

Слайд 101

#include #include using namespace std; bool fsort(pair a, pair b) {

#include
#include
using namespace std;
bool fsort(pair a, pair

b)
{
if(a.first != b.first)
return a.first < b.first;
if(a.first == b.first)
return a.second}
int main()
{
vector> v;
pair par;
int n, a, b;
cin>>n;

for(int i=0; i {
cin>>a>>b;
par={a, b};
v.push_back(par);
}
sort(v.begin(), v.end(), fsort);
for(int i=0; i cout< cout< return 0;
}

Слайд 102

Указатели

Указатели

Слайд 103

Оператор & возвращает адрес памяти, по которому расположен его операнд Оператор

Оператор & возвращает адрес памяти, по которому расположен его операнд
Оператор *

обращается к значению переменной, расположенной по адресу, заданному его операндом.
Слайд 104

Слайд 105

Операторы * и & - операторы непрямого доступа


Операторы * и & - операторы непрямого доступа

Слайд 106

Слайд 107

множества #include set s; s.insert(x); добавление s.erase(x); удаление s.find(x) if (s.find(x) == s.end()) s.size();

множества

#include
set s;
 s.insert(x); добавление
s.erase(x); удаление
s.find(x) if (s.find(x) == s.end())
s.size();

Слайд 108

Вывести всё содержимое множества можно двумя способами. for (auto now =

Вывести всё содержимое множества можно двумя способами.
for (auto now = s.begin();

now != s.end(); now++) { cout << *now << ' '; }

for (auto now : s) { cout << now << ' '; }

Слайд 109

multiset multiset s; int cnt = 0; for (auto now =

multiset

multiset s;
int cnt = 0;
for (auto now = s.lower_bound(1);


now != s.upper_bound(1); now++)
{ cnt++; }
Слайд 110

#include #include using namespace std; int main() {set s; multiset s1;

#include
#include
using namespace std;
int main()
{set s;
multiset s1;
int n,

i, a, k;
cin>>n;
for(i=0; i{
cin>>a;
s.insert(a);
s1.insert(a);
}

k=s.size();
cout<for (auto now : s) { cout << now << ' '; }
cout<for (auto now : s1) { cout << now << ' '; }
return 0;
}

Слайд 111

#include #include using namespace std; int main() {set s; int n,

#include
#include
using namespace std;
int main()
{set s;
int n, i, a,

k;
cin>>n;
for(i=0; i{
cin>>a;
if (s.find(a) == s.end())
{cout<<"NO"< s.insert(a);
}
else
cout<<"YES"<}
return 0;
}
Слайд 112

Словари #include map s; map > s; s["Vasya"] = { "112133", "12341" };

Словари

#include
map s;
map > s;
s["Vasya"] = {

"112133", "12341" };
Слайд 113

map s; s[112] = "sos"; s[102] = "emergency"; for (auto now : s) { cout

map s;
s[112] = "sos";
s[102] = "emergency";
for (auto

now : s)
{ cout << now.first << " " << now.second << "\n"; }
Слайд 114

Слайд 115

Слайд 116

Функции

Функции

Слайд 117

Прототипы функций Три вида информации:

Прототипы функций

Три вида информации:

Слайд 118

Прототипы позволяют выполнить три операции:

Прототипы позволяют выполнить три операции:

Слайд 119

Общая форма прототипа:

Общая форма прототипа:

Слайд 120

Локальные переменные Локальная переменная известна только той функции, в которой она

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

Локальная переменная известна только той функции, в которой она определена.

Глобальные

переменные

Глобальная переменная известна на протяжении всей программы, ее можно использовать в любом месте кода и она сохраняет свое значение во время выполнения всей программы.

Слайд 121

Слайд 122

#include using namespace std; void func(); int a,b; int main() {

#include
using namespace std;
void func();
int a,b;
int main()
{
cin >> a >>

b;
func();
return 0;
}

void func()
{
int c;
c = a+b;
cout << c;
}

Слайд 123

#include using namespace std; void func(); int a,b; int main() {

#include
using namespace std;
void func();
int a,b;
int main()
{
cin >> a >>

b;
func();
cout << a << endl;
return 0;
}

void func()
{ int a;
a = 10;
int c;
c = a+b;
cout << c << endl;
}

2 5
15
2

Слайд 124

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

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

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

переменные называются формальными параметрами.
Слайд 125

#include using namespace std; void func(int *i); int a,b; int main()

#include
using namespace std;
void func(int *i);
int a,b;
int main()
{int i;
cin >>

a >> b;
func(&i);
cout << i << endl;
return 0;
}

void func(int *i)
{
*i = (a+b);
}

Слайд 126

#include using namespace std; void func(int *j, int *c, int *d);

#include
using namespace std;
void func(int *j, int *c, int *d);
int main()
{int

i;
int a,b;
cin >> a >> b;
func(&i,&a,&b);
cout << i << endl;
return 0;
}

void func(int *i, int *c, int *d)
{
*i = (*c+*d);
}

Слайд 127

#include using namespace std; void func(int *j, int c, int d);

#include
using namespace std;
void func(int *j, int c, int d);
int main()
{int

i;
int a,b;
cin >> a >> b;
func(&i,a,b);
cout << i << endl;
return 0;
}

void func(int *i, int c, int d)
{
*i = (c+d);
}

Можно и так

Слайд 128

Ссылочные параметры #include using namespace std; void func(int &j); int main()

Ссылочные параметры

#include
using namespace std;
void func(int &j);
int main()
{int i,ii;
cin >>

i;
ii=i;
func(ii);
cout << i << ' ' << ii << endl;
return 0;
}

void func(int &i)
{
i = 2*i;
}

Пример ввода-вывода:
5
5 10

Слайд 129

Ограничения при использовании ссылок

Ограничения при использовании ссылок

Слайд 130

Вызов функций с массивами Функции передается только адрес первого элемента массива

Вызов функций с массивами

Функции передается только адрес первого элемента массива

Слайд 131

1 способ #include using namespace std; void func(int mas[5]); int main()

1 способ

#include
using namespace std;
void func(int mas[5]);
int main()
{int i;
int t[5];
for(i=0; i<5;

i++) t[i]=i;
func(t);
return 0;
}

void func(int mas[5])
{
int i;
for(i=0; i<5; i++)
cout << mas[i] << endl;
}

Слайд 132

2 способ #include using namespace std; void func(int mas[]); int main()

2 способ

#include
using namespace std;
void func(int mas[]);
int main()
{int i;
int t[5];
for(i=0; i<5;

i++) t[i]=i;
func(t);
return 0;
}

void func(int mas[])
{
int i;
for(i=0; i<5; i++)
cout << mas[i] << endl;
}

Слайд 133

3 способ #include using namespace std; void func(int *mas); int main()

3 способ

#include
using namespace std;
void func(int *mas);
int main()
{int i;
int t[5];
for(i=0; i<5;

i++) t[i]=i;
func(t);
return 0;
}

void func(int *mas)
{
int i;
for(i=0; i<5; i++)
cout << mas[i] << endl;
}

Слайд 134

#include using namespace std; void cube(int *mas, int num); int main()

#include
using namespace std;
void cube(int *mas, int num);
int main()
{int i; int

m[10];
for(i=0; i<10; i++) m[i]=i;
for(i=0; i<10; i++)
cout <cout << '\n';
cube(m,10);
for(i=0; i<10; i++)
cout < return 0; }

void cube(int *mas, int num)
{
int i;
for(i=0; i<10; i++)
{
*mas =*mas * *mas * *mas;
mas++;
// mas[i]=mas[i]*mas[i]*mas[i];
}
}

Слайд 135

// C ++ программа для демонстрации работы векторов // можно передать

// C ++ программа для демонстрации работы векторов // можно передать по

ссылке. #include
using namespace std;
    // vect передается по ссылке и изменяется // сделано здесь отражено в main ()
void func(vector &vect)
{
   vect.push_back(30);
}
int main()
{
    vector vect;
    vect.push_back(10);
    vect.push_back(20);
func(vect);
for (int i=0; i       cout << vect[i] << " ";
return 0;
}
Слайд 136

#include #include #include using namespace std; void stringupper(char *s); int main()

#include
#include
#include
using namespace std;
void stringupper(char *s);
int main()
{char str[80];
strcpy(str,"abcdefgh");
cout <

<< ' ';
stringupper(str);
cout < return 0;
}

void stringupper(char *s)
{
while(*s)
{
*s =toupper(*s);
s++;
}
}

Слайд 137

return Немедленное возвращение управления к инициатору вызова функции Передача значения, возвращаемого функцией

return

Немедленное возвращение управления к инициатору вызова функции

Передача значения, возвращаемого функцией

Слайд 138

Слайд 139

#include using namespace std; int find_substr(char *sub, char *str); int main()

#include
using namespace std;
int find_substr(char *sub, char *str);
int main()
{
int index;

index = find_substr("aaa","abc efgh aaa bbb");
cout << index;
return 0;
}

int find_substr(char *sub, char *str)
{
int t;
char *p, *p2;
for(t=0; str[t]; t++)
{
p = &str[t];
p2 = sub;
while(*p2 && *p2==*p)
{
p++;
p2++;
if(!*p2) return t;
}
return -1;
}

Слайд 140

Структуры данных

Структуры данных

Слайд 141

#include #include using namespace std; struct one { string name; int

#include
#include
using namespace std;
struct one
{
string name;
int

w;
};
int main()
{struct one ww[10];
int i;
string ss;
ss="aaa";
for(i=0; i<=5; i++)
{
ww[i].w=i;
ww[i].name=ss;
}
for(i=0; i<=5; i++)
{
cout << ww[i].w <<' ' << ww[i].name <}
return 0;
}
Слайд 142

#include #include using namespace std; int main() {int n=20; int *a; a=(int*)malloc(n*sizeof(int)); system("pause"); return 0; }

#include
#include
using namespace std;
int main()
{int n=20;
int *a;
a=(int*)malloc(n*sizeof(int));
system("pause");
return 0;
}

Слайд 143

int *a=new int[n]; int *doubleSize(int *arr, int sz) { int *arr2

int *a=new int[n];

int *doubleSize(int *arr, int sz)
{ int *arr2 =

new int[sz * 2];
for (int i = 0; i < sz; i++)
arr2[i] = arr[i];
delete[] arr;
return arr2; }
Слайд 144

//Генератор псевдослучайных чисел #include #include #include using namespace std; int main()

//Генератор псевдослучайных чисел #include #include #include using namespace

std; int main() { int m; srand(time(NULL)); for(int i = 0; i < 10; i++) { m = 30 + rand() % 21; cout << m << endl; } return 0; }
Слайд 145

Файлы ifstream для чтения, ofstream для записи fstream для модификации файлов #include

Файлы

ifstream для чтения,
ofstream для записи
fstream для модификации файлов
#include


Слайд 146

ifstream file1; file1.open("d2.txt"); ofstream file2; file2.open("dd2.txt"); file1.close(); file2.close();

ifstream file1;
file1.open("d2.txt");
ofstream file2;
file2.open("dd2.txt");
file1.close();
file2.close();

Слайд 147

Запись file1 Чтение file1 >> buff >> vx >> p; getline(file, s)

Запись
file1 << buff << endl << vx << endl << p

<< endl;
Чтение
file1 >> buff >> vx >> p;
getline(file, s)
Слайд 148

Открытие файлов

Открытие файлов

Слайд 149

ifstream file; file1.open ("test.txt", ios::in | ios::binary); ofstream file; file1.open ("test.txt", ios::out | ios::app);

ifstream file;
file1.open ("test.txt", ios::in | ios::binary);
ofstream file;
file1.open ("test.txt", ios::out

| ios::app);
Слайд 150

Запись file1 Чтение file1 >> buff >> vx >> pi;

Запись
file1 << buff << endl << vx << endl << pi

<< endl;
Чтение
file1 >> buff >> vx >> pi;
Слайд 151

Класс ifstream: чтение файлов

Класс ifstream: чтение файлов

Слайд 152

ifstream file1("Temp.txt"); char buff[100]; Int vx; float pi; file.getline(buff, sizeof(buff)); file >> vx >> pi:

ifstream file1("Temp.txt");
char buff[100];
Int vx; float pi;
file.getline(buff, sizeof(buff));
file

>> vx >> pi:
Слайд 153

Класс ofstream: запись файлов

Класс ofstream: запись файлов

Слайд 154

Бинарные файлы #include #include #include using namespace std; struct Notes {

Бинарные файлы

#include
#include
#include
using namespace std;
struct

Notes { // структура данных записной книжки
char Name[60]; // Ф.И.О.
char Phone[16]; // телефон
int Age; // возраст };
int main()
{ setlocale(LC_ALL, "Russian");
Notes Note1= { "Грозный Иоанн Васильевич", "не установлен", 60 };
Notes Note2= { "Годунов Борис Федорович ", "095-111-2233 ", 30 };
Notes Note3= { "Романов Петр Михайлович ", "812-333-2211 ", 20 };
ofstream ofile("Notebook.dat", ios::binary);
ofile.write((char*)&Note1, sizeof(Notes)); // 1-й блок
ofile.write((char*)&Note2, sizeof(Notes)); // 2-й блок
ofile.write((char*)&Note3, sizeof(Notes)); // 3-й блок
ofile.close();
// закрыть записанный файл
ifstream ifile("Notebook.dat", ios::binary);
Notes Note; // структурированная переменная
char str[80]; // статический буфер строки
// Считывать и отображать строки в цикле, пока не eof
while (!ifile.read((char*)&Note, sizeof(Notes)).eof()) { sprintf(str, "%s\tТел: %s\tВозраст: %d", Note.Name, Note.Phone, Note.Age);
cout << str << endl; }
ifile.close(); // закрыть прочитанный файл
cin.sync(); cin.get(); return 0; }
Слайд 155

Класс fstream: произвольный доступ к файлу ifstream ifile("Notebook.dat", ios::binary); int pos

Класс fstream: произвольный доступ к файлу

ifstream ifile("Notebook.dat", ios::binary);
int pos

= 49 * sizeof(Notes);
ifile.seekg(pos); // поиск 50-й записи
Notes Note; //Notes – описанная выше структура "запись"
ifile.read((char*)&Note, sizeof(Notes));
Слайд 156

#include #include #include using namespace std; struct Notes { char Name[60];

#include
#include
#include
using namespace std;
struct Notes

{ char Name[60]; char Phone[16]; int Age; };
int main()
{ setlocale(LC_ALL, "Russian");
Notes Note1, Note3;
// Открыть файл на чтение/запись одновременно
fstream file("Notebook.dat", ios::binary | ios::in | ios::out);
file.seekg(2 * sizeof(Notes)); // найти и считать Note3
file.read((char*)&Note3, sizeof(Notes)); file.seekg(0); // найти и считать Note1 file.read((char*)&Note1, sizeof(Notes)); file.seekg(0); // Note1 <== Note3 file.write((char*)&Note3, sizeof(Notes)); file.seekg(2 * sizeof(Notes)); // Note3 <== Note1 file.write((char*)&Note1, sizeof(Notes)); char str[80]; // Считывать и отображать записи в цикле, пока не eof file.seekg(0); // вернуться к началу файла while (!file.read((char*)&Note1, sizeof(Notes)).eof()) { sprintf(str, "%s\tТел: %s\tВозраст: %d", Note1.Name, Note1.Phone, Note1.Age); cout << str << endl; } file.close(); cin.sync(); cin.get(); return 0; }
Слайд 157

Слайд 158

#include #include #include using namespace std; int main() { map >

#include
#include
#include
using namespace std;
int main()
{
map > s;

map > s1;
int n, q, a, b, i, k, l, p;
cin>>n;
for(i=0; i {
cin>>a>>b;
s[a].insert(b);
}
for(auto w: s)
{
cout << w.first << " " ;
for(auto w1: w.second)
cout<< w1 <<' ';
cout< }
cout< s1[1]=s[1];
for(auto w: s1)
{
cout << w.first << " " ;
for(auto w1: w.second)
cout<< w1 <<' ';
cout< }

cout< s.erase(1);
for(auto w: s)
{
cout << w.first << " " ;
for(auto w1: w.second)
cout<< w1 <<' ';
cout< }
cout<l=s.size();
cout<i=1;
while(l>0)
{
i++;
for(auto v: s1[i-1])
{
k=v;
for(auto v1: s[k])
s1[i].insert(v1);
s.erase(k);
}
l=s.size();
}
for(auto w: s1)
{
cout << w.first << " " ;
for(auto w1: w.second)
cout<< w1 <<' ';
cout< }
return 0;
}