SlideShare una empresa de Scribd logo
1 de 29
Descargar para leer sin conexión
Секция спортивного
программирования
Тренер: старший преподаватель каф.
«Автоматика и процессы управления»
Поповкин Александр Викторович
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++

Más contenido relacionado

La actualidad más candente

Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksЛекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
Mikhail Kurnosov
 
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
Computer Science Club
 

La actualidad más candente (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: Дескрипторы. Что это?
 

Destacado

01 Introduction
01 Introduction01 Introduction
01 Introduction
cplp
 
N1146543960 143079 1718
N1146543960 143079 1718N1146543960 143079 1718
N1146543960 143079 1718
jennyselden
 
η θεραπεία-ενός-παράλυτου-στην-καπερναούμ
η θεραπεία-ενός-παράλυτου-στην-καπερναούμη θεραπεία-ενός-παράλυτου-στην-καπερναούμ
η θεραπεία-ενός-παράλυτου-στην-καπερναούμ
Καπετανάκης Γεώργιος
 

Destacado (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 a Progr labrab-4-2013-c++

статический анализ кода
статический анализ кодастатический анализ кода
статический анализ кода
Andrey Karpov
 
Статический анализ: вокруг Java за 60 минут
Статический анализ: вокруг Java за 60 минутСтатический анализ: вокруг Java за 60 минут
Статический анализ: вокруг Java за 60 минут
Andrey Karpov
 
Опыт разработки статического анализатора кода
Опыт разработки статического анализатора кодаОпыт разработки статического анализатора кода
Опыт разработки статического анализатора кода
Andrey Karpov
 
Всё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программистаВсё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программиста
Andrey Karpov
 

Similar a 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 переменные, циклы
 

Más de 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)