Программирование
Тип работы: | Все Задача Курсовая работа Лабораторная работа Ответы на вопросы |
Язык программирования: | Все Basic C C# C++ Delphi Fortran Free Basic HTML Java Pascal Pascal ABC Turbo Pascal VBA Ассемблер |
Блок-схема: | Все Есть Нет |
-
Практическая работа № 8 Программирование вычислитель-
ного процесса обработки одномерных массивовЗадание
Составить программу вычислительного процесса согласно варианту из табл. 1. Заданные в условии векторы программировать с использованием указателя. Ввод/вывод векторов осуществлять с помощью файловых потоков C++.
-
200 руб.
Дан список списков целочисленных элементов:
• Необходимо его обратить, т.е. список {6,3,10,2} надо преобразовать в {2, 10, 3, 6};
• При этом, обратить и каждый из подсписков;
• Не использовать конвертацию в массивы
НЕЛЬЗЯ использовать контейнерные классы. И стандартные функции там, где без них можно обойтись. -
Написать программу соответствия между числом и цветом фона (0-черный, 1-голубой,2-зеленый, 3-васильковый, 4-красный, 5-фиолетовый, 6-коричневый, 7-светло-серый).
-
250 руб.
Написать программу «Моя записная книжка». Одна запись содержит фамилию и имя, дату рождения и номер телефона. База хранится в текстовом файле.
Предусмотреть возможность работы с произвольным числом записей, поиска записи по дате рождения, добавления и удаления записей.
Хранение данных организовать с применением класса tree.
-
500 руб.
- Построить график функции
- Изобразить на экране полет самолета на заданной высоте и посадку его со снижением до касания земли и замедлением до полной остановки.
- Перестановка элементов в массиве следующим образом: сначала записать неотрицательные элементы в том же порядке следования, затем отрицательные в том же порядке. Типы элементов массивов float, char и rational (структура, описывающая обыкновенную дробь, с двумя целочисленными полями: первое – числитель, второе – знаменатель).
- Класс «Треугольник». Поля: длины сторон. Методы: вычисление площади, радиусов вписанной и описанной окружностей, определение типа (остроугольный, прямоугольный, тупоугольный), перегрузка операции сравнения на равенство «==».
-
200 руб.
Задача 1 и 2 посвящена созданию программ с использованием массивов (одномерных и матриц) и множеств. В этих программах полезно использовать подпрограммы.
Задание состоит из двух задач, требующих написания программ на языке Паскаль. Программы должны быть написаны в рамках структурного программирования. В частности, запрещается использовать операторы перехода и метки.
Задача 1
var k : integer; c : array[1..n, 1..m] of integer; Определить k — количество «особых» элементов массива c, считая элемент «особым», если в его строке слева от него находятся элементы, меньшие его, а справа — большие. Указание: определите булевскую функцию f(x), которая проверяет, является ли элемент x «особым».
Задача 2
Дана строка. В алфавитном порядке напечатайте (по разу) все малые латинские буквы, входящие в эту строку ровно один раз. Указание: решение задачи простое, если вы будете использовать множества.
Задача 3 и 4 посвящена созданию программ, отражающих приемы работы с файлами. Необходимо в начале программы создать файл (элементы файла вводятся с клавиатуры или генерируются случайным образом), а в конце программы сначала вывести на экран содержимое созданного файла, а затем отразить полученные результаты. Во второй задаче необходимо составить программу, реализующую рекурсивный алгоритм.
Задача 3
type fr = file of real; Описать процедуру predlast(f), значением которой является предпоследний элемент файла f, имеющего тип fr и содержащего не менее двух элементов. Указание: введите файл f (последний элемент = 0) и вычислите функцию predlast(f).
Задача 4
type reals = file of real; var f : reals; Опишите рекурсивную функцию sum без параметров для нахождения суммы элементов файла f.
-
800 руб.
Лабораторная работа 1. Массивы, указатели и строки. Методы организации и работы
Вариант задания реализовать в виде функции, использующей для работы со строкой только указатели и операции вида *p++, p++ и т.д. Если функция возвращает строку или ее фрагмент, то это также необходимо сделать через указатель.
Вариант: «Быстрая» сортировка (разделением) с использованием указателей на правую и левую границы массива, текущих указателей на правый и левый элемент и операции сравнения указателей.
Лабораторная работа 2. Структуры, объединения и списки. Файловый ввод-вывод
Определить структурированный тип, определить набор функций для работы с массивом структур. В структурированной переменной предусмотреть способ отметки ее как не содержащей данных (т.е. "пустой"). Функции должны работать с массивом структур или с отдельной структурой через указатели, а также при необходимости возвращать указатель на структуру. В перечень функций входят:
- «очистка» структурированных переменных;
- поиск свободной структурированной переменной;
- ввод элементов (полей) структуры с клавиатуры;
- вывод элементов (полей) структуры с клавиатуры;
- поиск в массиве структуры и минимальным значением заданного поля;
- сортировка массива структур в порядке возрастания заданного поля (при сортировке можно использовать тот факт, что в Си++ разрешается присваивание структурированных переменных);
- поиск в массиве структур элемента с заданным значением поля или с наиболее близким к нему по значению.
- удаление заданного элемента;
- изменение (редактирование) заданного элемента.
- вычисление с проверкой и использованием всех элементов массива по заданному условию и формуле (например, общая сумма на всех счетах) - дается индивидуально.
Вариант: Фамилия И.О., количество переговоров (для каждого - дата и продолжительность).
Лабораторная работа 3. Разнотипные переменные. Динамический и статический способы создания переменных
Разработать две функции, одна из которых вводит с клавиатуры набор данных в произвольной последовательности и размещает в памяти в переменном формате. Другая функция читает эти данные и выводит на экран. Программа запрашивает и размещает в памяти несколько наборов данных при помощи первой функции, а затем читает их и выводит на экран при помощи второй. Размещение данных производить в статическом массиве байтов фиксированной размерности с контролем его переполнения.
Вариант: В начале области памяти размещается форматная строка. Выражение "%nnnd", где nnn - целое - определяет массив из nnn целых чисел, "%d" - одно целое число, "%nnnf" - массив из nnn вещественных чисел, "%f" - одно вещественное число. Сразу же вслед за строкой размещается последовательность целых, вещественных и их массивов в соответствии с заданным форматом.
Лабораторная работа 4. Функции с переменным количеством параметров. Функция, как тип данных
Разработать функцию с переменным количеством параметров. Для извлечения параметров из списка использовать технологию программирования областей памяти переменного формата, описанную в 4.4.
Вариант: Первый параметр - строка, в которой каждый символ «*n», где n-цифра - обозначает место включения строки, являющейся n+1 параметром. Функция выводит на экран полученный текст.
-
150 руб.
Задача 1
Дано натуральное число N. Составить программу для сравнения цифр старшего и младшего разрядов этого числа.
Задача 2
Дана последовательность целых чисел {Aj}. Hайти произведение неположительных чисел, наименьшее из неположительных чисел и номеp этого числа в последовательности.
Задача 3
Дана целочисленная матрица {Aij}i=1,...,n;j=1,...,m (n,m<=20). Найти минимум из наибольших элементов строк.
Задача 4
Ввести последовательность натуральных чисел {Aj}j=1...n (n<=1000). Упорядочить последовательность по невозрастанию первой цифры числа, числа с одинаковыми первыми цифрами дополнительно упорядочить по невозрастанию суммы цифр числа, числа с одинаковыми первыми цифрами и одинаковыми суммами цифр дополнительно упорядочить по невозрастанию самого числа.
-
300 руб.
Задание 1
Инициализируйте переменные a, b, с, d присвойте им целочисленные значения (типа int) и выполните вычисление выражений, используя арифметические операторы, тернарный оператор (проверяя делитель):
(a+b)/(2*a-c)
(a%b)/(d-1)
Задание 2
Общий заработок бригады рабочих составил n руб (значение n вводится с клавиатуры). Его нужно разделить между 5 рабочими. При этом учитывая, что процент выполненных работ каждого рабочего от общего объема работ (100%) разный (например, 1 рабочий выполнил 18% работ, второй – 17% и т.д.). Процент выполненных работ для каждого рабочего водится с клавиатуры. Найдите заработок каждого рабочего.
Задание 3
Создайте массив arr1, состоящий из n целых чисел. Размерность массива n и значения элементов массива должны вводиться с клавиатуры. При вводе должна выполняться проверка возможности считать с потока ввода int. Получите массив arr2, значения элементов которого равны квадратам соответствующих значений массив arr1. Выведете элементы массивов на консоль в одну строку.
Задание 4
Необходимо оклеить обоями стены в комнате. Длина стен равна a м, а высота b м. Рулон обоев имеет длину c м и ширину d м. Сколько будут стоить обои для всей стены, если цена одного рулона k руб. Создать программу, выполняющую расчет стоимости. Значения a, b, c, d, k должны вводиться с клавиатуры.
Задание 5
Создайте абстрактный класс MathAbstract. В нем создайте два метода:
- operMath() без реализации с параметрами int a, int b;
- show() без параметров, реализующий вывод строки на экран «Иллюстрация работы с абстрактным классом: арифметические операции».
Создайте неабстрактные класс MathReal01 – MathReal05 – производные от MathAbstract. В них выполните реализации метода operMath(). Реализации соответствуют выполнению основных арифметических операций (сложение, вычитание, умножение, деление, возведение в степень).
В основной программе выполните реализацию: вызов всех методов класса MathAbstract и выполнение соответствующих операций. Значения a, b вводятся с клавиатуры.
Задание 6
Структура данных. Создать класс, спецификация которого приведена ниже. Определить конструктор и методы setТип(), getТип(), printInfo().
Реализация. Реализовать класс в основной программе. В основной программе создать списочный массив объектов. Задать критерий (критерии) выбора данных и вывести эти данные на консоль.
Спецификация. Car: id, Марка, Модель, Год выпуска, Цвет, Цена, Регистрационный номер.
Создать массив объектов. Вывести:
1) список автомобилей заданной марки;
2) список автомобилей заданной модели, которые эксплуатируются больше n лет;
3) список автомобилей заданного года выпуска, цена которых больше указанной.
Продемонстрировать подход, в котором реализуется инкапсуляция и обеспечивается модульность.
-
200 руб.
Элементы массива задать по следующему правилу: введенный параметр является первым элементом массива, последние три элемента в пять раза больше своих индексов, остальные элементы задаются с помощью счетчика случайных чисел.
Если максимальный элемент вектора из 18 элементов расположен до минимального отсортировать по возрастанию элементы, расположенные после него, иначе до него. Минимальный элемент увеличить в десять раз.
-
200 руб.
Создать Windows-приложение, которое по запрашиваемому количеству строк и столбцов формирует случайным образом двумерный массив А, подсчитывает сумму элементов не кратных 3 по строкам (для нечетных вариантов) или по столбцам (для четных вариантов) получившейся матрицы, полученные результаты заносит в одномерный массив В и сортирует массив В методом пузырька.
-
300 руб.
1. Написать программу поиска перебором элемента массива равного заданному значению.
2. Написать программу поиска с барьером элемента массива равного заданному значению.
3. Написать программу бинарного поиска элемента массива равного заданному значению.
4. Написать программу бинарного поиска элемента массива равного заданному значению, в которой новое значение индекса m определялось бы не как среднее значение между L и R, а согласно правилу золотого сечения.
-
300 руб.
Сравнить количество операций алгоритма быстрой сортировки и сортировки вставками на массивах с [2-9] элементами. Передавать в сортировки нужно все возможные перестановки массива, то есть, при массиве из 2 эл-тов, перестановок будет 2!, а при 9 элементах 9!. И сравнить среднее кол-во операций алгоритмов для каждого из массивов.
-
400 руб.
Описать класс, реализующий бинарное дерево, обладающее возможностью добавления новых элементов, удаления существующих, поиска элемента по ключу, а также последовательного доступа ко всем элементам. Написать программу, использующую этот класс для представления англо - русского словаря. Программа должна содержать меню, позволяющее выполнить проверку всех методов класса. Предусмотреть возможность создания словаря из файла и с клавиатуры.
Требования для класса: наличие конструктора, деструктора и перегруженного оператора присвоения (=). В коде должны присутствовать комментарии.
-
Создание англо-русского словаря с использованием динамической памяти на языке С++. В программе предусмотреть:
- хранение словаря в файле;
- поиск английского слова и его значений;
- вставку нового английского слова и его значений;
удаление английского слова и его значений;
графический пользовательский интерфейс интерфейс.
Структура данных: линейный двунаправленный список (ЛДС)
-
Работу можно выполнять на встроенном ассемблере системы программирования Turbo Pascal, однако, рекомендуется на автономном (отдельном или внешнем) ассемблере.
Выбрать простую математическую задачу, легко разрешимую на Паскале, например Y = A * X2. Задачу согласовать с преподавателем.
Написать программу на ассемблере, например, для указанной выше задачи:
Вариант 2 - (A * X^4 + B * X^3 + C * X^2 + D * X) div E
Вариант 2 - 9*A + 7*B + 2*C -
200 руб.
Разработать программу для управления базой данных «Фонотека». Реализовать функции создания в ней записи, ее редактирования, удаления и поиска записи по значению поля. Запись в базе данных содержит следующие поля: исполнитель, название альбома, жанр, год выпуска.
-
500 руб.
Построение и обработка двоичных деревьев поиска. Реализовать программу, выполняющую следующий набор операций с деревьями поиска:
поиск вершины с заданным значением ключа с выводом счетчика числа появлений данного ключа добавление новой вершины в соответствии со значением ее ключа или увеличение счетчика числа появлений построчный вывод дерева в наглядном виде на основе процедур обхода:- в прямом порядке.
- в симметричном порядке.
-
400 руб.
Практическая работа № 5
Алгоритм поиска в отсортированных массивах
Постановка задачи
Составить программу поиска заданного элемента по ключу в одномерном целочисленном массиве A[n], используя алгоритм согласно варианту индивидуального задания. Провести тестирование программы на исходном массиве, сформированном вводом с клавиатуры. Рабочий массив A сформировать с использованием генератора псевдослучайных чисел. Провести контрольные прогоны программы для размеров массива n = 100, 1000, 10000, 100000 и 1000000 элементов в трех режимах: на массивах, строго убывающих, строго возрастающих и случайных чисел и сделать вывод о зависимости (устойчивости) алгоритма от исходной упорядоченности массива.
Провести эмпирическую (практическую) оценку вычислительной сложности алгоритма, для чего предусмотреть в программе подсчет фактического количества операций сравнения Сф.
Полученные результаты свести в сводную таблицу. Построить в одной координатной плоскости графики зависимости теоретической О(n)=f(С(n)) и эмпирической (Сф(n)) вычислительной сложности алгоритма от количества элементов в массиве n.
Сравнить вычислительную сложность алгоритма с вычислительной сложностью алгоритма последовательного поиска. Экспериментально оценить долю случаев, когда последовательный поиск выполняется быстрее, чем быстрый поиск.
Провести анализ полученных результатов. Сделать выводы о проделанной работе, основанные на полученных результатах.
Сводная таблица результатов
n
f(C)
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. Однонаправленные списки
Постановка задачи
Определите список операции над списками варианта, включая операцию добавления узла в начало списка, вывода списка. Разработайте для каждой операции функцию с параметрами. Информационная часть узла имеет тип 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 и в не входят в другой.
- 2. Двунаправленные списки
Постановка задачи
Разработать многомодульную программу, которая демонстрирует выполнение всех операций, определенных вариантом, над линейным двунаправленным динамическим списком.
Требования к разработке.
- Разработать структуру узла списка, структура информационной части узла определена вариантом. Для определения структуры узла списка, используйте тип struct. Сохраните определение структуры узла в заголовочном файле.
- Разработайте функции для выполнения операции над линейным динамическим списком:
- вывод списка в двух направлениях
- поиск узла с заданным значением (операция должна возвращать указатель на узел с заданным значением).
- Дополнительные операции над списком, указанные вариантом оформите в виде функций и включите в отдельный файл с расширением cpp. Подключите к этому файлу заголовочный файл с определением структуры узла.
- Разработайте программу, управляемую текстовым меню, и включите в меню демонстрацию выполнения всех операций задания и варианта.
- Проведите тестирование операций.
- Оцените сложность алгоритма первой дополнительной операции для реализации линейного списка:
- на линейном динамическом списке
- на одномерном массиве.
Примечание. В определении информационной части узла варианта, подчеркнутое поле считать полем ключа.
Варианты
Вариант
Тип информационной части узла списка
Дополнительные Операции
1
Номер зач. книжки, Номер группы, Оценка.
Вставить новый узел перед первым узлом с таким же ключом, если такого узла еще нет, то вставить перед первым узлом, у которого ключ больше.
Удалить узлы с указанным номером группы.
Сформировать новый список из исходного, включив в него узлы с оценкой неуд, исключив их при этом из исходного списка.
2
Номер телефона (из 7 цифр), время разговора (целое число), номер телефона вызываемого абонента.
Добавить новый узел в список, упорядочивая узлы по первым четырем цифрам телефона в порядке возрастания.
Удалить последний узел с заданным значением телефона.
Подсчитать суммарное время разговора с заданного телефона.
3
Номер абонемента, Название книги, дата выдачи, дата возврата, дата фактического возврата.
Вставить новый узел в список после последнего узла с таким же номером абонента(дата фактического возврата еще не заполнена).
Изменить значение поля фактической даты возврата по указанной книге, указанного абонемента.
Удалить узлы, в которых дата возврата и дата фактического возврата совпадают.
Определить количество книг, заданного абонемента.
4
Номер мед. полиса, Дата обращения, Код диагноза (число).
Вставка нового узла перед первым узлом с заданным значением Мед. полиса, если такого нет, то узел вставить в конец списка.
Удаление из списка всех узлов с заданным значением Кода диагноза.
Переместить все узлы с одинаковым мед. полисом в новый список.
Определить количество обращений в одну и туже дату с одним и тем же диагнозом.
5
Номер счета в банке, дата, вид операции (приход или расход), сумма вклада.
Вставка нового узла перед первым узлом.
Удаление сведений по счету (всех узлов), у которого общая сумма вклада равна нулю ( сумма по приходу, минус сумма по расходу).
Создать новый список из исходного, которого будет содержать остаток по всем видам операций одного счета, указав вид операции – приход, и текущую дату.
6
Номер автобусного маршрута, время отправления (целое число), номер автобуса, стоимость одной поездки, дата отправления.
Вставить новый узел после последнего узла с заданным номером автобуса.
Удалить все узлы заданного автобуса.
Подсчитать, сколько раз автобус выходил на маршрут в течении заданного дня.
-
Составить программу для вычисления определенного интеграла методом Симпсона с визуализацией решения. Вид подынтегральной функции F(x) задать в отдельной функции, остальная часть программы не должна зависеть от конкретной функциональной зависимости. Исходными данными служат начальное и конечное значения переменной x и число интервалов разбиения либо погрешность вычисления интеграла.
В программе предусмотреть выполнение следующих действий:
1. Вывод результата.
2. Вывод графика функции F(x) на заданном интервале.
3. Графическую иллюстрацию процесса интегрирования.