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

Тип работы: Все Задача Курсовая работа Лабораторная работа Ответы на вопросы
Язык программирования: Все Bash Basic C C# C# ASP .NET C++ Delphi Fortran Free Basic HTML Java JavaScript Pascal Pascal ABC Turbo Pascal VBA Visual Basic Ассемблер
Блок-схема: Все Есть Нет
Сортировать по умолчанию цене названию
  • Контрольная, Программирование С++ 1

    Вариант 9 (Классы)
    Описать класс, реализующий стек и работу с ним.
    1.) Класс должен содержать следующие сведения об отправлении поездов дальнего следования:
    • пункт отправления;
    • номер поезда;
    • время прибытия.
    2.) В классе должны быть реализованы следующие операции над стеком:
    • добавление данных о поездах в информационную систему;
    • удаление данных о поезде по введенному номеру поезда;
    • вывод информации обо всех поездах;
    • вывод информации о поезде, номер которого введен с клавиатуры;
    3.) Программа должна обеспечивать диалог с помощью меню.
    4.) В программе должны быть созданы два экземпляра класса: прибывающие и задерживающиеся поезда, должны быть предусмотрена возможность перевода поезда из прибывающих в задерживающиеся и наоборот по введенному номеру поезда (при этом информация о данном поезде удаляется из одного списка и добавляется в другой). При выводе информации о поездах, пользователь должен выбрать какой список выводить (прибывающих или задерживающихся поездов), либо вывести все поезда из обоих списков.

    Вариант 9 (двуязычный список)
    1.) Автоматизированная информационная система на железнодорожном вокзале содержит сведения об отправлении поездов дальнего следования.
    Для каждого поезда указывается:
    • пункт назначения;
    • номер поезда;
    • время отправления.
    2.) Программа должна обеспечивать:
    • хранение данных в информационной системе в виде двусвязного списка, записи должны быть упорядочены по номерам поездов;
    • добавление данных о поездах в информационную систему;
    • удаление данных о поезде по введенному номеру поезда;
    • вывод информации обо всех поездах;
    • вывод информации о поезде, номер которого введен с клавиатуры;
    3.) Программа должна обеспечивать диалог с помощью меню.

    Вариант 9 (файлы)
    Написать программу, которая считывает текст из файла и выводит на экран только предложения, состоящие из заданного количества слов.

    Вариант 15 (двуязычный список)
    1.) Составить программу, которая содержит текущую информацию о книгах в библиотеке.
    Сведения о книгах включают:
    • фамилию и инициалы автора;
    • название;
    • год издания;
    • количество экземпляров данной книги в библиотеке.
    2.) Программа должна обеспечивать:
    • хранение всех данных обо всех книгах в библиотеке в виде двусвязного списка, записи должны быть упорядочены по годам издания;
    • добавление данных о книгах вновь поступивших в библиотеку;
    • удаление данных о списываемой книге, название которой введено с клавиатуры;
    • вывод информации обо всех книгах в библиотеке;
    • по запросу выводится информация обо всех книгах автора, имеющихся в библиотеке, чья фамилия введена с клавиатуры.
    3.) Программа должна обеспечивать диалог с помощью меню.

    Вариант 15 (файлы)
    Написать программу, которая считывает текст из файла и выводит на экран сначала вопросительные, а затем восклицательные предложения.

    Вариант 15 (Классы)
    Описать класс, реализующий стек и работу с ним.
    1.) Класс должен содержать следующие сведения о книгах в библиотеке:
    • фамилию и инициалы автора;
    • название;
    • год издания;
    • количество экземпляров данной книги в библиотеке.
    2.) В классе должны быть реализованы следующие операции над стеком:
    • добавление данных о книгах вновь поступивших в библиотеку;
    • удаление данных о списываемой книге, название которой введено с клавиатуры;
    • вывод информации обо всех книгах в библиотеке;
    • по запросу выводится информация обо всех книгах автора, имеющихся в библиотеке, чья фамилия введена с клавиатуры.
    3.) Программа должна обеспечивать диалог с помощью меню.
    4.) В программе должны быть созданы два экземпляра класса: книги в библиотеке и выданные читателям. Когда читатель берет книгу в библиотеке, информация о ней (по введенному названию книги) должна быть автоматически удалена из списка книг в библиотеке и переведена в список книг у читателей. Когда читатель сдает книгу в библиотеку, информация о ней должна быть автоматически удалена из списка книг у читателей и перенесена в список книг в библиотеке. При выводе информации о книгах, пользователь должен выбрать какой список выводить (книги в библиотеке или у читателей), либо вывести все книги из обоих списков.

  • Решение задач, Программирование, Программирование на Си, Программирование на языках высокого уровня

    Разработка системы имитационного моделирования работы строительных машин.

    Условие: на строительстве здания занято 3 машины (экскаватор и 2 бульдозера), машины периодически ломаются, математические ожидания межремонтного (рабочего) времени равны: для экскаватора – 4 часа, для бульдозера – 6 часов. Машины работают две смены подряд (16 часов). Третья смена используется для профилактики (в случае необходимости в 3-ю смену ведется ремонт). Таким образом, каждый рабочий день машины начинают в исправном состоянии. После каждого отказа машины подвергаются ремонту. Обслуживает машины бригада из двух слесарей (6 и 3 разряд). Продолжительность ремонта – случайная величина, распределенная по экспоненциальному закону, зависит она от типа машины и от состава бригады. Математические ожидания продолжительности ремонта:

    Состав бригады

    Экскаватор

    Бульдозер

    Бульдозер

    Слесарь 3-го разряда

    2 часа

    Не может

    Не может

    Слесарь 6-го разряда

    1 час

    2 часа

    2 часа

    Вместе

    0,25 часа

    1,5 часа

    1,5 часа

    Межремонтное время также распределено по экспоненциальному закону. Простой машин приносит следующие убытки: экскаватор – 5000 рублей/час, бульдозер – 3000 рублей/час. Работа машин приносит следующий доход – экскаватор – 5000 рублей/час, бульдозер – 3000 рублей/час. Слесарь 6-го разряда получает 1000 рублей/час за ремонт, слесарь 3-го разряда получает 600 рублей/час. Накладные расходы на бригаду – 500 рублей/час. Требуется определить экономическую целесообразность увольнения слесаря 3-го разряда.

  • Написать 10 программ на C++

    контрольная, инженерия

    ЛАБОРАТОРНАЯ РАБОТА № 4.

    ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ ОДНОМЕРНЫХ МАССИВОВ

     

    Постановка задачи. Задан массив из k символов. Определить, симметричен ли он, т. е. читается ли он одинаково слева направо и справа налево.

    Выполнено в Microsoft Visual Studio 2015 в Windows 8.1.

    При создании проекта был выбран: Шаблон Visual C++, CLR, «Консольное приложение CLR».

    Контрольные вопросы

    1. Каков алгоритм вычисления суммы элементов одномерного массива?

    2. Каков алгоритм вычисления произведения элементов одномерного массива?

    3. Напишите фрагмент программы для вычисления среднего арифметического элементов числового массива.

    4. Чем одномерный массив отличается от переменной?

    5. Как найти минимальный элемент в одномерном массиве?

    6. Как найти максимальный элемент в одномерном массиве?

    7. Какие методы существуют для сортировки одномерного массива?

    8. Как проверить что элементы массива введены правильно?

    8. Как проверить что элементы массива введены правильно

    10. Как связаны между собой объем памяти отводимый под массив и количество элементов в массиве?

    ЛАБОРАТОРНАЯ РАБОТА № 5.

    ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ ДВУМЕРНЫХ МАССИВОВ

     

    Постановка задачи. Определить, является ли заданная квадратная матрица n-го порядка симметричной относительно побочной диагонали.

    Выполнено в Microsoft Visual Studio 2015 в Windows 8.1.

    При создании проекта был выбран: Шаблон Visual C++, CLR, «Консольное приложение CLR».

    Контрольные вопросы

    1. Каков алгоритм вычисления суммы элементов одномерного массива?

    2. Каков алгоритм вычисления произведения элементов одномерного массива?

    3. Напишите фрагмент программы для вычисления среднего арифметического элементов числового массива.

    4. Чем одномерный массив отличается от переменной?

    5. Как найти минимальный элемент в одномерном массиве?

    6. Как найти максимальный элемент в одномерном массиве?

    7. Какие методы существуют для сортировки одномерного массива?

    8. Как проверить что элементы массива введены правильно?

    9. Какие существуют способы инициализации элементов массива?

    10. Как связаны между собой объем памяти отводимый под массив и количество элементов в массиве?

    ЛАБОРАТОРНАЯ РАБОТА № 6.

    ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ СТРОК

    Постановка задачи. Дана строка символов, состоящая из произвольных десятичных цифр, разделенных пробелами. Вывести четные числа этой строки.

    Выполнено в Microsoft Visual Studio 2015 в Windows 8.1.

    При создании проекта был выбран: Шаблон Visual C++, CLR, «Консольное приложение CLR».

    Контрольные вопросы

    1. Каким символом должна обязательно заканчиваться строка в языке С++?

    2. Чему равна длина строки в языке С++?

    3. Приведите примеры функций для работы со строками в языке С++.

     

     

     

  • Курсовая, Программирование  Реализовать процесс-менеджер

    Через заголовочный файл tlhelp32.h.
    Запуск через командную строку разработчика вижуал студио.
    Перечислить и вывести процессы и возможность убивать процессы.С формочной в листбокс записать все текущие процессы, а при нажатии кнопки убивать-процесс.

  • Должны быть разработаны программы по одной из каждого раздела (варианты задач 1, 2 и 3 приведены ниже). Варианты каждой из задач указываются преподавателем. В отчет должны входить следующие данные для каждой задачи:

    – условие задачи;

    – структуры данных с кратким описанием (если они используются);

    – краткое описание всех объектов программы (имя, имя класса, обрабатываемые события и имена обработчиков в программе, краткое описание словами действий при обработке событий);

    – исходный текст программы;

    – основные экранные формы с описанием и показом на ней имен визуальных компонентов.

    задача №1

    1. Написать программу вывода списка файлов из указанного каталога с выбором расширения из списка bmp, txt, doc и pcx.

    Задача 2

    1. Написать программу вывода из указанного каталога картинки максимального размера. При выводе указать размер картинки и имя файла.

    Задача 3

    Написать программу, выводящую на экран меню вида:

    Показ всех студентов Список именинников О программе Выход из программы

    При этом должна использоваться база данных студентов группы, содержащая следующие данные: фамилию, имя, отчество, дату рождения, место проживания, год поступления, основное увлечение. Программа должна позволять вводить данные, редактировать их и производить поиск по фамилии, дате рождения, году поступления, увлечению. Где возможно, программа должна использовать справочники (например, при поиске по увлечению).

     

     

     

  • 7. Напишите подпрограмму для сортировки части ряда. Подпрограмма должна получать три параметра: ряд, в котором производится сортировка, начальную и конечную позиции, в пределах которых должна осуществляться сортировка, а также направление сортировки ( по возрастанию или по убыванию).

    6. задана некоторая запись и целые числа A и B (A<В). Длина записи равна M(M>B). Составить структурированную программу, подсчитывающую сколько раз в записи встречаются некоторый символ С между символами с номерами А и В.

    5. Составить структурированную программу нахождения нормы квадратной матрицы.

    3.

    4.

     

  • онтрольная, основы программирования, программирование  Решить три задачи.

    Задание

    Все задания выполняются на языки c++ в среде Visual Studio. Результатом выполнения задания является работающая консольная программа, протокол, который включает в себя задание, алгоритм работы основных функций и код программы.

    Задание состоит из основной задачи и дополнительных двух заданий. Без выполнения обоих частей задание не считается выполненным.
    Задания выбираются в соответствии с порядковым номером в списке группы.
    Номер в списке группы делится на 5, находится остаток от деления, к остатку прибавляется 1, полученное значение это номер  задачи.

    1)     Создать базу данных(БД) "Режим дня". БД содержит записи о времени и действии в это время(Пример: 16:40, Уход с работы). БД должна загружаться из файла "base.txt"  и сохранятся в него. Функции, которые можно выполнять с БД: удалить, добавить, изменить запись. Вывести список дел в заданный промежуток(Пример промежутков: "16:00-14:00","00:00 - 12:00", "12:00-00:00", "15:00-14:00")

    2)     Создать базу данных(БД) склада компьютерного магазина . БД содержит наименование запчасти, цена, тип. (Пример: "asus 7670", 4300р, видеокарта). БД должна загружаться из файла "base.txt"  и сохранятся в него. Функции, которые можно выполнять с БД: удалить, добавить, изменить запись. Вывести все запчасти необходимые для сборки Системного блока  компьютера в трех ценовых диапазонах: самый дорогой, средний и самый дешевый. Системный блок должен состоять из видеокарты, процесса, материнской платы, оперативной памяти, корпуса и жесткого диска.

  • Лабораторная тетрис + диаграмма классов UML

    Написать классический простой тетрис на С++ с использованием графической библиотеки(SFML или OpenGL). Тетрис должен быть написан, используя принципы ООП(объектно-ориентированного программирования). Также надо построить диаграмму классов UML.

  • Лабораторная, Программирование 1

    Лабораторная работа 1 разработка методов для проведения вычислений линейных алгоритмов

    Задание 1:

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

    Задание 2:

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

    Лабораторная работа 2 разработка рекурсивного метода

    Задание 1:

    Разработать рекурсивный метод (возвращающий значение):

    для вычисления -го члена следующей последовательности

    Задание 2:

    Разработать рекурсивный метод (не возвращающий значение):

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

    Лабораторная работа 3 разработка приложения для вычисления функции с заданным шагом

    Задание 1:

    Постройте таблицу значений функции для с шагом . Если в некоторой точке функция не определена, то выведите на экран сообщение об этом.

    Замечание. При решении данной задачи использовать вспомогательный метод , реализующий заданную функцию, а также проводить обработку возможных исключений.

    и

    Лабораторная работа 4

    Задание 1:

    Дана последовательность целых чисел.

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

    Заменить все элементы, меньшие заданного числа, этим числом

    Задание 2:

    Дана последовательность из n действительных чисел.

    Вывести на экран номера всех минимальных элементов.

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

    Задание 3:

    Дан массив размером n×n, элементы которого целые числа.  Подсчитать среднее арифметическое четных элементов, расположенных ниже главной диагонали.

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

    Задание 4:

    Дан массив размером n×n, элементы которого целые числа.  Найти минимальный элемент в каждом столбце и записать данные в новый массив.

    Замечание. Для хранения массив n?n использовать ступенчатый массив.

    Лабораторная работа 5 Работа с классами StringBuilder, String

     

    Замечание. При решении задач следует руководствоваться правилом: если в строке должны производится изменения, то лучше пользоваться классом StringBuilder; если необходимо разбивать строки на слова, то классом String. При решении некоторых задач, потребуется использовать оба класса.

     

    Задание 1:

    Разработать программу, которая для заданной строки s меняет местами первую букву со второй, третью с четвертой и т.д.

     

    Задание 2:

    Дана строка, в которой содержится осмысленное текстовое сообщение. Слова сообщения разделяются пробелами и знаками препинания.

    Вывести только те слова сообщения, которые содержат не более чем n букв.

     

     

  • Другое, Программирование и алгоритмизация, программирование

    Задание 1

    Задание 2

    Задание 3

    Задание 4     

    Задание 5

    Определить число, получаемое выписыванием в обратном порядке цифр заданного натурального числа

     

    Задание 6

    В заданной строке подсчитать количество букв ‘а’ , ‘b’.

    Задание 7

    Дана строка, состоящая из слов, разделенных пробелами, в конце строки – точка. Определить, сколько в строку слов, содержащих четное число символов

    Задание 8

    В одномерном массиве вещественных чисел заменить элементы кратные пяти, стоящие на четных позициях, числом -1.

     

  • Контрольная, Основы программирования, программирование

    Домашняя контрольная работа

    по дисциплине «Основы алгоритмизации и программирования»

    Задание 1  Тема: Простые вычисления

    Задача 1. Вычислите значение выражения. Математические функции стандартной библиотеки не использовать. Значения параметров вводятся с клавиатуры. Предусмотреть диалог с пользователем. Предполагается, что данные корректны (проверку выполнять не требуется).

    Задача 2. Вычислите значение выражения, используя математические функции стандартной библиотеки. Значения параметров вводятся с клавиатуры. Предусмотреть диалог с пользователем. Предполагается, что данные корректны (проверку выполнять не требуется).

    Задание 2 Тема: Программирование разветвленных алгоритмов

    Задача 1. Вычислить заданное целочисленное выражение для данных a, b. Результат Х - тоже целочисленный. Исходные данные и результат должны проверяться на область допустимых значений.

    Задача 2. Определить, попадает ли точка с координатами (x, y) в области A, B, C, D.

    Задача 3. Решить задачу с использованием оператора switch

    Единицы массы пронумерованы следующим образом: 1 – килограмм, 2 – миллиграмм, 3 – грамм, 4 – тонна, 5 – центнер. Дан номер единицы массы и масса тела M в этих единицах (вещественное число). Вывести массу данного тела в килограммах.

    Задание 3 Тема: Использование операторов цикла

    Задача 1  Решить задачу с использованием оператора while, do- while.

    Дано натуральное число п . Найти количество четных (не равных нулю) цифр числа.

    Задача 2. Расчет конечных сумм.

    Составить программу расчета конечной суммы. Число членов суммы вводится с клавиатуры. Получить 3 значения при различных N. Результат сравнить с контрольным значением. Вычислить погрешность.

    Задание 4 Тема: Работа с массивами

    Задача 1. В одномерном массиве, состоящем из n вещественных элементов, вычислить: Минимальный по модулю элемент массива

     

    Задача 2    Двумерные массивы

    Задана квадратная матрица A размером NxN (N<=10), состоящая из целых чисел. Найти сумму и произведение всех ее положительных элементов.

    Задание 5 Тема: Работа с функциями

    Решить задачу с использованием функций.

    Написать функцию вычисления объема параллелепипеда

    Задание 6 Тема: Работа со структурами

     

     

    Вариант 10

    Сельскохозяйственные культуры

    Наименование

    Тип

    Посевная площадь (га)

    Урожайность (ц/га)

    Соя

    Б

    13000

    45

    Чумиза

    З

    8000

    17

    Рис

    З

    25650

    24

    Примечание: З - зерновые, Б - бобовые

     

     

     

  • Создать автоматизированную информационную систему расчета оплаты за квартиру

    Вариант №6

    1. Задан массив A из N элементов.  Сформировать массив B,  coдержащий только те элементы массива A, значение которых больше заданного числа X. Значения X, N и элементы массива A ввести с клавиатуры.
    2. В матрице размерами N*M (N и M не больше 10) определить сумму элементов той строки, где расположен максимальный элемент. Размеры матрицы задать при помощи ввода, а саму матрицу сформировать из случайных чисел в диапазоне от 0 до 100.
    3. Вводится строка произвольного текста. Поменять местами ее первое и последнее слово (слова разделены пробелами)
    4. Вводится строка произвольного текста. Подсчитать количество гласных букв в ней.

     

    Вариант №16

    1. Заданы два массива X и Y из N элементов каждый. Сформировать и вывести на печать массив Z из 2*N элементов, в котором элементы массивов X и Y чередуются.
    2. Сформировать и отпечатать "шахматную" матрицу, т.е. матрицу размерами 8*8, состоящую из нулей и единиц, расположенных в шахматном порядке.
    3. Вводится строка произвольного текста. Удалить из нее все пробелы и вывести, сколько пробелов было удалено.
    4. Вводится строка произвольного текста. Удвоить первое слово.

     

    Вариант №26

    1. В отсортированный массив вставить произвольное число, введенное с клавиатуры, в нужное место.
    2. В целочисленной матрице A размерами N*M вычислить количество элементов, имеющих нечетные значения, в каждой строке. Размеры матрицы задать при помощи ввода, а саму матрицу сформировать из случайных чисел в диапазоне от 0 до 50.
    3. В заданной строке текста удалить части текста, заключённые в скобки.
    4. Вводятся две строки произвольного текста. Найти позицию первого несовпадающего символа или вывести сообщение о том, что строки равны.
    5. В текстовый файл записать 20 чисел. Программа должна переставить местами первое число с максимальным из чисел чисел (разрешается использовать для этой цели массив в оперативной памяти).
    6. Разработать библиотечный модуль, содержащий следующие подпрограммы (процедуры или функции) для работы со строками:

    А. Подсчитать количество букв в последнем слове заданной строки

    Б. Заменить в заданной строке все заглавные буквы на строчные.

    В. Удалить все знаки препинания.

    Написать программу, к которой подключается модуль, демонстрирующую работоспособность всех подпрограмм модуля.

     

     

    Задание №1. Программирование линейных алгоритмов.

     

    1. 1.                Найти площадь кольца, внутренний радиус которого равен r, а внешний – заданному числу R (R>r).
    2. 2.                Составьте программу, находящую произведение и результат деления двух обыкновенных дробей.

     

    Задание 2. Программирование ветвящихся алгоритмов.

     

    1. Определить, равен ли квадрат заданного трехзначного числа кубу суммы цифр этого числа.
    2. Дан круг радиуса R. Определить, поместится ли правильный треугольник со стороной а в этом круге.
    3. Дано натуральное число N. Если оно делится на 4, вывести на экран ответ N=4k (где k соответствующее частное); если остаток от деления на 4 равен 1, N=4k+1; если остаток от деления на 4 равен 2, N=4k+2; если остаток от деления на 4 равен 3, N=4k+3.

    Например, 12 - 43, 22 - 45+2.

     

    Задание 3. Программирование циклических алгоритмов.

     

    1. 1.      Дано натуральное число N. Вычислить:

     

     

    1. 2.      Вычислить: y=cosx+cosx2+cosx3+…+cosxn.

     

    Задание 4. Линейные массивы. Сортировка массивов.

     

    1. 1.      Найти произведение всех элементов массива вещественных чисел, меньших заданного числа. Размерность массива –10. Заполнение массива осуществить случайными числами от 50 до 100.
    2. 2.      Вычислить среднее арифметическое значение тех элементов одномерного массива, которые попадают в интервал от –2 до 10.
    3. 3.      Даны два линейных массива одинаковой размерности. Составить третий массив из произведений элементов первых двух массивов, стоящих на местах с одинаковым индексом.
      1. Задание 1.1.

    Составить программу для вычисления по формулам. Предусмотреть задание исходных данных при помощи оператора ввода.

             

    В треугольнике заданы сторона a и углы В и С. Найти площадь S и стороны b и c:

    ;;;

     

    1. Задание 1.2.

    Составить блок-схему алгоритма и программу с использованием условного оператора. Предусмотреть задание исходных данных при помощи оператора ввода.

     

    Дано действительное число А. Вычислить F(А),если

             

    1. Задание 1.3.

    Составить блок-схему алгоритма и программу для вычисления суммы бесконечного сходящегося ряда. Суммирование прекратить при появлении в сумме слагаемых, имеющих абсолютную величину, меньшую заданной погрешности d. Значение d задается при помощи оператора ввода.

     

    (суммировать отдельно слагаемые со знаком + и слагаемые со знаком -.Затем второе значение вычитается из первого)

     

    1. Задание 1.4

    Составить программу для выполнения заданных действий над массивом чисел. В программе предусмотреть ввод значений его элементов.

     

    В заданном массиве К из N элементов найти сумму элементов, имеющих четные номера, и произведение элементов ,имеющих нечетные номера.

     

     

     

     

     

     

  • Однонаправленные+, двунаправленные, циклические списки ("Закон Джозафа - Иосифа Флавия"))
    Стек, очередь, Бинарное дерево *Двунаправленное, вместо Next - Массив.*.

    ______________________________

    || задание
    Поиск подстроки в строке ("Алгоритм Кнута Моррис Пратт") , "Алгоритм Бойера- Мура", "Алгоритм Рабина-Карпа"
    3 метода
    ___________________________________
    ||| задание
    Сортировка 5 методов (3 набора)

  • Выполнить задание на C++

    Практическая работа № 5

    Алгоритм поиска в отсортированных массивах

     

    Постановка задачи

    Составить программу поиска заданного элемента по ключу в одномерном целочисленном массиве A[n], используя алгоритм согласно варианту индивидуального задания. Провести тестирование программы на исходном массиве, сформированном вводом с клавиатуры. Рабочий массив A сформировать с использованием генератора псевдослучайных чисел. Провести контрольные прогоны программы для размеров массива n = 100, 1000, 10000, 100000 и 1000000 элементов в трех режимах: на массивах, строго убывающих, строго возрастающих и случайных чисел и сделать вывод о зависимости (устойчивости) алгоритма от исходной упорядоченности массива.

    Провести эмпирическую (практическую) оценку вычислительной сложности алгоритма, для чего предусмотреть в программе подсчет фактического количества операций сравнения Сф.

    Полученные результаты свести в сводную таблицу. Построить в одной координатной плоскости графики зависимости теоретической О(n)=f(С(n)) и эмпирической (Сф(n)) вычислительной сложности алгоритма от количества элементов в массиве n.

    Сравнить вычислительную сложность алгоритма с вычислительной сложностью алгоритма последовательного поиска. Экспериментально оценить долю случаев, когда последовательный поиск выполняется быстрее, чем быстрый поиск.

    Провести анализ полученных результатов. Сделать выводы о проделанной работе, основанные на полученных результатах.

     

    Сводная таблица результатов

    n

    f(C)

    100

     

     

    1000

     

     

    10000

     

     

    100000

     

     

    1000000

     

     

     

    Варианты индивидуальных заданий

    Алгоритм

    5.1

    Двоичного поиска

    5.2

    С использованием бинарного дерева поиска

    5.3

    Фибоначчиего поиска 

    5.4

    Поиска хэшированием

    5.5

    Поиска по бору

    5.6

    Поиска Рабина-Карпа

     

    Практическая работа № 6

    Алгоритмы поиска строк в тексте

     

    Постановка задачи

    Составить программу поиска первого вхождения заданной строки P длиной m символов в тексте S, размером n символов, используя алгоритм согласно варианту индивидуального задания. Уточнение: настоящая задача поиска сводится к нахождению в тексте (массиве) S индекса, начиная с которого строка P полностью совпадает с фрагментом текста S. В частном случае заданная строка может отсутствовать в тексте.

    Провести тестирование программы на исходном массиве, сформированном вводом с клавиатуры.

    Рабочий текст (массив) сформировать из произвольного текстового файла, например, романа Л.Н. Толстого «Война и мир». Провести контрольные прогоны программы как минимум на трех текстовых файлах различной длины.

    Провести эмпирическую (практическую) оценку вычислительной сложности алгоритма, для чего предусмотреть в программе подсчет фактического количества операций посимвольного сравнения Сф и сдвигов подстроки Мф относительно текста.

    Полученные результаты свести в сводную таблицу. Построить в одной координатной плоскости графики зависимости теоретической О(n)=f(С+М) и эмпирической (Сф+Мф) вычислительной сложности алгоритма от размера текста (количества элементов в массиве) n.

    Сравнить вычислительную сложность алгоритма с вычислительной сложностью алгоритма прямого поиска строки.

    Провести анализ полученных результатов. Сделать выводы о проделанной работе, основанные на полученных результатах.

     

    Сводная таблица результатов

    n

    f(C+М)

    Cф+Мф

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    Варианты индивидуальных заданий

    Алгоритм

    6.1

    Прямого поиска строки

    6.2

    Кнута-Морриса-Пратта

    6.3

    Бойера-Мура 

    6.4

    Поиска хэшированием

     

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

    Линейные динамические списки

    1. 1.              Однонаправленные списки

    Постановка задачи

    Определите список операции над списками варианта, включая операцию добавления узла в начало списка, вывода списка. Разработайте для каждой операции функцию с параметрами. Информационная часть узла имеет тип int.

    Реализуйте программу решения задачи варианта.

    Вариант 1

    Даны два линейных однонаправленных списка L1 и L2. Разработать процедуру, которая формирует список L, включив в него по одному разу элементы, значения которых входят хотя бы  в один из списков L1 и L2.

    Вариант 2

    Даны два линейных однонаправленных списка L1 и L2. Разработать процедуру, которая формирует список L, включив в него по одному разу элементы, значения которых входят одновременно в оба  списка L1 и L2.

    Вариант 3

    Даны два линейных однонаправленных списка L1 и L2. Разработать процедуру, которая формирует список L, включив в него по одному разу элементы, значения которых входят в список L1 и не входят в список L2.

    Вариант 4

    Даны два линейных однонаправленных списка L1 и L2. Разработать процедуру, которая формирует список L, включив в него по одному разу элементы, значения которых входят  в один из списков L1 и L2 и в не входят в другой.

     

    1. 2.    Двунаправленные списки

    Постановка задачи

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

    Требования к разработке.

    1. Разработать структуру узла списка, структура информационной части узла определена вариантом. Для определения структуры узла списка, используйте тип struct. Сохраните определение структуры узла в заголовочном файле.
    2. Разработайте функции для выполнения операции над линейным динамическим списком:
    • вывод списка в двух направлениях
    • поиск узла с заданным значением (операция должна возвращать указатель на узел с заданным значением).
    1. Дополнительные операции над списком, указанные вариантом оформите в виде функций и включите в отдельный файл с расширением cpp. Подключите к этому файлу заголовочный файл с определением структуры узла.
    2. Разработайте программу, управляемую текстовым меню, и включите в меню  демонстрацию выполнения всех операций задания и варианта.
    3. Проведите тестирование операций.
    4. Оцените сложность алгоритма первой дополнительной операции для реализации линейного списка:
    • на линейном динамическом списке
    • на одномерном массиве.

     

    Примечание. В определении информационной части узла варианта, подчеркнутое поле считать полем ключа.

    Варианты

    Вариант

    Тип информационной части узла списка

    Дополнительные Операции

    1

    Номер зач. книжки, Номер группы, Оценка.

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

    Удалить узлы с указанным номером группы.

    Сформировать новый список из исходного,  включив в него узлы с оценкой неуд, исключив их при этом из исходного списка.

    2

     

     

    Номер телефона (из 7 цифр), время разговора (целое число), номер телефона вызываемого абонента.

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

    Удалить последний узел  с заданным значением телефона.

    Подсчитать суммарное время разговора с заданного телефона.

    3

    Номер абонемента, Название книги, дата выдачи, дата возврата, дата фактического возврата.

    Вставить новый узел  в список после последнего узла с таким же номером абонента(дата фактического возврата еще не заполнена).

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

    Удалить узлы, в которых дата возврата и дата фактического возврата совпадают.

    Определить количество книг, заданного абонемента.

    4

    Номер мед. полиса, Дата обращения, Код диагноза (число).

    Вставка нового узла перед первым узлом с заданным значением Мед. полиса, если такого нет, то узел вставить в конец списка.

    Удаление из списка всех узлов с заданным значением Кода диагноза.

    Переместить все узлы с одинаковым  мед. полисом в новый список.

    Определить количество обращений в одну и туже дату с одним и тем же диагнозом.

    5

    Номер счета в банке, дата, вид операции (приход или расход), сумма вклада.

    Вставка нового узла перед первым узлом.

    Удаление сведений по счету (всех узлов), у которого общая сумма вклада равна нулю ( сумма по приходу, минус сумма по расходу).

    Создать новый список из исходного, которого будет содержать остаток по всем видам операций одного счета, указав вид операции – приход, и текущую дату. 

    6

    Номер автобусного маршрута, время отправления (целое число), номер автобуса, стоимость одной поездки, дата отправления.

    Вставить новый узел после последнего узла с заданным номером автобуса.

    Удалить все узлы заданного автобуса.

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

     

     

  • Лабораторная по предмету «программирование на СИ++»

    Задание 1

    Реализовать свой класс точки на плоскости. Выполнить перегрузку операторов ">" и "<". Создать массив объектов класса. Значения координат заполнить случайными числами.  Класс должен быть реализован так, чтобы функции из предыдущих заданий работали без какой-либо модификации. 

    Задание 2

    Реализовать рекурсивный вариант функции "быстрой" сортировки в виде шаблонной функции. Проверить работу. 

    Задание 3

    Рассмотреть упаковку бинарного дерева в массив. Реализовать функцию сортировки с использованием бинарного дерева ("пирамидальная").

    Задание 4

    Сравнить среднее время выполнения различных функций сортировки на больших массивах (не менее 5000 элементов) различных типов. Указание: Для оценки времени использовать функции Win32 API QueryPerformanceCounter и QueryPerformanceFrequency.

    Задание 5

    Реализовать функцию бинарного поиска для ключей-строк. 

     

  • Наследование классов на с++

    Задание

    А. Реализовать классы «стек», «очередь», «дек» наследованием от базового класса «двусвязный список» согласно варианту, см. Таблицу 2. Базовый класс «двусвязный список» был реализован в одной из предыдущих работ.

    Таблица 2

    Спецификация вариантов

    Вид наследования

    public

    protected

    private

    стек

     

    дек

     

     

    Программы - клиенты должны демонстрировать работу всех классов. Иерархию классов реализовать в отдельном модуле.

    В. Решение задания А реализуйте шаблонами классов. Проверьте его на разных типах.

    С. Решить задачи на применение шаблона стека и очереди(дека).

    1. Разработайте и реализуйте класс постфиксных калькуляторов. Используйте алгоритм вычисления постфиксных выражений, описанный ниже. Допускаются лишь операторы +, -, * и /. Предполагается, что постфиксные выражения являются корректными.
    2. Разработайте и реализуйте класс инфиксных калькуляторов. Используйте алгоритм вычисления постфиксных выражений, описанный ниже. Перед вычислением инфиксное выражение следует преобразовать в постфиксную форму, а затем вычислить полученное постфиксное выражение по алгоритму.