- •Задание 1. Циклические и вычислительные процессы
- •Задание 2. Массивы.
- •Задание 3. Форматированный ввод/вывод в текстовые файлы. Динамические массивы.
- •Задание 4. Работа с файлами (бесформатный ввод/вывод; бинарные файлы).
- •Задание 5. Классы
- •1. Реализуйте класс «Односвязный список целых чисел» с методами:
- •2. Реализуйте класс «Двусвязный список целых чисел» с методами:
- •3. Реализуйте класс «Бинарное дерево символов» с методами:
- •4. Описать абстрактный класс «Функция на отрезке [a,b]»
- •7. Описать класс «множество целых чисел» на основе одномерного
- •13. Реализуйте класс «Бинарное дерево структур» с методами:
Сборник заданий по программированию на языке C/C++
Омск- 2010
УДК 681.3
УДК 621.391
«Сборник заданий для программирования на языке C/C++». Учебно – методическое пособие /Сост. К.В. Логинов – Омск:. – 31 с.
Пособие предназначено для студентов специальности 090104 в качестве материала, используемого при выполнении практических занятий по дисциплине «Программирование на языке C/C++».
В предлагаемом учебном пособии представлены задания по основным разделам программирования на языке С/С++.
Задание 1. Циклические и вычислительные процессы
Вычислить и вывести на экран в виде таблицы значение функции F на интервале от Хнач до Хкон с шагом dX.
Значения a, b, c, Хнач, Хкон, dX ввести с клавиатуры.
Программа должна содержать простейшее меню, запрашивающее у пользователя о продолжении или завершении работы с программой.
a, b и c – действительные числа.
Варианты:
1. |
|
2. |
|
3. |
|
4. |
|
5. |
|
6. |
|
7. |
|
8. |
|
9. |
|
10. |
|
11. |
|
12. |
|
13. |
|
14. |
|
15. |
|
16. |
|
17. |
|
18. |
|
19. |
|
20. |
|
21. |
|
22. |
|
23. |
|
24. |
|
25. |
|
26. |
|
27. |
|
28. |
|
Задание 2. Массивы.
Требования к программам:
-
Необходимо точно выполнять условия задач, при сомнениях консультироваться с преподавателем.
-
Текст программы должен быть откомментирован.
В заголовке указать:
-
имя автора, группу,
-
формулировку задания.
Имена переменных, функций и проч. должны иметь осмысленные имена. Желательно объявление переменной снабжать комментарием о ее назначении.
-
Следует структурировать программу, разбивая ее на (относительно) независимые части.
-
Интерфейс программы должен быть достаточно удобен для пользователя.
Программа должна быть снабжена удобным интерфейсом на базе меню.
-
Программа должна компилироваться без ошибок и предупреждений при всех включенных сообщениях компилятора.
-
Программы должны быть хорошо протестированы перед сдачей.
-
Требования к разделу
-
Размерности массива M и N задать поименованной константой.
-
Значения элементов матрицы ввести с клавиатуры, предусмотреть обработку ошибок ввода
-
Метод сортировки указан в задании.
Варианты:
1. Дана (построчно) вещественная матрица размером MхN. Переставляя ее строки и столбцы, добиться того, чтобы наибольший элемент (один из них) оказался в верхнем левом углу.
2. Элемент матрицы назовем седловой точкой, если он является наименьшим в своей строке и одновременно наибольшим в своем столбце или. Наоборот, является наибольшим в своей строке и наименьшим в своем столбце. Для целочисленной матрицы размером MхN напечатать индексы всех ее седловых точек.
3. Определить, является ли заданная целая квадратная матрица размера N*N магическим квадратом, т.е. такой, в которой суммы элементов во всех строках и столбцах одинаковы.
4. Задана матрица размером N*N и вектор размерности N. Заменить нечетные строки матрицы на заданный вектор.
5. Задана матрица размером N*N и вектор размерности N. Заменить четные столбцы матрицы на заданный вектор.
6. Задана матрица размером N*N. Поменять в ней 1-ю строку со 2-ой, 3-ю с 4-ой и т.д.
7. Дана целочисленная прямоугольная матрица размера M*N.
-
Упорядочить строки матрицы по возрастанию первого элемента строки методом прямого включения.
-
Определить:
-
Количество строк, не содержащих ни одного нулевого элемента;
-
Максимальное из чисел, встречающееся в заданной матрице более одного раза.
-
Исходные данные и результаты вывести на экран.
8. Дана вещественная матрица прямоугольная матрица размера M*N.
-
Упорядочить столбцы матрицы по возрастанию первого элемента столбца методом прямого выбора.
-
Определить:
-
Количество столбцов, содержащих нулевые элементы;
-
Максимальный элемент матрицы.
Исходные данные и результаты вывести на экран.
9. Дана целочисленная прямоугольная матрица размера M*N.
-
Упорядочить строки матрицы по убыванию суммы элементов строк методом прямого обмена (пузырек).
-
Определить сумму элементов в тех строках, которые содержат нулевые элементы.
-
Исходные данные и результаты вывести на экран.
10. Дана вещественная прямоугольная матрица размера M*N.
-
Упорядочить столбцы матрицы по возрастанию суммы положительных элементов столбцов методом прямого включения.
-
Определить минимум среди сумм положительных элементов столбцов.
-
Исходные данные и результаты вывести на экран.
11. Дана целочисленная прямоугольная матрица размера M*N.
-
Упорядочить строки матрицы по убыванию среднего арифметического значения элементов строки методом прямого выбора.
-
Определить максимум среди среднеарифметических значений строк.
-
Исходные данные и результаты вывести на экран.
12. Дана вещественная прямоугольная матрица размера M*N.
Характеристикой строки матрицы назовем сумму ее положительных четных элементов.
-
Упорядочить строки матрицы по возрастанию их характеристик методом прямого обмена (пузырек).
-
Вывести на экран исходную матрицу, результирующую матрицу и характеристики строк.
13. Коэффициенты системы линейных уравнений заданы в виде матрицы.
-
С помощью допустимых преобразовании привести систему к треугольному виду.
-
Найти количество строк, среднее значение которых меньше заданной величины.
14. Дана целочисленная прямоугольная матрица размера M*N.
-
Упорядочить строки матрицы по возрастанию количества одинаковых элементов в каждой строке методом прямого выбора.
-
Найти номер первого из столбцов, не содержащих ни одного отрицательного элемента.
-
Исходные данные и результаты вывести на экран.
15. Составить программу ГАУСС1 реализующую алгоритм решения линейной системы уравнений с n неизвестными
методом Гаусса без обратного хода. Значение решения x1, x2, …, xn присвоить компонентам матрицы a1n+1 ,a2n+1, …, ann+1.
Примечание. Метод Гаусса без обратного хода для решения системы состоит в следующем. Первое уравнение делится на a11, затем последовательно умножается на ai1 и вычитается из i – го уравнения для i=2, 3, …, n. В результате получится эквивалентная система, у которой первый столбец коэффициентов равен (1, 0, …, 0). Далее второе уравнение делится на a22, затем последовательно умножается на ai2 и вычитается из i – го уравнения для i=1, 3, …, n. Теперь второй столбец коэффициентов у полученной системы равен (1, 0, …, 0). Продолжая этот процесс, после n-го шага получим систему с единичной матрицей, эквивалентную исходной системе. Решение этой системы совпадает с правой частью. Метод предполагает, что диагональные элементы на каждом шаге отличны от нуля.
16. Составить программу ГАУСС2 реализующую алгоритм решения линейной системы уравнений с n неизвестными
методом Гаусса без обратного хода с выбором главного элемента в столбце. Значение решения x1, x2, …, xn присвоить компонентам матрицы a1n+1 ,a2n+1, …, ann+1.
Примечание. Алгоритм Гаусса без обратного хода с выбором главного элемента в столбце отличается от алгоритма предыдущей задачи лишь тем, что перед началом i – го шага определяется наибольший по модулю элемент среди aii ,ai+1i, …, ani (пусть это будет ari), и уравнения r и i меняются местами.
17. Дана вещественная прямоугольная матрица размера M*N.
-
Упорядочить строки матрицы по возрастанию первого элемента строки методом прямого включения.
-
Найти номера строк и столбцов всех седловых точек матрицы.
-
Исходные данные и результаты вывести на экран.
18. Дана целочисленная прямоугольная матрица размера M*N.
-
Упорядочить столбцы матрицы по возрастанию первого элемента строки методом прямого обмена (пузырек).
-
Определить:
-
Сумму элементов строк, не содержащих ни одного нулевого элемента;
-
Максимальную сумму из п. 1.
-
Исходные данные и результаты вывести на экран.
19. Дана целочисленная прямоугольная матрица размера M*N.
-
Упорядочить строки матрицы по возрастанию первого элемента строки методом прямого выбора.
-
Определить:
-
Количество строк, не содержащих ни одного нулевого элемента;
-
Максимальное из чисел, встречающееся в заданной матрице более одного раза.
-
Исходные данные и результаты вывести на экран.
20. Дана вещественная матрица прямоугольная матрица размера M*N.
-
Упорядочить столбцы матрицы по возрастанию первого элемента столбца методом прямого включения.
-
Определить:
-
Количество столбцов, содержащих нулевые элементы;
-
Максимальный элемент матрицы.
Исходные данные и результаты вывести на экран.
21. Дана целочисленная прямоугольная матрица размера M*N.
-
Упорядочить строки матрицы по убыванию суммы элементов строк методом прямого обмена (пузырек).
-
Определить минимум среди сумм положительных элементов столбцов.
-
Исходные данные и результаты вывести на экран.
22. Составить программу формирования матрицы W дискретного косинус-преобразования(DCT – discrete cosine transform) . Матрица W размерностью 8x8 определяется формулами
Показать, что матрица W ортогональная, для чего вычислить:
-
cкалярное произведение каждой строки на саму себя и каждого столбца на самого себя,
-
cкалярное произведение каждой строки на все другие строки и каждого столбца на все другие столбцы ,
Вывести результаты вычислений на экран
Матрица является ортогональной если скалярное произведение строк на себя равно 1, а скалярное произведение векторов-строк друг на друга равно 0; то же самое верно и для векторов столбцов.
Примечание. Дискретное косинус-преобразование применяется в различных методах сжатия изображения, например в методе JPEG.
23.Составить программу реализующую одномерное дискретное косинус-преобразование(DCT ).
Ортогональная матрица преобразование W размерностью 8x8 определяется формулами
Исходные данные представляют собой вектор-столбец D1 (массив вещественных чисел) размерностью 8.
Результат преобразования определяется следующим матричным выражением С=W*D1.
Исходный вектор ввести с клавиатуры, исходный и результирующий вектор вывести на экран.
24.Составить программу реализующую одномерное обратное дискретное косинус-преобразование(IDCT ).
Ортогональная матрица преобразование W размерностью 8x8 определяется формулами
Исходные данные представляют собой вектор-строку С (массив вещественных чисел) размерностью 8.
Результат преобразования определяется следующим матричным выражением D1 = С *Wт.
Wт – транспонированная матрица
Исходный вектор ввести с клавиатуры, исходный и результирующий вектор вывести на экран.
25. Дана вещественная прямоугольная матрица размера M*N.
-
Упорядочить столбцов матрицы по возрастанию первого элемента столбца методом прямого выбора.
-
Найти номера строк и столбцов всех седловых точек матрицы.
-
Исходные данные и результаты вывести на экран.