-
Задачи второго, среднего уровня
-
Из нерассортированного списка целых чисел удалить все наибольшие элементы, оставив первый из них.
-
Из рассортированного списка целых чисел удалить все наибольшие элементы, кроме одного.
-
Из рассортированного списка целых чисел удалить повторяющиеся числа, оставив их по одному разу.
-
В нерассортированный список целых чисел после каждого положительного числа вставить его номер в исходном списке.
-
В нерассортированный список вещественных чисел после каждого максимального числа вставить номер в списке и номер среди максимальных элементов этого же списка.
-
В нерассортированный список вещественных чисел после каждой тройки чисел вставить их среднеарифметическое значение. Если в конце списка осталось меньше трёх чисел, вставить среднеарифметическое значение из двух чисел или вставить последнее число.
-
Создать список, информационная часть каждого элемента которого содержит фамилию и массив из 10 оценок. Из списка удалить двоечников, то есть те элементы, в которых есть хотя бы одна единица, двойка или тройка.
-
Создать список, элементом которого является прямая плоскости y=k*x +b, т. е. два числа k и b. Удалить все прямые, перпендикулярные оси OX.
-
Создать список, элементом которого является прямая плоскости y=k*x +b, т. е. два числа k и b. Удалить все прямые, параллельные первой прямой этого же списка.
-
Создать список, элементом которого являются координаты вершин треугольников на плоскости. Удалить все треугольники с одинаковым наименьшим периметром.
-
Создать список, элементом которого являются координаты вершин треугольников на плоскости. После каждого треугольника, вершины которых находятся в разных четвертях, вставить треугольник, симметричный относительно оси OY.
-
Создать список, элементом которого являются координаты центра и радиус окружности на плоскости. После каждой окружности первой четверти вставить окружность, центр которой сдвинут на r (радиус) величин вправо.
-
Создать список, элементом которого являются координаты вершин четырёхугольников на плоскости. После каждого квадрата со сторонами, параллельными осям координат, вставить квадрат с тем же центром, стороны которого параллельны осям координат и в два раза меньше.
-
Создать список, в информационной части элемента которого одномерный массив фиксированной размерности, т. е. в виде списка представить матрицу, количество строк (элементов списка) которой произвольное, а количество чисел в каждой строке одинаковое и задано в виде константы. Из матрицы удалить все строки, в которых одни нули.
-
Пусть матрица записана в оперативной памяти в виде списка (см. прим. 14). Из матрицы удалить строки, у которых первый ненулевой элемент положительный, а последний ненулевой элемент – отрицательный.
-
Пусть матрица записана в оперативной памяти в виде списка (см. прим. 14). После каждой строки, содержащей только отрицательные числа, вставить новую строку, которая получается умножением каждого элемента этой строки на -1.
-
Пусть матрица записана в оперативной памяти в виде списка (см. прим. 14). Поменять местами первую строку с той, в которой находится наибольший элемент всей матрицы.
-
Пусть матрица записана в оперативной памяти в виде списка (см. прим. 14). Поменять местами строку с наибольшим элементом со строкой с наименьшим элементом матрицы. Если таких строк несколько, т. е. наибольших (наименьших) элементов матрицы несколько и они находятся в разных строках, то переставить любые такие строки.
-
Создать список слов. Из списка удалить слова наименьшей длины, кроме первого.
-
Создать список слов. Из списка удалить слова, у которых гласных больше половины и которые начинаются с гласной буквы.
-
Из введённого текста создать список слов. Из списка удалить те слова, которые начинаются на заданную букву.
-
Создать стек слов. Удалить все слова, пока не встретится слово заданной длины.
С. Задачи повышенной сложности
-
Из нерассортированного списка целых чисел удалить повторяющиеся числа, оставив их по одному разу.
-
Создать список вещественных чисел. После серии подряд идущих повторяющихся чисел вставить количество их повторений.
-
Создать два списка целых чисел. Рассортировать каждый из них, используя алгоритм обмена. Из двух рассортированных списков путём их слияния получить новый рассортированный список, не используя третий раз алгоритм сортировки.
-
Создать список, информационная часть каждого элемента которого содержит фамилию и инициалы студента и массив из пяти оценок. Рассортировать список по категориям (отличники, хорошисты, троечники, двоечники). Внутри каждой категории часть списка должна быть рассортирована в алфавитном порядке фамилий.
-
Создать список, информационная часть каждого элемента которого содержит фамилию и имя студента и массив из пяти оценок. Рассортировать список по среднему баллу. Вставить новые введённые фамилии и их оценки в нужное место списка так, чтобы изменённый список оставался рассортированным.
-
Создать список, в информационной части элемента которого одномерный массив фиксированной размерности, т. е. в виде списка представить матрицу, количество строк (элементов списка) которой произвольное, а количество чисел в каждой строке одинаковое и задано в виде константы. Рассортировать строки матрицы по возрастанию их первых элементов. Для сортировки использовать алгоритм выбора.
-
Создать список слов. Рассортировать список (слова) по их длине. Слова с одинаковой длиной сортировать по двум первым буквам.
-
Построить два списка слов и рассортировать каждый из них. На основе полученных двух рассортированных списков построить третий рассортированный в том же порядке список, содержащий неповторяющиеся элементы.
Лабораторная работа 9
Тема. Работа с текстовым файлом.
Требования и общие указания к заданиям:
Необходимо разработать и проверить функции для реализации следующих действий с текстовым файлом:
-
создание файла;
-
просмотр файла, т. е. вывод его содержимого на экран;
-
добавление текста в файл;
-
реализация функциональной части, указанной в варианте, и запись полученного результата во второй текстовый файл.
При этом можно работать с текстовым файлом как посимвольно, так и построчно на усмотрение преподавателя или студента. В качестве дополнительного задания (например, если кроме лабораторных работ есть вычислительная практика) можно запрограммировать и второй вариант.
Варианты заданий
B. Задачи второго среднего уровня
-
Каждую букву заменить её номером в алфавите. В одной строке экрана одним цветом вывести символы строки с двумя пробелами между ними, а ниже другим цветом — номера символов.
-
В тексте одну введённую подстроку, не обязательно являющуюся словом, заменить другой введённой подстрокой. При выводе исходной и изменённой строки старую и новую подстроку выделить другим цветом.
-
В каждом слове текста k-ю букву заменить заданным символом. Если k больше длины слова, корректировку не выполнять.
-
Слова заданной длины заменить указанной подстрокой, не обязательно словом. Как использовать этот алгоритм замены для удаления слов заданной длины?
-
После каждого слова текста вставить указанную подстроку.
-
После k-го символа слова вставить указанную подстроку. Если k больше длины слова, вставку не выполнять.
-
После одного слова текста вставить другое слово.
-
Удалить все символы (кроме пробелов), не являющиеся буквами. Между последовательностями подряд идущих букв оставить хотя бы один пробел.
-
Удалить все слова заданной длины.
-
Удалить все слова-палиндромы.
-
Удалить из текста его часть, заключённую между двумя вводимыми с экрана символами (например, между скобками “{“ и “}”, между звёздочками и т. п.). Считать, что эти символы могут быть только в одной строке.
-
Обработка текста программы на языке С++ как последовательности строк символов. В качестве входной информации разрабатываемой программы задан некоторый элемент языка или небольшой фрагмент программы. Необходимо записать его в файл и найти количество всех символов (длину) каждого комментария, записанного после символов “//”. Для других целей эти символы не используются. В строке может быть записан только один комментарий.
-
Из текста программы (см. 12) удалить комментарии, ограниченные символами “/*” и “*/”. Для других целей эти символы не используются. Считать, что эти символы могут быть только в одной строке.
-
Сколько раз в тексте программы (см. 12) используется вывод с помощью cout ? Предусмотреть, что это ключевое слово может быть в текстовой константе.
-
Сколько раз в тексте программы (см. 12) используется ввод с помощью cin ? Предусмотреть, что это ключевое слово может быть в комментариях после символов //.
-
Предполагается, что предложения текста разделяются одним из следующих трёх символов: точка, восклицательный или вопросительный знаки. Кроме них, рядом с этими могут быть другие символы (пробел (пробелы), несколько точек, скобки и т. п.). Найти количество повествовательных, вопросительных и восклицательных предложений.
С. Задачи повышенной сложности
-
Найти и вывести те предложения (см. 16), в которых есть одинаковые слова.
-
Найти одно любое слово в каждом предложении (см. 16), которое есть в следующем предложении. Последнее предложение не анализируется.
-
В каждом вопросительном предложении текста (см. 16) найти и вывести без повторений слова заданной длины.
-
В каждом предложении текста (см. 16) поменять местами первое слово с последним словом.
-
Удалить из текста его часть, заключённую между двумя вводимыми с экрана символами (например, между скобками “{“ и “}”, между звёздочками и т. п.) или между двумя парами символов (например, между “/*” и “*/”, то есть комментарии из текста программы). Считать, что эти символы могут быть в разных строках.
-
Текст шифруется по следующему правилу: из исходного текста выбирается 1-й, 4-й, 7-й, 10-й и т. д. символы, затем 2-й, 5-й, 8, 11-й и т. д. символы, затем 3-й, 6-й, 9-й, 12-й и т. д. символы. Зашифровать заданный текст, то есть на основании исходного текстового файла получить новый файл по указанному выше правилу.
-
Пусть зашифрован текст по правилу, описанному в предыдущем примере, то есть в файле хранится зашифрованный текст. Расшифровать заданный текст, то есть получить второй новый файл.
-
Обработка текста программы на языке С++ как последовательности строк символов. В качестве входной информации разрабатываемой программы задан некоторый элемент языка или небольшой фрагмент программы. Необходимо записать его в файл и проанализировать в зависимости от варианта. Найти все вложенные операторы if.
-
Задана полная форма оператора if (см 8). Пусть в каждой его ветви записан простой оператор, присваивающий целой переменной значение константы. В качестве логического выражения в скобках if записано сравнение двух простых переменных с помощью операций сравнения. Определить правильность записи оператора if.
-
Задан заголовок оператора for (см. 8). Есть ли в нём синтаксические ошибки? Предполагается, что каждое из трёх выражений имеет простой вид. В первом из них одной переменной присваивается значение константы. Во втором выражении используются только операции сравнения перменной с целой константой типа n<10 и нет логических операций. В третьем выражении используются только операции ++, - - (например, i++) , +=, - = (типа x+=2), где слева переменная, а справа константа целого типа.
-
Определить, правильно ли расставлены фигурные скобки в операторах for (см. 8). Предполагается, что фигурные скобки записываются всегда, независимо от количества операторов в теле цикла. Для других целей они не используются. Предусмотреть случай вложенности операторов for.
-
Найти количество операторов в теле цикла каждого оператора while (см. 8). Независимо от количества операторов тела цикла фигурные скобки всегда записываются. В теле цикла отсутствуют операторы, которые требуют фигурных скобок.
-
Найти количество операторов в теле цикла каждого оператора do … while (см. 8). Независимо от количества операторов тела цикла фигурные скобки всегда записываются. В теле цикла отсутствуют операторы, которые требуют фигурных скобок.
-
Проанализировать баланс фигурных скобок при условии, что они используются только для объединения нескольких простых операторов в один блок (см. 8).
Лабораторная работа 10
Тема. Файлы в экономических задачах.
Требования и общие указания к заданиям:
Необходимо разработать и проверить функции для реализации следующих действий с файлами:
-
создание файла, записи которого имеют указанную структуру;
-
просмотр файла, т. е. “чистый” вывод его содержимого на экран в удобном для анализа виде без никакой обработки и анализа;
-
добавление записей в конец файла (аналогично созданию, только файл открываем с режимом “a”);
-
реализация функциональной части, указанной в варианте. При этом необходимо предусмотреть создание и просмотр второго файла с результатом.
Замечание. Кроме предложенных здесь вариантов заданий можно использовать задачи из лабораторной работы 6 этого второго семестра.
Варианты заданий
A. Задачи первого, простого уровня
-
Структура записей файла: отделение; фамилия, имя, отчество; массив из пяти оценок. Для заданного отделения вывести фамилии, имена, отчества “двоечников”.
-
Структура записей файла: курс; фамилия, имя, отчество; массив из пяти оценок по десятибалльной системе. Для заданного курса вывести фамилии, имена, отчества “отличников”, у которых только оценки “9” и (или) “10”.
-
Структура записей файла: отделение; фамилия, имя, отчество; массив оценок; признак. Для каждого студента получить одно из следующих значений признака: 5 – отличник с оценками “9”, “10”; 4 – хорошист, у которого есть хотя бы одна хорошая оценка (“6”, “7”, “8”), но нет оценок, меньше “6”; 3 – троечник, у которого есть хотя бы одна удовлетворительная оценка ( “4”, “5”), но нет оценок, меньше “4”; 2 – неуспевающий, у которого есть хотя бы одна неудовлетворительная оценка (“1”, “2”, или “3”).
-
Структура записей файла: курс; фамилия, имя, отчество; массив оценок; материальное положение (например: 0, 1, 2); размер стипендии. Для каждого студента определить размер стипендии, выбрав самостоятельно критерий.
-
Структура записей файла: отделение; фамилия, имя, отчество; массив оценок. Вывести список (фамилия, инициалы; массив оценок) неуспевающих студентов.
-
Структура записей файла: шифр подразделения; фамилия, имя, отчество; год рождения; образование (например: 0 – неоконченное базовое, 1 – базовое, 2 – общее среднее и т. д.). Для заданного подразделения, шифр которого вводим, вывести фамилии и инициалы сотрудников с неоконченным базовым и базовым образованием.
-
Структура записей файла: шифр подразделения; фамилия, имя, отчество; пол, год рождения. Найти общее количество и процент работников пенсионного возраста, вывести их фамилии и инициалы.
-
Структура записей файла: шифр подразделения; фамилия, имя, отчество сотрудника; год поступления на работу. Найти количество и процент работников со стажем работы до пяти лет и вывести их фамилии и инициалы.
-
Структура записей файла: шифр темы; шифр книги; фамилия, имя, отчество автора; название книги; издательство; год издания. Вывести список книг по заданной теме, изданных позже указанного года.
-
Структура записей файла: шифр темы; шифр книги; фамилия, имя, отчество автора; название книги; издательство; год издания. Ввести с экрана фамилию, имя, отчество автора и название нескольких книг. Для каждой книги из этого списка найти значения остальных полей или вывести сообщение, что такой книги в файле нет.
-
Структура записей файла: шифр подразделения; план выпуска продукции по кварталам одного года в виде массива; фактическое выполнение плана по кварталам одного года в виде массива; процент выполнения плана по кварталам одного года в виде массива. Для каждого подразделения получить процент выполнения плана по кварталам.
-
Структура записей файла: фамилия, имя, отчество; результат соревнований по некоторому виду спорта. Найти три лучших результата и соответствующие три фамилии участников. Предполагается, что абсолютно одинаковые результаты несколько участников показать не могли.
-
Структура записей файла: номер телефона; фамилия, имя, отчество абонента; адрес (улица, дом, квартира). По введённому номеру телефона вывести фамилию, инициалы и адрес абонента или сообщение, что такого телефона в файле нет.
-
Структура записей файла: номер телефона; фамилия, имя отчество абонента; адрес (улица, дом, квартира). Скорректировать файл после установки новых телефонов, информация о которых (см. структуру записей) вводится с экрана.
-
Структура записей файла: шифр сбербанка; номер счёта; размер вклада. Найти и вывести номера счетов и шифры сбербанков с максимальным размером вклада.
B. Задачи второго, среднего уровня
-
Структура записей файла: отделение; фамилия, имя, отчество; массив из пяти оценок. Для заданного отделения вывести фамилии и инициалы “двоечников” по убыванию общего количества плохих оценок (“1”, “2”, “3”).
-
Структура записей файла: курс; фамилия, имя, отчество; массив из пяти оценок по десятибалльной системе. Для заданного курса вывести фамилии и инициалы “отличников” с оценками “9” и “10” по убыванию среднего бала.
-
Структура записей файла: отделение; фамилия, имя, отчество; массив оценок; признак. Для каждого студента получить одно из следующих значений признака: 5 – отличник с оценками “9”, “10”; 4 – хорошист, у которого есть хотя бы одна хорошая оценка (“6”, “7”, “8”), но нет оценок, меньше “6”; 3 – троечник, у которого есть хотя бы одна удовлетворительная оценка (“4”, “5”), но нет оценок, меньше “4”; 2 – неуспевающий, у которого есть хотя бы одна неудовлетворительная оценка (“1”, “2”, или “3”). Студентов заданного отделения рассортировать по этому полученному признаку. Для одинакового признака сортировать по среднему баллу.
-
Структура записей файла: курс; фамилия, имя, отчество; массив оценок в десятибалльной системе; материальное положение (например: 0, 1); размер стипендии. Для каждого студента определить размер стипендии, выбрав самостоятельно критерий. Рассортировать студентов по курсам, внутри курса – по полученной стипендии.
-
Структура записей файла: отделение; фамилия, имя, отчество; массив оценок. Для каждого отделения вывести список (фамилия, инициалы) успевающих студентов по убыванию их среднего балла.
-
Структура записей файла: шифр подразделения; фамилия, имя, отчество; год рождения; образование (например, 0 – неоконченное базовое, 1 – базовое, 2 – общее среднее и т. д.). Для заданного подразделения, шифр которого вводим, вывести информацию о сотрудниках сначала по образованию, а затем для одинакового образования по возрасту.
-
Структура записей файла: шифр подразделения; фамилия, имя, отчество; пол, год рождения. Для каждого подразделения найти количество и процент работников пенсионного возраста, вывести их фамилии и инициалы по убыванию возраста.
-
Структура записей файла: шифр подразделения; фамилия, имя, отчество сотрудника; год поступления на работу. Для каждого подразделения найти количество и процент работников со стажем работы до 5 лет, от 6 до 10 лет, от 11 до 15лет и т. д.
-
Структура записей файла: шифр темы; шифр книги; фамилия, имя, отчество автора; название книги; издательство; год издания. Вывести список книг по заданной теме указанного издательства по убыванию года издания.
-
Структура записей файла: шифр темы; шифр книги; фамилия, имя, отчество автора; название книги; издательство; год издания. Вывести список книг, изданных в заданном издательстве, по возрастанию шифра темы.
-
Структура записей файла: шифр подразделения; план выпуска продукции по кварталам одного года в виде массива; фактическое выполнение плана по кварталам одного года в виде массива. Рассортировать информацию о работе подразделений следующим образом: сначала должна быть информация о тех подразделениях, которые выполнили план во всех четырёх кварталах, затем о тех, кто выполнил план в трёх кварталах, и т. д.
-
Структура записей файла: фамилия, имя, отчество; результат соревнований по некоторому виду спорта. Найти три лучших результата и соответствующие фамилии участников. Таких победителей может быть больше трёх, так как одинаковые результаты могли показать несколько участников.
-
Структура записей файла: фамилия, имя, отчество; пол; результат соревнований по некоторому виду спорта. Найти лучший результат среди женщин и соответствующие фамилии участников (не обязательно одна) и лучший результат среди мужчин и соответствующие фамилии участников (также не обязательно одна).
-
Структура записей файла: шифр сбербанка; номер счёта; размер вклада. Для каждого сбербанка найти общее количество вкладчиков и средний размер вклада.
-
Структура записей файла: шифр сбербанка; номер счёта; размер вклада. Ввести информацию о поступлении денег на счета и об их снятии со счетов. Выполнить корректировку файла.
-
Вывести ведомость на выдачу премии за квартал, если зарплата и процент премии за каждый месяц хранятся в файле. Процент удержания из премии, одинаковый для всех работников, ввести с экрана.
-
Структура записей файла: шифр подразделения; шифр сотрудника; фамилия, имя, отчество; год поступления на работу. С экрана вводим следующие данные об уволенных сотрудниках: шифр подразделения и шифр сотрудника. Выполнить удаление соответствующих записей
В следующих задачах (18 – 26) предварительно необходимо определить, какая информация (поля структуры) должна храниться в файле.
-
В файле хранится информация о ходе выполнения лабораторных работ всеми студентами одного преподавателя. Рассортировать студентов по убыванию количества не выполненных в срок заданий. Для сортировки использовать метод вставки.
-
В файле хранится информация о ходе выполнения лабораторных работ всеми студентами одного преподавателя. Методом слияния рассортировать номера заданий по убыванию количества студентов, выполнивших задания вовремя. После занятия выполнить корректировку файла.
-
Составить программу планирования и учёта нагрузки одного преподавателя.
-
В файле хранится расписание занятий студентов одного курса некоторого факультета. Вывести расписание для заданной подгруппы.
-
В файле хранится расписание занятий студентов одного курса некоторого факультета. Вывести номера тех подгрупп (и дни), у которых есть “форточки”.
-
В файле хранится расписание занятий студентов одного курса некоторого факультета. Вывести номера тех подгрупп, у которых более одного дня в неделю есть занятия позже введённого времени (например, позже 19 час.).
-
В файле хранится расписание аудиторных занятий преподавателей кафедры. В какие дни у преподавателя нет занятий?
-
В файле хранится расписание аудиторных занятий преподавателей кафедры. Для заданного преподавателя вывести расписание его занятий.
-
В файле хранится расписание аудиторных занятий одного преподавателя. Вывести преподавателей с наибольшим количеством аудиторных занятий в неделю.
Лабораторная работа 11
Тема: Файлы в математических задачах.
Требования и общие указания к заданиям:
Необходимо разработать и проверить функции для реализации следующих действий с файлами:
-
создание файла;
-
просмотр файла, т. е. “чистый” вывод его содержимого на экран в удобном для анализа виде без никакой обработки и анализа;
-
добавление записей в конец файла (аналогично созданию, только файл открываем с режимом “a”);
-
реализация функциональной части, указанной в варианте. При этом необходимо предусмотреть создание и просмотр второго файла с результатом.
При работе с матрицей оперативную память резервировать не более чем для одной (в некоторых вариантах для двух) строк матрицы. Всю матрицу в оперативной памяти не хранить.
Варианты заданий
A. Задачи первого, простого уровня.
-
В файл записать координаты точек трёхмерного пространства. Найти количество точек, принадлежащих шару, координаты центра и радиус которого заданы и вводятся с экрана.
-
Из заданного множества точек на плоскости, координаты которых должны храниться в файле, найти точки с максимальным расстоянием от заданной точки, координаты которой вводятся с экрана.
-
В файл записать коэффициенты уравнений прямых на плоскости. Посчитать количество прямых, параллельных оси ОХ и количество прямых, параллельных оси ОY.
-
В файл записать координаты вершин выпуклых четырёхугольников на плоскости. Вывести на экран координаты вершин квадратов и найти их количество.
-
В файл записать координаты точек плоскости. Вывести на экран координаты точек, расположенных на прямой, коэффициенты уравнения которой заданы и вводятся с экрана. Найти количество таких точек.
-
В файл записать координаты точек плоскости. Ввести с экрана координаты центра и радиусы двух окружностей с общим центром. Вывести на экран координаты точек, расположенных между этими окружностями, и найти количество таких точек.
-
В файл записать построчно вещественную матрицу. Найти строку (одномерный массив из файла) с наибольшим количеством положительных чисел.
-
В файл записать построчно целочисленную матрицу, у которой в каждой строке хранятся оценки одного студента на всех экзаменах. Найти количество отличников.
-
В каждой строке целочисленной матрицы, элементы которой должны храниться в файле, найти разность между средним значением положительных и средним значением отрицательных элементов.
-
В файл записать построчно вещественную матрицу. Найти и вывести строки, в которых нет отрицательных чисел.
-
В файл записать построчно вещественную матрицу. Найти наибольшее среди всех чисел тех строк матрицы, которые начинаются с положительного числа.
-
В файл записать вещественную матрицу A. С экрана ввести k — номер строки матрицы. Получить и вывести на экран скалярное произведение k-й строки матрицы на её первую строку.
B. Задачи второго, среднего уровня.
-
В файл записать координаты точек трёхмерного пространства. Найти такую точку, что шар заданного радиуса с центром в этой точке содержит наибольшее количество точек.
-
Из заданного множества точек на плоскости, координаты которых должны храниться в файле, выбрать две такие различные точки, чтобы окружности заданного радиуса с центром в этих точках содержали внутри себя одинаковое количество точек.
-
В файл записать коэффициенты уравнений прямых на плоскости. Посчитать количество различных точек пересечения этих прямых и найти их координаты. Для каждой точки пересечения определить, какое количество прямых пересекается в этой точке.
-
В файл записать координаты вершин выпуклых четырёхугольников на плоскости. Создать два файла, первый из которых должен содержать координаты вершин параллелограммов по возрастанию их площадей, а второй – трапеций в том порядке, в котором они были в исходном файле.
-
В один файл записать координаты множества точек плоскости A, а в другой — коэффициенты уравнений прямых B этой же плоскости. Найти две такие различные точки из A, что проходящая через них прямая параллельна наибольшему количеству прямых из B.
-
В один файл записать координаты конечного множества точек плоскости, а в другой — координаты центра и радиусы m концентрических окружностей. Между какими окружностями (первой и второй, второй и третьей и т. д., (m-1)-й и m-й) больше всего точек заданного множества?
-
В файл записать построчно вещественную матрицу. Найти такие две различные строки матрицы, что их скалярное произведение наибольшее.
-
В файл записать построчно целочисленную матрицу, у которой в строке хранятся оценки одного студента на всех экзаменах. Найти номера строк отличников с оценками “9”, “10”; хорошистов, у которых есть хотя бы одна хорошая оценка (“6”, “7”, “8”), но нет оценок, меньше “6”; троечников, у которых есть хотя бы одна удовлетворительная оценка (“4”, “5”), но нет оценок, меньше “4”; неуспевающих, у которых есть хотя бы одна неудовлетворительная оценка (“1”, “2”, или “3”).
-
В каждой строке целочисленной матрицы, элементы которой должны храниться в файле, найти наибольшее количество одинаковых подряд идущих элементов.
-
В файл записать построчно целочисленную матрицу. Найти наибольшее из чисел, встречающихся в матрице более одного раза.
-
В файл записать построчно вещественную матрицу. Найти наибольшее среди всех чисел тех строк матрицы, которые упорядочены либо по возрастанию, либо по убыванию.
-
В файл записать вещественную матрицу A. Получить и записать в файл вектор B, i-й элемент которого равен скалярному произведению i-й строки матрицы на её первую строку. Матрицу и полученный вектор вывести на экран.
С. Задачи повышенной сложности
-
В один файл записать матрицу, а в другой — вектор. Найти произведение матрицы на вектор и записать полученный вектор в третий файл.
-
В один файл записать вектор, а в другой — матрицу. Найти произведение вектора на матрицу и записать полученный вектор в третий файл.
-
Найти произведение двух матриц, одна из которых хранится в одном файле, а вторая – в другом. Полученную матрицу записать в третий файл. Содержимое всех трёх файлов вывести на экран.
-
Методом Гаусса решить систему n линейных алгебраических уравнений c n неизвестными. Матрица коэффициентов системы и вектор свободных членов хранятся в двух файлах.
-
Методом Гаусса, используя схему выбора главного элемента, решить систему n линейных алгебраических уравнений c n неизвестными. Матрица коэффициентов системы и вектор свободных членов хранятся в двух файлах.
-
В файл записать построчно вещественную квадратную матрицу. Обратить её по схеме единственного деления.
-
Вычислить определитель записанной в файле квадратной матрицы, используя метод Гаусса.
-
Методом простой итерации решить систему n линейных алгебраических уравнений c n неизвестными. Матрица коэффициентов системы и вектор свободных членов хранятся в двух файлах.
-
Методом Зейделя решить систему n линейных алгебраических уравнений c n неизвестными. Матрица коэффициентов системы и вектор свободных членов хранятся в двух файлах.
-
Найти собственные числа и собственные векторы записанной в файл матрицы методом непосредственного вычисления определителя.
-
Методом итераций найти наибольшее по модулю собственное значение и соответствующий ему собственный вектор записанной в файл матрицы.
-
В файл записать построчно вещественную матрицу A. Найти все такие i и j, что скалярное произведение i-й строки на j-ю наибольшее.
Лабораторная работа 12
Тема. Указатели на функции.
Требования и общие указания к заданиям:
-
составить функцию, которая по заданной формуле (Симпсона, трапеций, прямоугольников и др.) вычисляет значение определённого интеграла от произвольной функции одной переменной или решает произвольное нелинейное уравнение f(x)=0 с помощью заданного численного метода;
-
в качестве одного из параметров этой функции использовать указатель на подынтегральную функцию или указатель на функцию левой части уравнения f(x)=0;
-
функцию для вычисления определённого интеграла проверить, используя аналитическое выражение для первообразной или с помощью какой-нибудь системы компьютерной математики (Mathcad, Mathematica и др.);
-
при решении нелинейных уравнений корни отделить графически или другим способом. Отрезок, на котором находится корень, для функции предполагается известным;
-
предусмотреть программную проверку найденных решений нелинейных уравнений.
Варианты заданий
В. Задачи второго, среднего уровня
-
Составить функцию, которая вычисляет значение определённого интеграла от произвольной функции одной переменной по формуле правых прямоугольников
,
где n фиксировано, . Составленную функцию проверить для вычисления интеграла . Значение функции y=sin(t) вычислять с заданной точностью ., используя разложение в ряд Тейлора:
-
Составить функцию, которая вычисляет значение определённого интеграла от произвольной функции одной переменной. по формуле левых прямоугольников
,
где n фиксировано, . Составленную функцию проверить для вычисления интеграла . Значение функции y=cos(t) вычислять с заданной точностью , используя разложение в ряд Тейлора:
.
-
Составить функцию, которая вычисляет значение определённого интеграла от произвольной функции одной переменной по формуле средних прямоугольников
,
где n фиксировано, Составленную функцию проверить для вычисления интеграла Значение функции y=et , где t= 1/x, вычислять с заданной точностью , используя разложение в ряд Тейлора:
-
Составить функцию, которая вычисляет значение определённого интеграла от произвольной функции одной переменной с помощью составной формулы трапеций
где n фиксировано, . С помощью составленной функции вычислить значение интеграла для n=3, 6, 9. Для вычисления y = , где t=, составить и использовать функцию, которая реализует следующий итерационный алгоритм: … Вычисления продолжаются до тех пор, пока не выполнится условие . Массив y не формируется, достаточно двух переменных для старого и нового значений y.
-
Составить функцию, которая вычисляет значение определённого интеграла от произвольной функции одной переменной, используя составную формулу трапеций
где n фиксировано, . С помощью составленной функции вычислить значения интеграла для с = 1, 1.2, 1.4, …, 2.8, 3. Для вычисления y = можно использовать стандартную встроенную функцию или вычислять по итерационной формуле, приведенной в варианте 4.
-
Составить функцию, которая вычисляет значение определённого интеграла от произвольной функции одной переменной, используя составную формулу Симпсона
где n фиксировано, . С помощью составленной функции вычислить значение интеграла . Значение функции y=et , где t= -x2, вычислять с заданной точностью , используя разложение в ряд Тейлора:
-
Составить функцию, которая вычисляет значение определённого интеграла от произвольной функции одной переменной, используя составную формулу Симпсона
где n фиксировано, . С помощью составленной функции вычислить значение интеграла для n=6. Значение функции y=ln(1+t), где t=x2, вычислять с заданной точностью , используя разложение в ряд Тейлора: .
-
Составить функцию для вычисления определённого интеграла от произвольной функции одной переменной по следующей формуле:
I,
где n фиксировано и кратно трём, , , С помощью составленной функции вычислить значения интегралов для k = 1/4, 1/2, 1, 2, 4.
-
Составить функцию для приближённого решения произвольного нелинейного уравнения f(x)=0 методом деления отрезка пополам с точностью . Используя эту функцию, решить уравнения
для a = 0.5+0.1k, k=0,1,2,3,4,5 с точностью 1=0.1.
-
Составить функцию для приближённого решения произвольного нелинейного уравнения f(x)=0 методом простой итерации с точностью . Используя эту функцию, решить уравнения с точностью 1=0.0001.
Указание. В методе простой итерации исходное уравнение приводится к виду x=(x). Начиная с некоторого заданного начального значения , строим последовательность по правилу. Вычисления прекращаем, если на некотором шаге получим , где — заданная точность решения уравнения.
-
Составить функцию для приближённого решения произвольного нелинейного уравнения f(x)=0 методом Ньютона с точностью . Используя эту функцию, решить уравнения 3x-ekx = 0 для k = 1, 2, 3, 4, 5 с точностью 1=10-5. Значение et вычислять с заданной точностью 2 = 10-6 с помощью разложения в ряд Тейлора:
et=1+t+ .
Указание. В методе Ньютона по заданному начальному приближению xо строим последовательность по правилу
; n=0,1, 2, 3, …
Вычисления продолжаются до тех пор, пока не выполнится условие . Массив x не формируется, достаточно двух переменных для старого и нового значений x.
-
Составить функцию для приближённого решения нелинейного уравнения f(x)=0 с точностью методом секущих. Используя эту функцию, решить уравнения для = 2(0.1)3 с точностью 1=10-5.
Указание. В методе секущих по двум начальным приближениям строим последовательность по правилу
; n= 1,2, 3, …
Вычисления продолжаются до тех пор, пока не выполнится условие . Массив x не формируется, достаточно двух переменных для старого и нового значений x.
-
Составить функцию для решения произвольного нелинейного уравнения f(x) модифицированным методом секущих с точностью . Используя эту функцию, решить уравнение для =3(0.5)7 с точностью =.
Указание. В модифицированном методе секущих по двум начальным приближениям строим последовательность по правилу
для n=1, 2, …, при . Вычисления прекращаем, если на некотором шаге получим , где — заданная точность решения уравнения.
-
Составить функцию, которая находит приближенно, с точностью 0,001, минимум произвольной функции от одной переменной на отрезке [u, v]. С помощью составленной функции найти минимум функции y=+sin(x) на отрезке [-0.9, 0.9]. Значение функции y= sin (x) вычислять с заданной точностью , используя разложение в ряд Тейлора:
-
Составить функцию, которая выводит таблицу значений произвольной функции от одной переменной на отрезке [u, v] с шагом h. С помощью составленной функции построить таблицу значений функции y=arctg(x) на отрезке [-1, 1] с шагом h=0.1. Значение функции y=arctg(x) вычислять с заданной точностью , используя разложение в ряд Тейлора:
С. Задачи повышенной сложности.
1—8. Найти приближённое значение определённого интеграла
с заданной точностью , используя соответствующие (см. уровень В) квадратурные формулы. Это означает, что значение интеграла вычисляем не для одного фиксированного количества (n) разбиений отрезка [a, b], а используем двойной пересчёт. Сначала интеграл вычисляем для n разбиений, затем для 2n, 4n и т. д. Вычисления прекращаем, если на некотором шаге получим значение интеграла, полученное на предыдущем шаге, а – значение интеграла, полученное на данном текущем шаге.
Лабораторная работа 13
Тема: Рекурсивные функции.
Требования и общие указания к заданиям.
Выполнить задания двумя способами:
1) используя механизм рекурсии;
-
разработав нерекурсивный алгоритм и запрограммировав его с помощью обычного цикла.
Оба варианта включить в один проект в виде отдельных функций.
B. Задачи второго, среднего уровня.
1. Вычислить для заданного натурального n:
.
2. Найти n-й член числовой последовательности, которая определяется рекуррентной формулой
a1 = 1, a2 = 2, a3 = 3, an+1 = 3an + 2an– + an–2.
-
Для заданных вещественного x и натурального n найти значение полинома Чебышева Тn(x) по рекуррентной формуле
T0(x) = 1, T1(x) = x, Tn+1(x) = 2xTn(x) – Tn–1(x).
-
Найти значение функции С(m,n), где 0 < m < n, если:
.
-
С помощью признака делимости на три проверить, кратно ли данное натуральное число трём.
-
Найти n-ю степень (n – натуральное число) числа а.
-
Найти n-й член арифметической прогрессии с заданными первым членом а и разностью прогрессии d.
-
Найти n-й член геометрической прогрессии с заданными первым членом b и знаменателем прогрессии q.
-
Методом половинного деления уточнить корень уравнения f(х) = 0.
-
Найти максимальный элемент массива а1, а2, …, аn.
-
В одномерном массиве найти i и j такие, что подпоследовательность аi, аi+1, …, аj является перевертышем.
-
В одномерном числовом массиве найти подпоследовательность подряд идущих элементов, сумма которых максимальна.
-
Рассортировать одномерный массив методом простого выбора.
-
В одномерном числовом массиве найти заданное число, используя алгоритм двоичного поиска.
-
Найти значение функции Аккермана, которая определяется для всех неотрицательных целых аргументов m и n следующим образом:
А(0, n) = n + 1;
A(m, 0) = A(m – 1, 1), если (m > 0);
A(m, n) = A(m – 1, A(m, n – 1)), если (m, n > 0).
С. Задачи повышенной сложности.
-
С помощью рекурсивной функции найти с заданной точностью квадратный корень , воспользовавшись итерационной формулой Ньютона:
Y0=1,
Вычисления продолжать пока |Yi – Yi-1| не станет меньше заданного . Используя эту функцию, составить другую рекурсивную функцию, которая для заданного а вычисляет
.
-
Разработать рекурсивную функцию нахождения наибольшего общего делителя двух чисел m и n, используя алгоритм Евклида. Например, для нахождения НОД(96, 36) число 96 представляем как 2 · 36 + 24. Затем число 36 = 1 · 24 +12 и, наконец, 24 = 2 · 12 + 0. Следовательно, НОД(96, 36) = 12. Используя эту функцию, составить вторую рекурсивную функцию для нахождения наибольшего общего делителя натуральных чисел одномерного массива.
НОД(n0, n1, ... nл-1) = НОД (НОД (n0, n1, ... nл–2), nл-1).
-
Найти количество n-значных чисел в m-ичной системе счисления, у каждого из которых сумма цифр равна k. При этом в качестве n-значного числа мы допускаем и числа, начинающиеся с одного или нескольких нулей.
-
Вычислить количество различных представлений заданного натурального числа n в виде суммы не менее двух попарно различных натуральных слагаемых. Представления, отличающиеся лишь порядком слагаемых, различными не считаются.
-
В матрице, состоящей из нулей и единиц, найти прямоугольную подматрицу из одних единиц максимального размера (т. е. с максимальным произведением высоты на длину).
-
В матрице найти прямоугольную подматрицу, сумма элементов которой максимальна.
-
В матрице A найти путь от элемента A[i1, j1] до элемента A[i2, j2] с максимальной суммой. “Ходить” можно по горизонталям и вертикалям. Каждый элемент матрицы может входить в путь не более одного раза.
-
В матрице найти путь от элемента первой строки матрицы до элемента последней строки с максимальной суммой. “Ходить” можно вниз по вертикали или диагоналям.
-
Вычислить определитель заданной матрицы, пользуясь формулой разложения по первой строке:
где матрица Вk получается из матрицы А вычеркиванием первой строки и k-го столбца.
-
Лабиринт задан матрицей a(m, n), состоящей из нулей и единиц, причем а[0, 0] = 0 и a[m-1, n-1] = 0. Разработайте рекурсивную процедуру нахождения пути из клетки а[0, 0] в a[m-1, n-1]. Путь должен состоять из элементов, равных нулю. “Ходить” можно только по вертикалям и горизонталям.
-
Задано число А и два вектора b[n] и c[n]. Найти множество I, являющееся подмножеством множества {0, ..., n-1}, такое, что , а является максимальной из всех возможных.
-
Найти сумму двух натуральных чисел, заданных массивами своих цифр а0, а1, …, аn-1 и b0, b1, …, bm-1.
-
Рассортировать одномерный массив методом слияния.
-
Найти все перестановки заданных n различных натуральных чисел..
-
Для заданных двух натуральных числа m и n найти НОД(m, n) и натуральные x и y такие, что mx + ny = НОД(m, n).
-
Даны три натуральных числа m, n и k, причем k делится на НОД(m, n). Найти какое-нибудь целочисленное решение уравнения mx + ny = k.
-
Имеется n населенных пунктов, пронумерованных от 1 до n. Некоторые пары пунктов соединены дорогами. Разработайте рекурсивную процедуру определения, можно ли попасть по этим дорогам из 1-го пункта в n-й.
-
Вводятся три неотрицательных числа d, i, c и две строки X и Y. Найдите преобразование строки X в Y минимальной стоимости. Допустимы следующие три операции:
-
удалить любой символ из X (стоимость операции d);
-
вставить любой символ в X (стоимость операции i);
-
заменить символ в X на произвольный (стоимость операции с).
-
Преобразовать строку символов, состоящую из букв ‘А’, ‘В’ и ‘С’,
используя следующие три операции:
-
удалить четыре подряд идущие буквы А;
-
удалить из последовательности ВАВА одну пару ВА;
-
удалить комбинацию АВС.
Преобразования выполнять до тех пор, пока ни одной из перечисленных комбинаций не останется.
-
Даны две строки x и y. Строка x состоит из нулей и единиц, строка y – из символов ‘A’ и ‘B’. Можно ли строку x преобразовать в строку y по следующему правилу: цифра 0 преобразуется в непустую последовательность букв A, а цифра 1 – либо в непустую последовательность букв A, либо в непустую последовательность букв B?
-
Задано конечное множество жителей некоего города, причем для каждого из жителей перечислены имена его детей. Жители X и Y считаются родственниками, если:
либо Х – ребенок Y,
либо Y – ребенок X,
либо существует некий Z такой, что Х является родственником Z, а Z является родственником Y.
Перечислите все пары жителей города, которые являются родственниками.
-
На шахматной доске расставьте 8 ферзей так, чтобы они не «били» друг друга.
-
Имеется полоска клетчатой бумаги шириной в одну клетку и длиной в n клеток. На первой клетке установлена шашка. Одним ходом шашку можно передвигать на одну или две клетки. Разработайте рекурсивную функцию, определяющую количество способов продвижения шашки на n-ю клетку.