JS Fest 2019. Владимир Агафонкин. Быстро по умолчанию: алгоритмическое мышлен...JSFestUA
Мы так сильно полагаемся на фреймворки, что уже забыли, как работают компьютеры. Когда что-то сильно тормозит и непонятно, как это решить, приходится учиться мыслить алгоритмически. Как анализировать "узкие" места в коде? Выполняет ли код лишнюю работу? Как можно достичь того же результата, делая меньше? Практикуя алгоритмическое мышление, отвечать на подобные вопросы становится гораздо легче, и рано или поздно вы научитесь писать код так, чтобы он был быстрым изначально, по умолчанию. Так что позвольте мне познакомить вас с алгоритмами еще раз, в практичном виде, применимом в вашей повседневной работе.
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»Platonov Sergey
За время работы над проектом был разработан удобный фреймворк для написания асинхронного кода. В докладе будет рассмотрено то, как он устроен и как со временем эволюционировал. Разберемся, как с помощью наших примитивов решать проблемы, часто встречающиеся в асинхронном программирование; будут примеры удачного и неудачного использования. Отдельно остановимся на сравнении получившихся средств с тем, что было добавлено в С++11.
JS Fest 2019. Владимир Агафонкин. Быстро по умолчанию: алгоритмическое мышлен...JSFestUA
Мы так сильно полагаемся на фреймворки, что уже забыли, как работают компьютеры. Когда что-то сильно тормозит и непонятно, как это решить, приходится учиться мыслить алгоритмически. Как анализировать "узкие" места в коде? Выполняет ли код лишнюю работу? Как можно достичь того же результата, делая меньше? Практикуя алгоритмическое мышление, отвечать на подобные вопросы становится гораздо легче, и рано или поздно вы научитесь писать код так, чтобы он был быстрым изначально, по умолчанию. Так что позвольте мне познакомить вас с алгоритмами еще раз, в практичном виде, применимом в вашей повседневной работе.
Павел Сушин «Асинхронное программирование на С++: callbacks, futures, fibers»Platonov Sergey
За время работы над проектом был разработан удобный фреймворк для написания асинхронного кода. В докладе будет рассмотрено то, как он устроен и как со временем эволюционировал. Разберемся, как с помощью наших примитивов решать проблемы, часто встречающиеся в асинхронном программирование; будут примеры удачного и неудачного использования. Отдельно остановимся на сравнении получившихся средств с тем, что было добавлено в С++11.
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Python Meetup
В своем докладе Олег расскажет о замене стандартных функций на более быстрые и об ускорении работы python. Также продемонстрирует несколько примеров быстрых конструкций python.
ЛЕКЦИЯ 3. Реентерабельность. Сигналы. Локальные данные потоков. Принудительное завершение потоков
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ЛЕКЦИЯ 4. Шаблоны многопоточного программирования
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“Platonov Sergey
Предлагаемый подход позволяет без труда получить параллельную асинхронную обработку данных без явного использования средств синхронизации, по максимуму задействуя доступные вычислительные ресурсы. Использование сопрограмм значительно упрощает написание многопоточного кода. Это дает возможность сконцентрироваться непосредственно на задаче обработки данных, не занимаясь вопросами синхронизации различных операций, включая асинхронную работу с сетью.
ЛЕКЦИЯ 8. Многопоточное программирование без использования блокировок. Модель потребитель-производитель. Потокобезопасный стек. Проблема ABA. Указатели опасности.
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ЛЕКЦИЯ 5. Шаблоны многопоточного программирования
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
Дракон в мешке: от LLVM к C++ и проблемам неопределенного поведенияPlatonov Sergey
В этом докладе Дмитрий кратко рассказывает о таком звере, как LLVM, о котором много кто слышал, но немногие щупали.
Что такое компилятор на самом деле? Как происходит компиляция программы, как работают оптимизации и, наконец, откуда берется неопределенное поведение в детерменированных программах на C++?
Что API Карт забыл на сервере — Антон КорзуновYandex
Принято считать, что API Карт — это JavaScript-библиотека, которая работает в браузере. Это утверждение верно ровно в той степени, в какой сферичен конь в вакууме.
Из доклада вы узнаете, зачем API нужен бэкенд, почему писать его придётся вам и как API Карт будет помогать этой задаче с фронтенда.
P.S. Будет интересно разным слоям населения.
ЛЕКЦИЯ 4. Стандарт POSIX Threads. Реентерабельность функций. Обработка сигналов. Локальные данные потоков. Принудительное завершение потоков. Шаблоны программирования с использованием потоков
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
преподаватель:
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
ПВТ - осень 2014 - Лекция 6 - Атомарные операции. Внеочередное выполнение инс...Alexey Paznikov
ЛЕКЦИЯ 6. Атомарные операции. Внеочередное выполнение инструкций. Барьеры памяти. Семантика захвата-освобождения. Модель памяти C++
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
преподаватель:
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
ЛЕКЦИЯ 7. Многопоточное программирование без блокировок. Модель потребитель-производитель. Потокобезопасный стек: проблема ABA, указатели опасности, сборщики мусора, счётчик ссылок, применение модели памяти С++.
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Yandex
Евгений Крутько, НИЦ «Курчатовский институт».
В докладе на примере программы моделирования динамики движения конструкций по методу конечных элементов рассматриваются возможности и практика распараллеливания вычислений. Речь в нём пойдёт как о технике создания новых вычислительных потоков, так и об использовании стандартов openMP и MPI.
Правильная организация клиент-карточного взаимодействия — Антон КорзуновYandex
Как говорил один человек, нет данных — нет проблемы. Но проблема в том, что в современном мире данные есть, и их много . Ещё в современном мире очень любят данные отображать, например, на карте — только это не всегда хорошо получается.
Из доклада вы узнаете о типичных ошибках передачи данных на карту и простых способах этих ошибок избежать.
Докладчик:
Владимир Донец (kwimba.ru)
Описание: Слышали про магию в Python? Одно из магических заклинаний называется дескрипторы. Мощная фича языка, которая позволяет определять свое поведение атрибута объекта при доступе к этому атрибуту.
Сложно звучит? А вы знали, что дескрипторами уже наверняка пользовались, если хотя бы раз писали на Python. Я расскажу о том, что такое дескрипторы и как их осознанно можно применять в собственном коде.
Вебинар: Основы распараллеливания С++ программ при помощи OpenMPFlyElephant
Презентация с первого технического вебинара FlyElephant, на котором были рассмотрены основы распараллеливания С/С++ программ при помощи OpenMP и рассказано о функционале FlyElephant.
Видео презентации: https://youtu.be/X1bqBPnJaHM
Сайт FlyElephant: http://flyelephant.net/
ПРОГРАММА БЕТА-ТЕСТИРОВАНИЯ FLYELEPHANT: http://flyelephant.net/beta/
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Python Meetup
В своем докладе Олег расскажет о замене стандартных функций на более быстрые и об ускорении работы python. Также продемонстрирует несколько примеров быстрых конструкций python.
ЛЕКЦИЯ 3. Реентерабельность. Сигналы. Локальные данные потоков. Принудительное завершение потоков
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ЛЕКЦИЯ 4. Шаблоны многопоточного программирования
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“Platonov Sergey
Предлагаемый подход позволяет без труда получить параллельную асинхронную обработку данных без явного использования средств синхронизации, по максимуму задействуя доступные вычислительные ресурсы. Использование сопрограмм значительно упрощает написание многопоточного кода. Это дает возможность сконцентрироваться непосредственно на задаче обработки данных, не занимаясь вопросами синхронизации различных операций, включая асинхронную работу с сетью.
ЛЕКЦИЯ 8. Многопоточное программирование без использования блокировок. Модель потребитель-производитель. Потокобезопасный стек. Проблема ABA. Указатели опасности.
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ЛЕКЦИЯ 5. Шаблоны многопоточного программирования
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
Дракон в мешке: от LLVM к C++ и проблемам неопределенного поведенияPlatonov Sergey
В этом докладе Дмитрий кратко рассказывает о таком звере, как LLVM, о котором много кто слышал, но немногие щупали.
Что такое компилятор на самом деле? Как происходит компиляция программы, как работают оптимизации и, наконец, откуда берется неопределенное поведение в детерменированных программах на C++?
Что API Карт забыл на сервере — Антон КорзуновYandex
Принято считать, что API Карт — это JavaScript-библиотека, которая работает в браузере. Это утверждение верно ровно в той степени, в какой сферичен конь в вакууме.
Из доклада вы узнаете, зачем API нужен бэкенд, почему писать его придётся вам и как API Карт будет помогать этой задаче с фронтенда.
P.S. Будет интересно разным слоям населения.
ЛЕКЦИЯ 4. Стандарт POSIX Threads. Реентерабельность функций. Обработка сигналов. Локальные данные потоков. Принудительное завершение потоков. Шаблоны программирования с использованием потоков
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
преподаватель:
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
ПВТ - осень 2014 - Лекция 6 - Атомарные операции. Внеочередное выполнение инс...Alexey Paznikov
ЛЕКЦИЯ 6. Атомарные операции. Внеочередное выполнение инструкций. Барьеры памяти. Семантика захвата-освобождения. Модель памяти C++
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
преподаватель:
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
ЛЕКЦИЯ 7. Многопоточное программирование без блокировок. Модель потребитель-производитель. Потокобезопасный стек: проблема ABA, указатели опасности, сборщики мусора, счётчик ссылок, применение модели памяти С++.
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Yandex
Евгений Крутько, НИЦ «Курчатовский институт».
В докладе на примере программы моделирования динамики движения конструкций по методу конечных элементов рассматриваются возможности и практика распараллеливания вычислений. Речь в нём пойдёт как о технике создания новых вычислительных потоков, так и об использовании стандартов openMP и MPI.
Правильная организация клиент-карточного взаимодействия — Антон КорзуновYandex
Как говорил один человек, нет данных — нет проблемы. Но проблема в том, что в современном мире данные есть, и их много . Ещё в современном мире очень любят данные отображать, например, на карте — только это не всегда хорошо получается.
Из доклада вы узнаете о типичных ошибках передачи данных на карту и простых способах этих ошибок избежать.
Докладчик:
Владимир Донец (kwimba.ru)
Описание: Слышали про магию в Python? Одно из магических заклинаний называется дескрипторы. Мощная фича языка, которая позволяет определять свое поведение атрибута объекта при доступе к этому атрибуту.
Сложно звучит? А вы знали, что дескрипторами уже наверняка пользовались, если хотя бы раз писали на Python. Я расскажу о том, что такое дескрипторы и как их осознанно можно применять в собственном коде.
Вебинар: Основы распараллеливания С++ программ при помощи OpenMPFlyElephant
Презентация с первого технического вебинара FlyElephant, на котором были рассмотрены основы распараллеливания С/С++ программ при помощи OpenMP и рассказано о функционале FlyElephant.
Видео презентации: https://youtu.be/X1bqBPnJaHM
Сайт FlyElephant: http://flyelephant.net/
ПРОГРАММА БЕТА-ТЕСТИРОВАНИЯ FLYELEPHANT: http://flyelephant.net/beta/
How Commercial Real Estate Giants Can Put Tenants' Hard Earned Dollars At RiskGail Fischer
Fischer provides a hard-hitting analysis of the biases and conflicts of interest that prevail in today's new commercial real estate environment. The "Big 4" global commercial real estate firms increasingly represent both landlords and tenants. But they make most of their money from the owners, investors, developers and landlords. Tenants come last and as a result risk getting a bad deal. "It's a gamble for a company to put its corporate real estate portfolio in the hands of giant firms that serve multiple players and have much to gain by supporting the best deal for landlords rather than helping tenants minimize costs," Fischer said.
Stephen Fleming's Space Track presentation from DragonCon 2016.
Everyone wants to go to Mars. Before we make those plans, we need to go back to the Moon: to build infrastructure, to develop technology, to learn about human biology — and to save money!
The full version of my presentation at the CCA / SFAI panel in Santa Fe, New Mexico, USA on 9 September, 2015:
Join CCA and SFAI in a discussion about the global issue of Immigration/Emigration. With Santa Fe acting as a de facto Sanctuary City, questions around immigration, migration, and cultural authenticity, purity, and diversity are particularly relevant to our community. Who immigrates/emigrates and why? How do the journeys of migrants contribute to who we are as a collective community? How do we define sanctuary in the current socio-political context? Who is impacted by Santa Fe’s role as a sanctuary?
Join us for a panel discussion that aims to unpack the complexities of immigration as relevant to our city and beyond. Moderated by Sanjit Sethi (Santa Fe Art Institute), the panelists will be Dr. Rebecca Schrieber (American Studies, UNM), Carlos Juan Deosos (Santa Fe Mountain Center), Sylvia Arthur (UK-based journalist), Heidi McKinnon (Director of Curators Without Borders), and Marcela Diaz (Somos un Pueblo Unido).
Андрей Карпов
Вы узнаете, что такое статический анализ кода и историю его развития. Узнаете, как эффективно применять инструменты статического анализа в своей работе, увидите практические примеры использования этой методологии. Доклад ориентирован на программистов, использующих языки Си/Си++, но будет полезен всем
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"Fwdays
Let's calculate an average of one column for each key, like the following query: SELECT key, avg(value) FROM table GROUP BY key. What can be more simple? But the question is: what is the most efficient way to do it? How to write code to achieve maximum performance on a variety of hardware?
Статический анализ: вокруг Java за 60 минутAndrey Karpov
Статический анализ всё больше воспринимается как неотъемлемая часть процесса разработки качественного программного обеспечения. Разумеется, у этой технологии уже есть свои сторонники и противники, но, несмотря на это, тема статического анализа всё более актуальна и требует детального рассмотрения. Рассмотрим, что такое статический анализ, как он применяется и как влияет на качество и надёжность кода. Поговорим о важности раннего обнаружения ошибок и дефектов уязвимости. Рассмотрим существующие инструменты для Java, такие как Sonar Java, FindBugs и анализатор встроенном в среду разработки IntelliJ IDEA. Расскажем историю, почему несмотря на уже существующие инструменты, мы решили разработать PVS-Studio для Java, как мы это делали и что в итоге получилось. В конце затронем вопрос интеграции статических анализаторов кода в большие старые проекты. Другими словами, как увидеть 100500 срабатываний и не упасть духом.
Опыт разработки статического анализатора кодаAndrey Karpov
Один из основателей проекта PVS-Studio расскажет об опыте разработки статического анализатора кода C++. У инструментов статического анализа кода существует "проблема айсберга". От пользователей скрыты сложные механизмы анализа кода, и иногда им кажется, что статические анализаторы – это просто какие-то утилиты, ищущие опечатки с помощью регулярных выражений. Автор доклада постарается в общих чертах описать, как всё обстоит на самом деле. Он покажет на примерах, почему нормальный анализ с помощью регулярных выражений нереализуем, что такое Data Flow анализ, а также расскажет о других технологиях, применяемых при анализе кода. Вкратце будет затронут вопрос использования нейронных сетей, обсуждение которых сейчас является очень модной темой, и рассказано, почему с точки зрения анализа кода отношение к этому направлению является очень скептическим.
Статический и динамический полиморфизм в C++, Дмитрий ЛевановYandex
На примере некоторых архитектурных решений Крипты Дмитрий расскажет о способах реализации полиморфного поведения в программах на C++, о преимуществах и недостатках этих способов, а также о новых возможностях C++11.
Всё о статическом анализе кода для Java программистаAndrey Karpov
Этот доклад для тех, кто не знаком со статическими анализаторами кода, или знаком, но ещё не внедрил эти инструменты в процесс разработки. Будет описана методология статического анализа и как она используется для выявления ошибок и запахов кода. Будут кратко рассмотрены некоторые популярные инструменты статического анализа для языка Java, а также платформа SonarQube способная объединить и визуализировать отчёты различных анализаторов. Немного заглянем внутрь и поговорим о технологиях, используемых в современных статических анализаторах кода и позволяющих находить разнообразнейшие паттерны ошибок. Затронем вопрос, почему несмотря на уже существующие инструменты наша команда решила сделать ещё один: PVS-Studio for Java :). В конце рассмотрим важный вопрос интеграции инструментов статического анализа в большие старые проекты и почему так важно регулярное использование подобных инструментов.
В предыдущей записи блога я обещал рассказать, почему сложно демонстрировать 64-битные ошибки на простых примерах. Разговор касался operator[] и я говорил, что в простых случая может работать даже явно некорректный код.
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;
}
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
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. В своем простейшем варианте она выполняется
очень медленно, поэтому обычно применяют
пузырьковую сортировку с оптимизацией. Однако
все алгоритмы пузырьковой сортировки имеют
общую особенность – обмен элементов массива
производится между двумя соседними
элементами массива.
(*)выбираем в новом массиве наибольшее число
и обменивает его с соседним (правым).
Метод пузырьковой сортировки
(метод обменной сортировки с выбором)