Тематический план

    • Внимание!

      Всем студентам МН-101 до 23:59 19 марта 2020 года:

      1. Скачать и установить Microsoft Teams.

      2. Зайти под учетной записью студента ЧелГУ (логин и пароль можно уточнить в деканате).

      3. Запустить приложение и присоединиться к группе МН-2019 по коду cgc3ae2

      4. Написать в общем чате приветствие, чтобы я увидел, что вы присоединилис.

      5. Отправить ссылку на эту инструкцию всем одногруппникам, которым можете.

  • Системы счисления

    • Гиперссылка icon
    • Файл icon

      Выполнить упражнения. Убедиться, что всё понятно.

    • Тест icon
  • Представление чисел в ЭВМ

    • Гиперссылка icon

      Прочитать главу 3. "Типы данных".

      Вопросы:

      • Какие переменные нельзя использовать?
      • Сколько бит занимает каждый целочисленный тип данных?
      • Примерные диапазоны значений целочисленных типов данных в Си?
      • Что такое целочисленные литералы? Как их использовать?
      • Зачем нужен квалификатор const?
      • Сколько бит занимает каждый вещественный тип данных?
      • Какова приблизительная точность вещественных типов данных в Си?
      • В каком порядке выполняются арифметические операции в Си?
      • В каком случае операция деления возвращает дробное значение, а в каком - округляет его до целого?
      • При переходе от каких типов к каким мы рискуем потерять данные? Можем перевести unsigned short в int? А double - в int? А double - во float?
    • Файл icon

      Проанализировать презентацию. Ответить себе на вопросы:

      1. Как закодировать число в дополнительном коде?
      2. Как избежать ошибок из-за переполнения?
      3. Что такое экспоненциальная форма записи числа?
      4. Как закодировать число с плавающей точкой?
      5. Какие избежать ошибок округления при использовании чисел с плавающей точкой?
    • Тест icon
  • Введение в программирование

    • Файл icon
    • Гиперссылка icon

      Что сделать: прочитать главы 1 и 2 из учебника Полякова.

      Вопросы для самоконтроля:

      1. Как происходит компиляция программ?
      2. Что такое переменная?
      3. Как считываются переменные из консоли?
      4. Как выводится информация в консоль?
      5. Каким образом мы может отформатировать данные, выводимые в консоль?
    • Задание icon

      Вам необходимо зайти на ipc.susu.ru, зарегистрироваться. В ответ на задание необходимо прислать ваши ФИО и логин, под которым зарегистрировались.

    • Задание icon

      Шаги:

      1. Зайти на ipc.susu.ru
      2. В меню слева выбрать "Рабочее место участника"
      3. Найти строку "Ввод-вывод (проводит csu для МН-2019-1)" и справа от нее нажать кнопку "Выбрать".
      4. Перейти во вкладку "Задачи" и решить их.
      5. В каждой задаче при помощи ссылки "Послать решение" отправить на проверку ваш код.
      6. По окончание выполнения задания через ответ на это задание отправьте мне сообщение о завершении.
  • Вычисление выражений

    • Файл icon
    • Гиперссылка icon

      Прочитать главу 3. "Типы данных".

      Да, вы это уже делали. Однако не поленитесь сделать это ещё раз. Это очень хорошая глава! Ответы на записанные ниже вопросы должны отлетать у вас от зубов.

      Вопросы:

      • Какие переменные нельзя использовать?
      • Сколько бит занимает каждый целочисленный тип данных?
      • Примерные диапазоны значений целочисленных типов данных в Си?
      • Что такое целочисленные литералы? Как их использовать?
      • Зачем нужен квалификатор const?
      • Сколько бит занимает каждый вещественный тип данных?
      • Какова приблизительная точность вещественных типов данных в Си?
      • В каком порядке выполняются арифметические операции в Си?
      • В каком случае операция деления возвращает дробное значение, а в каком - округляет его до целого?
      • При переходе от каких типов к каким мы рискуем потерять данные? Можем перевести unsigned short в int? А double - в int? А double - во float?
    • Задание icon

      Шаги:

      1. Зайти на ipc.susu.ru
      2. В меню слева выбрать "Рабочее место участника"
      3. Найти строку "Выражения (проводит csu для МН-2019-2)" и справа от нее нажать кнопку "Выбрать".
      4. Перейти во вкладку "Задачи" и решить их.
      5. В каждой задаче при помощи ссылки "Послать решение" отправить на проверку ваш код.
      6. По окончание выполнения задания через ответ на это задание отправьте мне сообщение о завершении.
  • Условия

    • Файл icon
    • Гиперссылка icon

      Прочитать главу 6. "Операторы ветвления и логические выражения".

      Страницы 257 - 282.

      Вопросы для самоконтроля:

      1. Как вычисляется логическое выражение?
      2. Что такое &&, || и !=?
      3. В каких случаях можно не ставить фигурные скобки { }?
      4. Если в теле оператора switch не ставить break; что будет?

    • Гиперссылка icon

      Что сделать: прочитать прочитать тему 3 "Выбор варианта".

      Вопросы для самоконтроля:

      1. Как вычисляется логическое выражение?
      2. Что такое &&, || и !=?
      3. В каких случаях можно не ставить фигурные скобки { }?
      4. Если в теле оператора switch не ставить break; что будет?
    • Практическое задание

      Что сделать: решить не менее 3 задач на acmp.ru из каждой темы:

  • Циклы

    • Файл icon
    • Гиперссылка icon

      Что сделать: прочитать прочитать темы 4 и 5 "Циклы" и "Методы отладки программ".

      Вопросы для самоконтроля:

      1. Что такое тело цикла?
      2. Зачем в объявлении цикла for в круглых скобка обязательно должны быть две ; (точки с запятой)?
      3. Что такое бесконечный цикл? Придумайте пример бесконечного цикла.
      4. Где бывает полезен бесконечный цикл? (необязательный вопрос для самостоятельного поиска)
    • Гиперссылка icon

      Прочитать следующие части главы 5. "Циклы и выражения отношений":

      Страницы 206 - 212

      Страницы 216 - 219

      Страницы 221 - 228

      Страницы 232 - 239

    • Практическое задание

      Что сделать: решить не менее 3 задач на acmp.ru из каждой темы:

    • Файл icon

      Задача "Монетки".

    • Тест icon
  • Указатели и Массивы

    • Гиперссылка icon

      Что сделать: прочитать прочитать тему 1. "Массивы".

      Вопросы для самоконтроля:

      1. Как создать массив?
      2. Как записать в него данные?
      3. Как вывести данные из массива на экран?
      4. Как посчитать сумму элементов числового массива?
      5. Как найти максимальный элемент в числовом массиве?
    • Гиперссылка icon

      Прочитать из главы 4. "Составные типы данных" следующие части.

      Страницы 131 - 136.

      Страницы 166 - 184.

      Вопросы для самоконтроля:

      1. Как создать массив?
      2. Как заполнить массив значениями?
      3. Что такое указатель?
      4. Если к указателю типа double применить операцию инкремента, что произойдет?
      5. Как создать динамический массив?
      6. Для чего нужна операция delete?

    • Практическое задание

      Что сделать: решить не менее 50% задач на массивы на acmp.ru из следующих тем.

  • Функции

    • Файл icon
    • Практическое задание

      Что сделать: решить не менее 3 задач из каждого раздела:

    • Файл icon
    • Файл icon
  • Сортировки

    • Файл icon

      Вам необходимо выучить следующие алгоритмы сортировок:

      1. Пузырьковая сортировка
      2. Сортировка вставками
      3. Сортировка выборкой
      4. Быстрая сортировка
      5. Пирамидальная сортировка

      Для тех, кто хорошо понимает программирование - дополнительно изучить алгоритм поразрядной сортировки.

      Как понять, достаточно ли хорошо вы знаете алгоритм? Если вы можете написать его с нуля на С/С++, не подглядывая в шпаргалки, вы хорошо знаете алгоритм.

    • Вводное задание:

      1. Создать массив из N случайных чисел.
      2. Отсортировать его всеми указанными алгоритмами.
    • Задание icon

      Задание:

      1. Создать массив из N случайных чисел.
      2. Отсортировать его всеми указанными алгоритмами.

      В ответе на это задание вам нужно прислать файл .cpp, в котором:

      • в функции main создается массив, заполняется случайными числами, выводится на экран результат
      • помимо функции main реализуются 5 функций сортировок (по одной на каждый изученный алгоритм сортировки); каждая функция принимает массив и сортирует его
  • Двумерные массивы

    • Файл icon
    • Гиперссылка icon

      Что сделать: прочитать прочитать темы 3 и 4. "Матрицы" и "Массивы символьных строк".

      Вопросы для самоконтроля:

      1. Что такое матрица?
      2. Как ее объявить?
      3. Как задать начальные значения элементов?
      4. Как считать данные в матрицу и вывести данные из матрицы на экран?
      5. Как создать массив символьных строк?
      6. Как считать в него данные из консоли?
    • Гиперссылка icon

      Прочитать из главы 5. "Циклы и выражения отношений" следующие части.

      Страницы 250 - 253.

    • Упражнения на простейшие действия с матрицами для самостоятельной тренировки:

      • Создать небольшую матрицу (2х3 или 3х4 и т.п), считать в нее данные из консоли и вывести из нее данные в консоль.
      • Заполнить всю матрицу числами 99.
      • Заполнить матрицу случайными числами от 0 до 99 при помощи выражения (rand() % 100)
      • Заполнить матрицу нулями, а главную диагональ - единицами
      • Вывести 2 строку матрицы. Вывести 1 столбец матрицы.
      • Вывести максимальные элементы для каждого столбца.
      • Посчитать сумму элементов в каждой строке матрицы. Вывести в консоль наибольшую сумму.

      Эти упражнения имеет смысл выполнить, если вы плохо понимаете тему. Если вы с первого взгляда примерно представляете код решения на Си, сразу переходите к задачам на acmp.ru.

    • Практическое задание

      Что сделать: решить все задачи из раздела:

      Решить любую задачу из раздела:

      Решить любые две задачи из раздела:

      Примечание: задача "Миша и негатив" не засчитывается - ее мы выполнили на занятии.

    • Файл icon
    • Файл icon
  • Зачет

    • Зачет по технологии программирования выставляется после подсчета промежуточных баллов.

      40 баллов Полностью выполненные задания из курса в
      Moodle
      http://moodle.uio.csu.ru/course/view.php?id=1425
      20 баллов Каждая решенная в аудитории задача во время зачета.
      Задачи берутся из домашних работ и разобранных в
      на занятиях.
      5 баллов Правильный ответ на дополнительный вопрос.
      Вопросы берутся из курса Moodle
      http://moodle.uio.csu.ru/course/view.php?id=1425

      Для получения зачета необходимо набрать не менее 50 баллов.

      Если какой-либо пункт выполнен частично, засчитывается пропорционально количество баллов. Например, вы выполнили половину задач на самостоятельную работу, решили в классе две задачи и ответили на один вопрос из трех. Ваш результат будет - 20 + 30 + 5 = 55 баллов, зачет.

      Автомат могут получить те, кто прорешает не менее 90% задач из курса “Язык программирования С++” с acmp.ru.

    • Зачет по информатике состоит из теста и решения задачи:

      • Тест по темам “Системы счисления” и “Представление данных в ЭВМ” из 8 заданий.

      • Задача по выбору преподавателя из задач с acmp.ru, которые давались на самостоятельную работу (темы “Массивы”, "Сортировки" и “Двумерные массивы”).

      Для получения зачета необходимо получить не менее 50% правильных ответов в тесте и решить задачу.

      Автомат могут получить те, кто прорешает не менее 90% задач из курса “Язык программирования С++” с acmp.ru.

    • Вопросы по технологии программирования: 

      1. Какие переменные нельзя использовать?
      2. Сколько бит занимает каждый целочисленный тип данных?
      3. Примерные диапазоны значений целочисленных типов данных в Си?
      4. Что такое целочисленные литералы? Как их использовать?
      5. Зачем нужен квалификатор const?
      6. Сколько бит занимает каждый вещественный тип данных?
      7. Какова приблизительная точность вещественных типов данных в Си?
      8. В каком порядке выполняются арифметические операции в Си?
      9. В каком случае операция деления возвращает дробное значение, а в каком - округляет его до целого?
      10. При переходе от каких типов к каким мы рискуем потерять данные? Можем перевести unsigned short в int? А double - в int? А double - во float?
      11. Как вычисляется логическое выражение?
      12. Что такое &&, || и !=?
      13. В каких случаях можно не ставить фигурные скобки { }?
      14. Если в теле оператора switch не ставить break; что будет?
      15. Что такое тело цикла?
      16. Зачем в объявлении цикла for в круглых скобка обязательно должны быть две ; (точки с запятой)?
      17. Что такое бесконечный цикл? Придумайте пример бесконечного цикла.
      18. Где бывает полезен бесконечный цикл? (необязательный вопрос для самостоятельного поиска)
      19. Как создать массив?
      20. Как заполнить массив значениями?
      21. Как найти максимальный или минимальный элемент в массиве?
      22. Что такое указатель?
      23. Если к указателю типа double применить операцию инкремента, что произойдет?
      24. Как создать динамический массив?
      25. Что такое функция?
      26. Что такое параметры функции? Что такое возвращаемое значение функции?
      27. Как происходит вызов функции?
      28. Что такое прототип функции? Что такое определение функции?
      29. Как создать библиотеку функций?
      30. Квадратичные сортировки. Сортировка выборкой. Сортировка обменом ("пузырьковая").
      31. Улучшенные сортировки. Пирамидальная сортировка. Быстрая сортировка.
      32. Что такое матрица? Как ее объявить? Как задать начальные значения элементов?
      33. Как считать данные в матрицу и вывести данные из матрицы на экран?
      34. Как уложить матрицу в одномерный массив?
      35. Как динамически создать матрицу и как передать ее на обработку в функцию?
  • Строки

    • Файл icon

      Прочитать и осмыслить параграф 66.

    • Гиперссылка icon

      Что сделать: прочитать прочитать тему 2. "Символьные строки".

      Вопросы для самоконтроля:

      1. Что такое символьная строка в языке Си?
      2. Как создать переменную для работы со строкой?
      3. Как считать в переменную строку из консоли?
      4. Как вывести строку на экран?
      5. Что такое ASCII-таблица? Как вывести на экран код символа?
      6. Чем в Си одинарные кавычки ' ' отличаются от двойных " "?
      7. Как обработать строку посимвольно с помощью цикла?
      8. Какие есть функции в библиотеке ctype.h? Напишите код, в котором используется какая-нибудь из функций ctype.h
      9. Какие есть функции в библиотеке string.h? Как их использовать?
    • Практическое задание

      Что сделать: решить задачи B, C, D на acmp.ru из следующих тем: 

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

    • Гиперссылка icon
    • Гиперссылка icon

      Хорошая статья с примерами.

    • Задание icon

      Выполнить 4 любых задания из File1 - File15.

      Каждую задачу оформить в отдельный файл с кодом. Файлы выслать в ответе на это задание.

    • Задание icon

      Выполнить 4 любых задания, которые вы еще не решали, из File1 - File15, но с использованием ДВОИЧНОГО режима чтения из файла/записи в файл.

      Каждую задачу оформить в отдельный файл с кодом. Файлы выслать в ответе на это задание.

  • Список, стек, очередь

    • Файл icon

      Что читать: Глава 4. Темы: "Списки" и "Стеки, очереди, деки". Страницы 2 - 17.

      Что делать:

      1. Своими руками реализовать стек
      2. Решить задачу на скобки из презентации
      3. Вспомнить пароль от ipc.susu.ru и решить задачи на стек.
    • Файл icon
    • Задание icon

      Шаги:

      1. Зайти на ipc.susu.ru
      2. В меню слева выбрать "Рабочее место участника"
      3. Найти нужную тему и справа от нее нажать кнопку "Выбрать".
      4. Перейти во вкладку "Задачи" и решить их.
      5. В каждой задаче при помощи ссылки "Послать решение" отправить на проверку ваш код.

      Примечание: задачи должны быть решены с использованием ваших реализаций стека и очереди на основе списка. Использовать стандартные классы С++ (например, <stack>) в данном случае запрещается.

  • Класс string

    • Гиперссылка icon

      Прочитать введение в класс string: стр. 146 - 152

      http://cppstudio.com/post/6110/

      Прочитать про функции класса string: http://ru.cppreference.com/w/cpp/string/basic_string

      Вопросы для самоконтроля:

      1. Как создать переменную типа string, и присвоить ей строку?
      2. Как объединить две строки?
      3. Как определить размер строки?
      4. Как найти позицию, на которой стоит некоторый символ в строке?

    • Форум icon
    • Задания для разминки:

      1. Считать из консоли строку и вывести ее же в консоль.
      2. Считать из консоли две строки, объединить их в третьей строке. Третью строку вывести в консоль.
      3. Создать строку и вывести в консоль 1, 3 и 7 символы подряд.
      4. Вывести из строки кусочек с 3 по 10 символы при помощи функции substr
      5. Найти в строке 2 и 3-ий символы пробелов при помощи функции find
      6. Вырезать из строки второе слово при помощи функций find и erase (слова в строке отделяются пробелами, без дополнительных сложностей)
    • Задание icon

      Самостоятельно решить не менее 2 задач из темы Строковой тип string

      Дополнительное задание для "продвинутых" - решить более половины!

  • Класс stack

    • Гиперссылка icon
    • Гиперссылка icon
    • Задания для разминки:

      1. Создать стек на 5 элементов типа string.
      2. Считать в стек 5 строк из консоли.
      3. Вывести в консоль количество элементов в стеке.
      4. Пока стек не пустой, выводить элементы из него в консоль.

      В итоге у вас должны получиться те же 5 строк, которые вы ввели, но в обратном порядке!

    • Файл icon

      Алексеев М.Н., "Практикум по программированию С++"

      Тема 10.1 "Стеки" (с. 121)

      Вы можете быть уверены, что успешно освоили решения задачи, если можете с нуля написать программу, не заглядывая в учебник.

    • Задание icon

      Внимание! Те, кто забыл пароль от ipc.susu.ru и не может его восстановить, должны зарегистрироваться заново и прислать мне скриншот ваших регистрационных данных в канале группы в Teams.

      Шаги:

      1. Зайти на ipc.susu.ru
      2. В меню слева выбрать "Рабочее место участника"
      3. Найти соревнование "Класс stack" и справа от нее нажать кнопку "Выбрать".
      4. Перейти во вкладку "Задачи" и решить их.
      5. В каждой задаче при помощи ссылки "Послать решение" отправить на проверку ваш код.

      При решении задач можно использовать материалы из прилагаемого файла. При решении задачи "Спичрайтер Йоды" можно воспользоваться конструкцией while(cin >> str), чтобы читать слова из потока входных данных.

  • Класс vector

    • Читаем хороший и очень подробный материал по классу vector!

      1. http://cppstudio.com/post/8453/
      2. http://cppstudio.com/post/8457/
      3. http://cppstudio.com/post/8670/
      4. http://cppstudio.com/post/9033/
      5. http://cppstudio.com/post/9178/

      Не забываем прочитать техническое описание класса vector и примерно запомнить, какие у него есть полезные функции-члены: http://ru.cppreference.com/w/cpp/container/vector

    • Задание для разминки:

      1. Создать вектор элементов double на 10 элементов.
      2. Всем элементам присвоить значения 777.
      3. Добавить 3 элемента в конец вектора и 2 элемента - в начало.
      4. Считать по 2 элемента из конца и начала вектора.
      5. Вырезать из вектора элементы с 3 по 5.
      6. Вывести при помощи итератора элементы со 2 по предпоследний.
      7. При помощи итератора в цикле посчитать сумму всех элементов вектора.
      8. Реализовать сортировку вставками на векторе.

      После каждого действия выводите вектор на экран, чтобы были видны изменения.

    • Файл icon

      Алексеев М.Н., "Практикум по программированию С++"

      Тема 10.2 "Векторы" (с. 113)

      Вы можете быть уверены, что успешно освоили решения задачи, если можете с нуля написать программу, не заглядывая в учебник.

    • Решить с использованием класса vector задачи с АСМР:

      1. Арифметическая прогрессия
      2. Двумерный массив
    • Задание icon

      Шаги:

      1. Зайти на ipc.susu.ru
      2. В меню слева выбрать "Рабочее место участника"
      3. Найти нужную тему и справа от нее нажать кнопку "Выбрать".
      4. Перейти во вкладку "Задачи" и решить их.
      5. В каждой задаче при помощи ссылки "Послать решение" отправить на проверку ваш код.

      При решении задач использовать класс vector. Действия, в которых требуется обработать элементы вектора с i по j, выполнять через итераторы!

  • Класс list

    • Гиперссылка icon
    • Гиперссылка icon
    • Задание для разминки:

      1. Создать список на 10 элементов float.
      2. Вставить в начало 0.0, в конец - 999.9, в середину - -1.9.
      3. Удалить из списку все повторяющиеся элементы.
      4. Стереть с 3 по 5 элементы списка.
      5. Удалить из списка все элементы, меньше нуля.
      6. При помощи итератора посчитать сумму все элементов в списке.

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

    • Задание icon

      Шаги:

      1. Зайти на ipc.susu.ru
      2. В меню слева выбрать "Рабочее место участника"
      3. Найти нужную тему и справа от нее нажать кнопку "Выбрать".
      4. Перейти во вкладку "Задачи" и решить их.
      5. В каждой задаче при помощи ссылки "Послать решение" отправить на проверку ваш код.
  • Класс queue

    • Гиперссылка icon
    • Гиперссылка icon
    • Задание для разминки:

      1. Создать очередь элементов типа string.
      2. Записать в очередь 4 слова.
      3. Вывести в консоль первое и последнее слово, удалить первое слово из очереди.
      4. Вывести в консоль число слов, оставшихся в очереди.
      5. Вывести из очереди в консоль все оставшиеся слова.
    • Задание icon

      Внимание! Нужно выбрать соревнование на Класс queue, в котором 2 задачи.

      Шаги:

      1. Зайти на ipc.susu.ru
      2. В меню слева выбрать "Рабочее место участника"
      3. Найти нужную тему и справа от нее нажать кнопку "Выбрать".
      4. Перейти во вкладку "Задачи" и решить их.
      5. В каждой задаче при помощи ссылки "Послать решение" отправить на проверку ваш код.
    • Задание icon

      К задаче можно перейти по ссылке.

      Подсказка: эта задача решается не классом queue. Догадаетесь, при помощи какого класса ее решать?

  • Класс set

    • Гиперссылка icon
    • Гиперссылка icon
    • Задание для разминки:

      1. Создать set для целочисленных элементов.
      2. Добавить первые 5 простых чисел (целых).
      3. Удалить первый элемент.
      4. Вставить 4 случайных чётных числа и затем удалить "первые" 2 числа множества.
      5. Вывести в консоль количество элементов.
      6. Проверить на пустоту set.
      7. Вывести максимальное значение из всех элементов.
      8. Вывести все элементы в контейнере. 
      9. Очистить контейнер set.
    • Чат icon
    • Задание icon

      Шаги:

      1. Зайти на ipc.susu.ru
      2. В меню слева выбрать "Рабочее место участника"
      3. Найти нужную тему и справа от нее нажать кнопку "Выбрать".
      4. Перейти во вкладку "Задачи" и решить их.
      5. В каждой задаче при помощи ссылки "Послать решение" отправить на проверку ваш код.
    • Задание icon
    • Файл icon
  • Класс map и лямбда-функции

    • Что читать:

      Хорошая статья по использованию класса map:

      1. Часть 1
      2. Часть 2
      3. Часть 3
      4. Часть 4

      Хорошая статья по использованию лямбда-функций:

      https://habrahabr.ru/post/66021/

      Ещё одна хорошая статья:

      http://www.drdobbs.com/cpp/lambdas-in-c11/240168241

    • Задания для разминки:

      1. Создать ассоциативный массив.
      2. Записать в него 10 элементов.
      3. Вывести все элементы на экран при помощи цикла с использованием итератора.
      4. Применить функции insert(), erase(), find().
    • Написать программы с использованием лямбда функций:

      1. Создать вектор из 10 элементов.
      2. При помощи лямбда-функции заполнить его случайными значениями от 1 до 99
      3. При помощи лямбда-функции вывести все четные элементы
      4. При помощи лямбда-функции вывести номера всех нечетных элементов
      5. При помощи лямбда-функции посчитать все элементы больше 0
      6. Создать map из пар число-слово и заполнить 10 элеметами
      7. При помощи лямбда-функции вывести все слова, в которых больше 3 букв
    • Форум icon

      В этот форум рекомендуется сохранять ссылки, примеры кода и любые другие полезные материалы по теме.

    • Задание для команды "Пчёлки":

      1. Что такое класс map?
      2. Зачем он нужен?
      3. Пример использования класса map.

      Задание для команды "HTML - язык программирования":

      1. Что такое лямбда-функции?
      2. Для чего они нужны?
      3. Пример использования лямбда-функци.
    • Задание icon

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

      1. Создать вектор из 10 элементов.
      2. При помощи лямбда-функции заполнить его случайными значениями от 1 до 99
      3. При помощи лямбда-функции вывести все четные элементы
      4. При помощи лямбда-функции вывести номера всех нечетных элементов
      5. При помощи лямбда-функции посчитать все элементы больше 0
      6. Создать map из пар число-слово и заполнить 10 элеметами
      7. При помощи лямбда-функции вывести все слова, в которых больше 3 букв

      Необязательное задание: создайте структуру для хранения комплексного числа

      struct Complex {
      double real;
      double img;
      }

      Создайте вектор для хранения комплексных чисел. При помощи библиотеки algorithm и лямбда-функций сгенерируйте в вектор случайные комплексные числа. Затем отсортируйте их.

      Результат отправить в виде текста программ через кнопку "Послать решение".

      Внимание! 
      На проверку принимаются только файлы PDF. Откройте любой текстовый редактор (например, Word), выберите шрифт Courier New
       , вставьте текст ваших программ и сохраните файл в формате PDF. Главное - чтобы сохранились переходы на новую строку и отступы, иначе ваши программы будет невозможно читать.

  • Длинная арифметика и перегрузка операторов

    • Вводное задание:

      1. Перегрузить оператор потокового ввода >>
      2. Перегрузить оператор потокового вывода <<
      3. Перегрузить оператор сравнения "меньше" <
      4. Перегрузить оператор сложения +
      5. Перегрузить оператор вычитания -
        (обходимся без отрицательных чисел: уменьшаемое заведомо больше вычитаемого)
      6. Реализовать две перегрузки оператора умножения: умножение длинного на длинное и умножение длинного на unsigned int.
      7. Реализовать оператор деления / длинного числа на unsigned int.
      8. Реализовать оператор взятия целочисленного остатка от деления % длинного числа на unsigned int.
      9. Реализовать оператор присвоения = значения из unsigned int в длинное.

    • Задание icon

      Что сделать: решить задачи на длинную арифметику на acmp.ru

  • Алгоритмы на деревьях

    • Файл icon

      Что читать: Глава 4. Тема: "Деревья". Страницы 18 - 30.

      Вопросы (ответы искать как в учебнике, так и самостоятельно - в Интенете):

      • Что такое дерево?
      • Что такое узел дерева? Корень? Лист?
      • Что такое поддерево?
      • Что такое бинарное дерево?

    • Файл icon
    • Задание icon

      Что делать:

      1. Своими руками реализовать Дерево
      2. Своими руками реализовать функцию добавления элемента в двоичное дерево поиска
      3. Реализовать функцию поиска в дереве
      4. Реализовать функции правого и левого обхода дерева

      Внимание! 
      На проверку принимаются только файлы PDF. Откройте любой текстовый редактор (например, Word), выберите шрифт Courier New
       , вставьте текст ваших программ и сохраните файл в формате PDF. Главное - чтобы сохранились переходы на новую строку и отступы, иначе ваши программы будет невозможно читать.

    • Файл icon
  • Алгоритмы на графах

    • Файл icon
    • Список алгоритмов, которые нужно реализовать:

      • Нахождение циклов в графе
      • Построение минимального остовного дерева (алгоритм Прима-Краскала)
      • Нахождение минимального пути из заданной вершины в произвольную (алгоритм Дейкстры)
      • Нахождение минимальных расстояний между всеми вершинами графа (алгоритм Флойда-Уоршелла)
    • Форум icon
    • Гиперссылка icon

      Сайт, где фактически все задачи для вас уже решены. Нужно разобраться, как эти решения применить к вашим задачам.