SlideShare a Scribd company logo
Секция спортивного
программирования
Тренер: старший преподаватель каф.
«Автоматика и процессы управления»
Поповкин Александр Викторович
vk.com/popovkin
Mail: microsoftintel@yandex.ru
1
Работа с массивами
Kolya Vasya Petya Slavik Michael
athlete Kolya, Vasya, Petya, Slavik, Michael
Jump(Kolya);
Jump(Vasya);
Jump(Petya);
Jump(Slavik);
Jump(Michael);
Обозначим именем Guy группу из 5 гимнастов
Guy[0] Guy[1] Guy[2] Guy[3] Guy[4]
Массив Guy, построенный из гимнастов
Элементу Guy в позиции индекс выполнить упражнение
индекс
//Программа для отдельных гимнастов
void main()
{
athlete Kolya, Vasya, Petya, Slavik, Michael;
Jump(Kolya);
Jump(Vasya);
Jump(Petya);
Jump(Slavik);
Jump(Michael);
}
//Программа для массива гимнастов
void main()
{
// Объявление массива из пяти гимнастов
athlete Guy[5];
for (int which=0; which<=4; which++);
{
// Выполнение упражнения каждым гимнастом
Jump(Guy[which]);
}
}
Пример 1.
Заполните одномерный массив размером 10 элементов числами от 1 до 10 и
выведите содержимое массива на экран в виде:
a[0] = 1
a[1] = 2
#include <iostream>
using namespace std;
int main()
{ // Инициализация переменных
int a[10]; // Массив a типа int,
// размер - 10 элементов
int i;
// Заполнить массив
for (i = 0; i < 10; i++)
a[i] = i + 1;
// Вывести массив на экран
for (i = 0; i < 10; i++)
cout << "a[" << i << "] = " << a[i] << endl;
return 0;
}
3 ЗАДАЧИ
на статические
массивы
Самостоятельно:
Введите одномерный массив из 10 элементов
типа int с клавиатуры и выведите массив на
экран так же, как и в примере 1
ЗАДАЧА 1
Самостоятельно:
Инициализируйте одномерный массив в тексте
программы и выведите его на экран
ЗАДАЧА 2
int a[10] = {10,20,30,40,50, // Массив a типа int,
9 ,8 ,7, 6, 5}; // размер - 10 элементов
Самостоятельно:
Заполните одномерный массив int a[10] случайными
числами, скопируйте его в массив int b[10]. Выведите
оба массива на экран
ЗАДАЧА 3
#include <iostream>
#include <ctime> //для ф-ии time()
#include <cstdlib> //для srand() и rand()
int main()
{ // Инициализация переменных
// Массивы a и b типа int,
// размер - 10 элементов
???????????????
// Сброс генератора случайных чисел
srand(time(NULL));
// Заполнить массив случайными числами
for (i = 0; i < 10; i++)
a[i] = rand();
// Скопировать массив a в массив b
?????????????
// Вывести массивы на экран
?????????????
}
ЗАДАЧА 3
Динамические массивы в
С++
double *arr = new double[count];
// Освобождаем память, отведенную
под динамический массив
delete [] arr;
12
Статический массив
int main()
{
const int amount = 5;
int data[5];
}
13
Динамический массив
int main()
{
int amount = 5;
int *ptr = NULL;
//адрес массива хранится в указателе ptr
ptr = new int[amount];
//освободить память по адресу ptr
delete []ptr;
}
14
15
#include <iostream>
using namespace std;
int main()
{
int amount = 0;
int *ptr = NULL;
cout << "enter amount: ";
cin >> amount;
//адрес массива хранится в указателе ptr
ptr = new int[amount];
for(int i = 0; i < amount; i++)
{
ptr[i] = rand() %100;
cout << ptr[i] << 't';
}
cout << endl;
//освободить память по адресу ptr
delete []ptr;
}
16
//подключаем необходимые библиотеки ?????????????
//подключаем стандартное пространство имен ??????
int main()
{
// Максимальное количество случайных элементов массива
const int NUMBER_RAND_MAX = 100;
// Инициируем генератор случайных чисел
?????
// Случайное количество элементов массива
int count = int((double)rand()/RAND_MAX*NUMBER_RAND_MAX);
// Выделяем память под динамический массив
double *arr = new double[count];
// Инициализируем массив случайными числами
for(int i = 0; i < count; i++)
{
arr[i] = (double)rand()/RAND_MAX;
}
// Производим поиск минимального и максимального значений
double min_value = arr[0];
double max_value = arr[0];
for(int i = 0; i < count; i++)
?????????????
//вывод максимального и минимального значений
???????????
// Освобождаем память, отведенную под динамический массив
delete [] arr;
return 0;
}
17
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
// Максимальное количество случайных элементов массива
const int NUMBER_RAND_MAX = 100;
// Инициируем генератор случайных чисел
????????????????????
// Случайное количество элементов массива
int count = int((double)rand()/RAND_MAX*NUMBER_RAND_MAX);
// Выделяем память под динамический массив
?????????????????????
// Инициириуем массив случайными числами
for(int i = 0; i < count; i++)
{
arr[i] = (double)rand()/RAND_MAX;
// вывод элементов массива ?????????????
}
// Освобождаем память, отведенную под динамический массив
?????????????????
return 0;
}
18
ЗАДАЧИ НА
ДИНАМИЧЕСКИЕ
МАССИВЫ
19
ЗАДАЧА
Создать программу с функцией, которой передаѐтся
динамический массив и его размерность.
Эта функция должна выводить сумму элементов массива.
20
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int sum(int *a, int m)
{
int i, qwe = 0;
for(i = 0; i < m; i++)
qwe = qwe + a[i];
return qwe;
}
int main()
{
int i, m, *a=0, *b;
cout << "Введите размерность -> ";
cin >> m;
// a = (int *) calloc(m, sizeof(*a));
a = new int[m];//выделение динамической памяти
b = a;
srand(time(NULL));
for(i = 0; i < m; i++)
{
*b++ = rand() %100;
cout << a[i] << "t";
}
cout << endl << "Сумма элементов массива: ";
cout << endl << sum(a, m);
delete[]a;
return 0;
}
21
ЗАДАЧА
Задание. сгенерировать дин. массив с
элеменами типа int,
размерность вводим вручную, дин. массив new,
delete
Требуется:
1) вывести исх одномерный массив в
читабельном виде
2) скопировать нечетные элементы данного
массива в целевой массив В
3) вывести полученный массив четных чисел
4) скопировать из массива а -> b все нечетные
числа
5) вывести массив
6) вывести макс. и миним. нечетные числа из
массива В
Алгоритмы сортировки
массивов
в методичке
В своем простейшем варианте она выполняется
очень медленно, поэтому обычно применяют
пузырьковую сортировку с оптимизацией. Однако
все алгоритмы пузырьковой сортировки имеют
общую особенность – обмен элементов массива
производится между двумя соседними
элементами массива.
(*)выбираем в новом массиве наибольшее число
и обменивает его с соседним (правым).
Метод пузырьковой сортировки
(метод обменной сортировки с выбором)
Отсортировать массив 142 23 97 19 2 4
по возрастанию (min -> max)
Отсортировать массив 162 26 88 22 1 2
по возрастанию (min -> max)
Отсортировать массив 4 2 19 97 23 142
по убыванию (max-> min)
Реализация пузырьковой сортировки на С++:
#include <iostream>
using namespace std;
int main()
{
int arr[6]={142, 23, 97, 19, 2, 4};
int i,j,tmp;
cout << "Unsorted massiv: ";
for ( i=0; i<6; i++)
cout << arr[i] << endl;
for ( i=0; i<6; i++)
for ( j=i+1; j<6; j++)
if( arr[i] > arr[j] )
{
tmp=arr[i];
arr[i]=arr[j];
arr[j]=tmp;
}
cout <<" Sorted massiv: ";
for ( i=0; i<6; i++)
cout << arr[i] << endl;
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int arr[6]={4 2 19 97 23 142};
int i,j,tmp;
cout << «Unsorted massiv»";
for ( i=0; i<6; i++)
cout << arr[i] << endl;
for ( i=0; i<6; i++)
for ( j=i+1; j<6; j++)
if( arr[i] > arr[j] )
{
tmp=arr[i];
arr[i]=arr[j];
arr[j]=tmp;
}
cout << " Sorted massiv: ";
for ( i=0; i<6; i++)
cout << arr[i]) << endl;
return 0;
}
ЗАДАЧА 4
Отсортировать массив 4
2 19 97 23 142
по убыванию
(max-> min)
ЗАДАЧА 5
Отсортировать массив
9, 12, 43, 2, 4, 78, 15, 34, 11, 27
по возрастанию (min -> max)
Progr labrab-4-2013-c++

More Related Content

What's hot

Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Python Meetup
 
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksЛекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksMikhail Kurnosov
 
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
Alexey Paznikov
 
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программированияПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
Alexey Paznikov
 
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Platonov Sergey
 
ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...
ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...
ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...
Alexey Paznikov
 
Максим Хижинский Lock-free maps
Максим Хижинский Lock-free mapsМаксим Хижинский Lock-free maps
Максим Хижинский Lock-free maps
Platonov Sergey
 
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
Alexey Paznikov
 
Дракон в мешке: от LLVM к C++ и проблемам неопределенного поведения
Дракон в мешке: от LLVM к C++ и проблемам неопределенного поведенияДракон в мешке: от LLVM к C++ и проблемам неопределенного поведения
Дракон в мешке: от LLVM к C++ и проблемам неопределенного поведения
Platonov Sergey
 
Что API Карт забыл на сервере — Антон Корзунов
Что API Карт забыл на сервере — Антон КорзуновЧто API Карт забыл на сервере — Антон Корзунов
Что API Карт забыл на сервере — Антон Корзунов
Yandex
 
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
Alexey Paznikov
 
ПВТ - осень 2014 - Лекция 6 - Атомарные операции. Внеочередное выполнение инс...
ПВТ - осень 2014 - Лекция 6 - Атомарные операции. Внеочередное выполнение инс...ПВТ - осень 2014 - Лекция 6 - Атомарные операции. Внеочередное выполнение инс...
ПВТ - осень 2014 - Лекция 6 - Атомарные операции. Внеочередное выполнение инс...
Alexey Paznikov
 
Оптимизация производительности Python
Оптимизация производительности PythonОптимизация производительности Python
Оптимизация производительности Python
PyNSK
 
20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonovComputer Science Club
 
ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...
ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...
ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...
Alexey Paznikov
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Yandex
 
Правильная организация клиент-карточного взаимодействия — Антон Корзунов
Правильная организация клиент-карточного взаимодействия — Антон КорзуновПравильная организация клиент-карточного взаимодействия — Антон Корзунов
Правильная организация клиент-карточного взаимодействия — Антон Корзунов
Yandex
 
Лекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимостиЛекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимости
Mikhail Kurnosov
 
Сверхоптимизация кода на Python
Сверхоптимизация кода на PythonСверхоптимизация кода на Python
Сверхоптимизация кода на Python
ru_Parallels
 
Магия в Python: Дескрипторы. Что это?
Магия в Python: Дескрипторы. Что это?Магия в Python: Дескрипторы. Что это?
Магия в Python: Дескрипторы. Что это?
PyNSK
 

What's hot (20)

Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
 
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksЛекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
 
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
 
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программированияПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
ПВТ - весна 2015 - Лекция 4. Шаблоны многопоточного программирования
 
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
 
ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...
ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...
ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...
 
Максим Хижинский Lock-free maps
Максим Хижинский Lock-free mapsМаксим Хижинский Lock-free maps
Максим Хижинский Lock-free maps
 
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
 
Дракон в мешке: от LLVM к C++ и проблемам неопределенного поведения
Дракон в мешке: от LLVM к C++ и проблемам неопределенного поведенияДракон в мешке: от LLVM к C++ и проблемам неопределенного поведения
Дракон в мешке: от LLVM к C++ и проблемам неопределенного поведения
 
Что API Карт забыл на сервере — Антон Корзунов
Что API Карт забыл на сервере — Антон КорзуновЧто API Карт забыл на сервере — Антон Корзунов
Что API Карт забыл на сервере — Антон Корзунов
 
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
 
ПВТ - осень 2014 - Лекция 6 - Атомарные операции. Внеочередное выполнение инс...
ПВТ - осень 2014 - Лекция 6 - Атомарные операции. Внеочередное выполнение инс...ПВТ - осень 2014 - Лекция 6 - Атомарные операции. Внеочередное выполнение инс...
ПВТ - осень 2014 - Лекция 6 - Атомарные операции. Внеочередное выполнение инс...
 
Оптимизация производительности Python
Оптимизация производительности PythonОптимизация производительности Python
Оптимизация производительности Python
 
20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov
 
ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...
ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...
ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
 
Правильная организация клиент-карточного взаимодействия — Антон Корзунов
Правильная организация клиент-карточного взаимодействия — Антон КорзуновПравильная организация клиент-карточного взаимодействия — Антон Корзунов
Правильная организация клиент-карточного взаимодействия — Антон Корзунов
 
Лекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимостиЛекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимости
 
Сверхоптимизация кода на Python
Сверхоптимизация кода на PythonСверхоптимизация кода на Python
Сверхоптимизация кода на Python
 
Магия в Python: Дескрипторы. Что это?
Магия в Python: Дескрипторы. Что это?Магия в Python: Дескрипторы. Что это?
Магия в Python: Дескрипторы. Что это?
 

Viewers also liked

Lawyer's Guide to Effective Internet Marketing
Lawyer's Guide to Effective Internet Marketing Lawyer's Guide to Effective Internet Marketing
Lawyer's Guide to Effective Internet Marketing
Bill Jawitz
 
Вебинар: Основы распараллеливания С++ программ при помощи OpenMP
Вебинар: Основы распараллеливания С++ программ при помощи OpenMPВебинар: Основы распараллеливания С++ программ при помощи OpenMP
Вебинар: Основы распараллеливания С++ программ при помощи OpenMP
FlyElephant
 
01 Introduction
01 Introduction01 Introduction
01 Introductioncplp
 
lecture-monitoring and performance tuning of the computer
lecture-monitoring and performance tuning of the computerlecture-monitoring and performance tuning of the computer
lecture-monitoring and performance tuning of the computer
Moscow Aviation Institute (National Research University), MAI
 
N1146543960 143079 1718
N1146543960 143079 1718N1146543960 143079 1718
N1146543960 143079 1718jennyselden
 
Ual2007
Ual2007Ual2007
Ual2007
cplp
 
How Commercial Real Estate Giants Can Put Tenants' Hard Earned Dollars At Risk
How Commercial Real Estate Giants Can Put Tenants' Hard Earned Dollars At RiskHow Commercial Real Estate Giants Can Put Tenants' Hard Earned Dollars At Risk
How Commercial Real Estate Giants Can Put Tenants' Hard Earned Dollars At Risk
Gail Fischer
 
Minimanual
MinimanualMinimanual
Minimanual
SCOSTAS98
 
Back to the Moon
Back to the MoonBack to the Moon
Back to the Moon
Stephen Fleming
 
η θεραπεία-ενός-παράλυτου-στην-καπερναούμ
η θεραπεία-ενός-παράλυτου-στην-καπερναούμη θεραπεία-ενός-παράλυτου-στην-καπερναούμ
η θεραπεία-ενός-παράλυτου-στην-καπερναούμΚαπετανάκης Γεώργιος
 
Europe's Refugee Crisis in Context
Europe's Refugee Crisis in ContextEurope's Refugee Crisis in Context
Europe's Refugee Crisis in Context
arthursylvia
 
Ewrt1 a f15 class 6
Ewrt1 a f15 class 6Ewrt1 a f15 class 6
Ewrt1 a f15 class 6
grendel8729
 
GDE
GDEGDE
GDE
cplp
 

Viewers also liked (15)

Lawyer's Guide to Effective Internet Marketing
Lawyer's Guide to Effective Internet Marketing Lawyer's Guide to Effective Internet Marketing
Lawyer's Guide to Effective Internet Marketing
 
Вебинар: Основы распараллеливания С++ программ при помощи OpenMP
Вебинар: Основы распараллеливания С++ программ при помощи OpenMPВебинар: Основы распараллеливания С++ программ при помощи OpenMP
Вебинар: Основы распараллеливания С++ программ при помощи OpenMP
 
Natali
NataliNatali
Natali
 
01 Introduction
01 Introduction01 Introduction
01 Introduction
 
lecture-monitoring and performance tuning of the computer
lecture-monitoring and performance tuning of the computerlecture-monitoring and performance tuning of the computer
lecture-monitoring and performance tuning of the computer
 
N1146543960 143079 1718
N1146543960 143079 1718N1146543960 143079 1718
N1146543960 143079 1718
 
Ual2007
Ual2007Ual2007
Ual2007
 
How Commercial Real Estate Giants Can Put Tenants' Hard Earned Dollars At Risk
How Commercial Real Estate Giants Can Put Tenants' Hard Earned Dollars At RiskHow Commercial Real Estate Giants Can Put Tenants' Hard Earned Dollars At Risk
How Commercial Real Estate Giants Can Put Tenants' Hard Earned Dollars At Risk
 
Minimanual
MinimanualMinimanual
Minimanual
 
Back to the Moon
Back to the MoonBack to the Moon
Back to the Moon
 
работа с файлами в с++
работа с файлами в с++работа с файлами в с++
работа с файлами в с++
 
η θεραπεία-ενός-παράλυτου-στην-καπερναούμ
η θεραπεία-ενός-παράλυτου-στην-καπερναούμη θεραπεία-ενός-παράλυτου-στην-καπερναούμ
η θεραπεία-ενός-παράλυτου-στην-καπερναούμ
 
Europe's Refugee Crisis in Context
Europe's Refugee Crisis in ContextEurope's Refugee Crisis in Context
Europe's Refugee Crisis in Context
 
Ewrt1 a f15 class 6
Ewrt1 a f15 class 6Ewrt1 a f15 class 6
Ewrt1 a f15 class 6
 
GDE
GDEGDE
GDE
 

Similar to Progr labrab-4-2013-c++

Сложности микробенчмаркинга
Сложности микробенчмаркингаСложности микробенчмаркинга
Сложности микробенчмаркинга
Andrey Akinshin
 
Распространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложенийРаспространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложений
Andrey Akinshin
 
Распространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложенийРаспространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложений
Mikhail Shcherbakov
 
статический анализ кода
статический анализ кодастатический анализ кода
статический анализ кодаAndrey Karpov
 
Статический анализ кода
Статический анализ кода Статический анализ кода
Статический анализ кода
Pavel Tsukanov
 
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
Fwdays
 
Семинар 4. Многопоточное программирование на OpenMP (часть 4)
Семинар 4. Многопоточное программирование на OpenMP (часть 4)Семинар 4. Многопоточное программирование на OpenMP (часть 4)
Семинар 4. Многопоточное программирование на OpenMP (часть 4)
Mikhail Kurnosov
 
4. Многомерные массивы и массивы массивов в C#
4. Многомерные массивы и массивы массивов в C#4. Многомерные массивы и массивы массивов в C#
4. Многомерные массивы и массивы массивов в C#
Olga Maksimenkova
 
Статический анализ: вокруг Java за 60 минут
Статический анализ: вокруг Java за 60 минутСтатический анализ: вокруг Java за 60 минут
Статический анализ: вокруг Java за 60 минут
Andrey Karpov
 
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Mikhail Kurnosov
 
Опыт разработки статического анализатора кода
Опыт разработки статического анализатора кодаОпыт разработки статического анализатора кода
Опыт разработки статического анализатора кода
Andrey Karpov
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
Mikhail Kurnosov
 
Статический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий ЛевановСтатический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий Леванов
Yandex
 
Всё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программистаВсё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программиста
Andrey Karpov
 
Erlang
ErlangErlang
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
CocoaHeads
 
Принципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-StudioПринципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-Studio
Andrey Karpov
 
Оптимизация в мире 64-битных ошибок
Оптимизация  в мире 64-битных ошибокОптимизация  в мире 64-битных ошибок
Оптимизация в мире 64-битных ошибок
Tatyanazaxarova
 
основы Java переменные, циклы
основы Java   переменные, циклыосновы Java   переменные, циклы
основы Java переменные, циклы
Sergey Nemchinsky
 

Similar to Progr labrab-4-2013-c++ (20)

Сложности микробенчмаркинга
Сложности микробенчмаркингаСложности микробенчмаркинга
Сложности микробенчмаркинга
 
Распространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложенийРаспространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложений
 
Распространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложенийРаспространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложений
 
статический анализ кода
статический анализ кодастатический анализ кода
статический анализ кода
 
Статический анализ кода
Статический анализ кода Статический анализ кода
Статический анализ кода
 
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
 
Семинар 4. Многопоточное программирование на OpenMP (часть 4)
Семинар 4. Многопоточное программирование на OpenMP (часть 4)Семинар 4. Многопоточное программирование на OpenMP (часть 4)
Семинар 4. Многопоточное программирование на OpenMP (часть 4)
 
лекция 3
лекция 3лекция 3
лекция 3
 
4. Многомерные массивы и массивы массивов в C#
4. Многомерные массивы и массивы массивов в C#4. Многомерные массивы и массивы массивов в C#
4. Многомерные массивы и массивы массивов в C#
 
Статический анализ: вокруг Java за 60 минут
Статический анализ: вокруг Java за 60 минутСтатический анализ: вокруг Java за 60 минут
Статический анализ: вокруг Java за 60 минут
 
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
 
Опыт разработки статического анализатора кода
Опыт разработки статического анализатора кодаОпыт разработки статического анализатора кода
Опыт разработки статического анализатора кода
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
 
Статический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий ЛевановСтатический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий Леванов
 
Всё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программистаВсё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программиста
 
Erlang
ErlangErlang
Erlang
 
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
 
Принципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-StudioПринципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-Studio
 
Оптимизация в мире 64-битных ошибок
Оптимизация  в мире 64-битных ошибокОптимизация  в мире 64-битных ошибок
Оптимизация в мире 64-битных ошибок
 
основы Java переменные, циклы
основы Java   переменные, циклыосновы Java   переменные, циклы
основы Java переменные, циклы
 

More from Moscow Aviation Institute (National Research University), MAI (7)

Инструкция по активации Azure Pass
Инструкция по активации Azure PassИнструкция по активации Azure Pass
Инструкция по активации Azure Pass
 
Open imcup ver.1.0
Open imcup ver.1.0Open imcup ver.1.0
Open imcup ver.1.0
 
ImCup
ImCupImCup
ImCup
 
Oop — cpp 1
Oop — cpp 1Oop — cpp 1
Oop — cpp 1
 
Progr labrab-6-2013 - c++ - functions
Progr labrab-6-2013 - c++ - functionsProgr labrab-6-2013 - c++ - functions
Progr labrab-6-2013 - c++ - functions
 
Presentation lab3-sem3-c++
Presentation lab3-sem3-c++Presentation lab3-sem3-c++
Presentation lab3-sem3-c++
 
Programming c++ (begin-if-else)
Programming c++ (begin-if-else)Programming c++ (begin-if-else)
Programming c++ (begin-if-else)
 

Progr labrab-4-2013-c++

  • 1. Секция спортивного программирования Тренер: старший преподаватель каф. «Автоматика и процессы управления» Поповкин Александр Викторович vk.com/popovkin Mail: microsoftintel@yandex.ru 1
  • 2.
  • 3. Работа с массивами Kolya Vasya Petya Slavik Michael athlete Kolya, Vasya, Petya, Slavik, Michael Jump(Kolya); Jump(Vasya); Jump(Petya); Jump(Slavik); Jump(Michael);
  • 4. Обозначим именем Guy группу из 5 гимнастов Guy[0] Guy[1] Guy[2] Guy[3] Guy[4] Массив Guy, построенный из гимнастов Элементу Guy в позиции индекс выполнить упражнение индекс
  • 5. //Программа для отдельных гимнастов void main() { athlete Kolya, Vasya, Petya, Slavik, Michael; Jump(Kolya); Jump(Vasya); Jump(Petya); Jump(Slavik); Jump(Michael); } //Программа для массива гимнастов void main() { // Объявление массива из пяти гимнастов athlete Guy[5]; for (int which=0; which<=4; which++); { // Выполнение упражнения каждым гимнастом Jump(Guy[which]); } }
  • 6. Пример 1. Заполните одномерный массив размером 10 элементов числами от 1 до 10 и выведите содержимое массива на экран в виде: a[0] = 1 a[1] = 2 #include <iostream> using namespace std; int main() { // Инициализация переменных int a[10]; // Массив a типа int, // размер - 10 элементов int i; // Заполнить массив for (i = 0; i < 10; i++) a[i] = i + 1; // Вывести массив на экран for (i = 0; i < 10; i++) cout << "a[" << i << "] = " << a[i] << endl; return 0; }
  • 8. Самостоятельно: Введите одномерный массив из 10 элементов типа int с клавиатуры и выведите массив на экран так же, как и в примере 1 ЗАДАЧА 1
  • 9. Самостоятельно: Инициализируйте одномерный массив в тексте программы и выведите его на экран ЗАДАЧА 2 int a[10] = {10,20,30,40,50, // Массив a типа int, 9 ,8 ,7, 6, 5}; // размер - 10 элементов
  • 10. Самостоятельно: Заполните одномерный массив int a[10] случайными числами, скопируйте его в массив int b[10]. Выведите оба массива на экран ЗАДАЧА 3
  • 11. #include <iostream> #include <ctime> //для ф-ии time() #include <cstdlib> //для srand() и rand() int main() { // Инициализация переменных // Массивы a и b типа int, // размер - 10 элементов ??????????????? // Сброс генератора случайных чисел srand(time(NULL)); // Заполнить массив случайными числами for (i = 0; i < 10; i++) a[i] = rand(); // Скопировать массив a в массив b ????????????? // Вывести массивы на экран ????????????? } ЗАДАЧА 3
  • 12. Динамические массивы в С++ double *arr = new double[count]; // Освобождаем память, отведенную под динамический массив delete [] arr; 12
  • 13. Статический массив int main() { const int amount = 5; int data[5]; } 13
  • 14. Динамический массив int main() { int amount = 5; int *ptr = NULL; //адрес массива хранится в указателе ptr ptr = new int[amount]; //освободить память по адресу ptr delete []ptr; } 14
  • 15. 15 #include <iostream> using namespace std; int main() { int amount = 0; int *ptr = NULL; cout << "enter amount: "; cin >> amount; //адрес массива хранится в указателе ptr ptr = new int[amount]; for(int i = 0; i < amount; i++) { ptr[i] = rand() %100; cout << ptr[i] << 't'; } cout << endl; //освободить память по адресу ptr delete []ptr; }
  • 16. 16 //подключаем необходимые библиотеки ????????????? //подключаем стандартное пространство имен ?????? int main() { // Максимальное количество случайных элементов массива const int NUMBER_RAND_MAX = 100; // Инициируем генератор случайных чисел ????? // Случайное количество элементов массива int count = int((double)rand()/RAND_MAX*NUMBER_RAND_MAX); // Выделяем память под динамический массив double *arr = new double[count]; // Инициализируем массив случайными числами for(int i = 0; i < count; i++) { arr[i] = (double)rand()/RAND_MAX; } // Производим поиск минимального и максимального значений double min_value = arr[0]; double max_value = arr[0]; for(int i = 0; i < count; i++) ????????????? //вывод максимального и минимального значений ??????????? // Освобождаем память, отведенную под динамический массив delete [] arr; return 0; }
  • 17. 17 #include <iostream> #include <cstdlib> #include <ctime> using namespace std; int main() { // Максимальное количество случайных элементов массива const int NUMBER_RAND_MAX = 100; // Инициируем генератор случайных чисел ???????????????????? // Случайное количество элементов массива int count = int((double)rand()/RAND_MAX*NUMBER_RAND_MAX); // Выделяем память под динамический массив ????????????????????? // Инициириуем массив случайными числами for(int i = 0; i < count; i++) { arr[i] = (double)rand()/RAND_MAX; // вывод элементов массива ????????????? } // Освобождаем память, отведенную под динамический массив ????????????????? return 0; }
  • 19. 19 ЗАДАЧА Создать программу с функцией, которой передаѐтся динамический массив и его размерность. Эта функция должна выводить сумму элементов массива.
  • 20. 20 #include <iostream> #include <ctime> #include <cstdlib> using namespace std; int sum(int *a, int m) { int i, qwe = 0; for(i = 0; i < m; i++) qwe = qwe + a[i]; return qwe; } int main() { int i, m, *a=0, *b; cout << "Введите размерность -> "; cin >> m; // a = (int *) calloc(m, sizeof(*a)); a = new int[m];//выделение динамической памяти b = a; srand(time(NULL)); for(i = 0; i < m; i++) { *b++ = rand() %100; cout << a[i] << "t"; } cout << endl << "Сумма элементов массива: "; cout << endl << sum(a, m); delete[]a; return 0; }
  • 21. 21 ЗАДАЧА Задание. сгенерировать дин. массив с элеменами типа int, размерность вводим вручную, дин. массив new, delete Требуется: 1) вывести исх одномерный массив в читабельном виде 2) скопировать нечетные элементы данного массива в целевой массив В 3) вывести полученный массив четных чисел 4) скопировать из массива а -> b все нечетные числа 5) вывести массив 6) вывести макс. и миним. нечетные числа из массива В
  • 23. В своем простейшем варианте она выполняется очень медленно, поэтому обычно применяют пузырьковую сортировку с оптимизацией. Однако все алгоритмы пузырьковой сортировки имеют общую особенность – обмен элементов массива производится между двумя соседними элементами массива. (*)выбираем в новом массиве наибольшее число и обменивает его с соседним (правым). Метод пузырьковой сортировки (метод обменной сортировки с выбором)
  • 24. Отсортировать массив 142 23 97 19 2 4 по возрастанию (min -> max) Отсортировать массив 162 26 88 22 1 2 по возрастанию (min -> max) Отсортировать массив 4 2 19 97 23 142 по убыванию (max-> min)
  • 25. Реализация пузырьковой сортировки на С++: #include <iostream> using namespace std; int main() { int arr[6]={142, 23, 97, 19, 2, 4}; int i,j,tmp; cout << "Unsorted massiv: "; for ( i=0; i<6; i++) cout << arr[i] << endl; for ( i=0; i<6; i++) for ( j=i+1; j<6; j++) if( arr[i] > arr[j] ) { tmp=arr[i]; arr[i]=arr[j]; arr[j]=tmp; } cout <<" Sorted massiv: "; for ( i=0; i<6; i++) cout << arr[i] << endl; return 0; }
  • 26.
  • 27. #include <iostream> using namespace std; int main() { int arr[6]={4 2 19 97 23 142}; int i,j,tmp; cout << «Unsorted massiv»"; for ( i=0; i<6; i++) cout << arr[i] << endl; for ( i=0; i<6; i++) for ( j=i+1; j<6; j++) if( arr[i] > arr[j] ) { tmp=arr[i]; arr[i]=arr[j]; arr[j]=tmp; } cout << " Sorted massiv: "; for ( i=0; i<6; i++) cout << arr[i]) << endl; return 0; } ЗАДАЧА 4 Отсортировать массив 4 2 19 97 23 142 по убыванию (max-> min)
  • 28. ЗАДАЧА 5 Отсортировать массив 9, 12, 43, 2, 4, 78, 15, 34, 11, 27 по возрастанию (min -> max)