
- •2 Курс, 3 семестр.
- •Звіт про виконану роботу повинен містити:
- •Умрви завдань до курсових робіт з дисципліни «Програмування» Завдання 1. Робота з символьними рядками.
- •Завдання 2. Робота з масивами.
- •В програмі повинні бути передбачені функції для введення/виведення елементів масиву та його обробки .
- •Для автоматичного заповнення масиву а даними використовувати генератор випадкових чисел. Варіанти індивідуальних завдань
- •Завдання 3. Робота з побітовими операціями
- •При відкритті чи створенні будь-яких файлів необхідно перевіряти наявність помилок введення-виведення.
- •Результат виконання завдання повинен бути представлений в наочній формі, наприклад:
- •Варіанти індивідуальних завдань
- •Завдання 4. Робота зі структурами та файлами. Методи сортування та пошуку даних
- •Ім’я файлу задається в командному рядку. Якщо воно там не було задано, то після відповідного запиту вводиться користувачем.
Завдання 3. Робота з побітовими операціями
Мета: Придбання практичних навичок в роботі з порозрядними логічними операціями та операціями зсуву.
Постановка задачі
В завданні 3 передбачається використання побітових операцій. Дані вводяться з файлу на диску та виводяться в файл та на екран. Імена вхідного та вихідного файлів задаються в командному рядку.
При виконанні 3-го завдання необхідно:
-
При відкритті чи створенні будь-яких файлів необхідно перевіряти наявність помилок введення-виведення.
-
Результат виконання завдання повинен бути представлений в наочній формі, наприклад:
Результат об’єднання значень
65535 = 11111111 11111111
1 = 00000000 00000001 операцією порозрядне І (&) дорівнює
1 = 00000000 00000001
Варіанти індивідуальних завдань
1. Дан массив целых чисел. Составить функцию unpackChar, которая принимает целую переменную типа unsigned и распаковывает из нее два символа. Программа должна печатать исходные переменные в десятичном и двоичном представлении, а полученные символы в символьном, десятичном и двоичном представлении.
2. Составить функцию, которая переставляет разряды в двоичном представлении целого положительного числа М в обратном порядке. Получившееся число принимается за значение функции В(М). Создать программу для вывода в файл значений функции В(М) на отрезке [512, 1023].
3. Дан массив чисел. Определить сумму тех элементов массива, двоичные коды которых содержат единицу в битах 1 и 5. Определить количество разрядов, равных 0, в двоичном представлении суммы.
4. Дан массив из 12 беззнаковых чисел. Составить функцию, определяющую, содержит ли двоичный код целого беззнакового числа М нули в разрядах
m и n. Используя эту функцию, определить количество тех элементов массива, двоичные коды которых содержат нуль в битах 1 и 5.
5. Дан массив из знаковых чисел. Биты отрицательных чисел сдвинуть вправо на два разярда, а биты 0 и 4 положительных чисел сбросить.
Элементы полученного массива представить в шестнадщатеричном, десятичном и двоичном виде.
6. Дан массив из 10 чисел. Составить функцию, которая инвертирует биты младшего байта целого числа М, являющегося параметром функции. Полученное значение возвращается в качестве результата функции. Применить эту функцию ко всем элементам массива. Результаты представить в десятичном, шестнадцатеричном и двоичном виде.
7. Составить функцию, меняющую местами полубайты в двоичном представлении символа (символ, содержащий до перестановки значение 0х3f, после перестановки должен содержать 0хf3). Применить эту функцию ко всем символам заданной строки. Результаты представить в символьном, шестнадцатеричном и двоичном виде.
8. Дан массив из 10 целых чисел. Инвертировать биты всех отрицательных чисел и найти сумму элементов полученного массива. Использовать функцию, которая инвертирует биты отрицательного числа, а неотрицательное оставляет без изменения.
9. Дан массив из беззнаковых чисел. Коды четных элементов массива сдвинуть на 2 разряда влево, а в нечетных элементах установить в 1 биты младшего полубайта. Элементы полученного массива представить в 16-ричном, 10-ичном и двоичном формате.
10. Дан массив чисел . Определить сумму положительных элементов, имеющих 1 в 7, 5 и 3 битах, и сумму отрицательных элементов. Проверить наличие в отрицательной сумме 0 в 6, 4 и 2 битах.
11. Составить программу, кодирующую текстовый файл, путем перестановки четных и нечетных битов. Предусмотреть возможность декодирования.
12. Составить программу, кодирующую текстовый файл, путем инвертирования порядка бит в байтах в текстовом файле. Предусмотреть возможность декодирования.
13. Даны 2 массива по 10 целых чисел. Сравниваются поразрядно соответствующие элементы массивов. Сформировать новый массив, элементами которого являются числа, содержащие единицы в тех битах, которые соответствуют совпадающим разрядам операндов, и нули, если соответствующие разряды операндов имеют различные значения. Результаты представить в десятичном, шестнадцатеричном и двоичном форматах.
14. Определить элементы заданного массива целых чисел, в двоичном представлении которых содержится наибольшее и наименьшее количество единиц. Для подсчета количества единиц в двоичном представлении целого числа использовать функцию.
15. Задано целое число. Составить функцию, которая формирует код символа, образованный битами с 4-го по 11 в двоичном представлении числа. Результат представить в 16-ричном и двоичном форматах и вывести этот символ.
16. Задано целое число x. Составить функцию, которая циклически сдвигает x влево на n разрядов.
17. Выполнить быструю сортировку (алгоритм Хоора) массива целых чисел в порядке возрастания количества нулей, содержащихся в двоичном представлении каждого элемента массива.
18. Установить 1 в четвертых битах и 0 – в седьмых битах всех элементов массива целых чисел и определить сумму элементов полученного массива. Для установки в 1 n-го бита целого числа и в 0 m-го бита составить функцию.
19. Написать функцию inv(x,q,m), возвращающую значение x с инвертированными m битами, начиная с позиции q (остальные биты не изменяются).
20. Составить программу, кодирующую текстовый файл, путем перестановки первого и последнего битов в байте, 2-го и предпоследнего и т.д. Предусмотреть возможность декодирования. Для кодирования символа составить функцию.
21. Перемножить те элементы массива целых чисел, коды которых содержат в 6-м бите 1, а во втором - 0. Из результата выделить младший байт и определить символ, которому соответствует полученный код (если такой символ есть). Результат представить в символьном, шестнадцатеричном и двоичном виде.
22. Байты элементов массива целых чисел, в 7-х битах которых имеется 1, сдвинуть вправо на один разряд. Определить среднее арифметическое элементов полученного массива. Для преобразования целого числа сдвигом вправо на m разрядов, в n-м бите которого есть единица, составить функцию.
23. Выполнить сортировку массива символов в порядке убывания количества единиц, содержащихся в двоичном представлении каждого символа. Применить сортировку выбором.
24. Установить 0 в 5-м бите всех элементов массива целых чисел с четным индексом и 1 - в 4-м бите всех нечетных элементов массива. Определить сумму элементов полученного массива.
25. Написать функцию setbit(x,p,n,y), возвращающую значение x, в котором n бит, начиная с p-й позиции, заменены на n левых разрядов из y (остальные биты не изменяются).
26. Дан массив из 10 целых чисел. Инвертировать биты всех положительных чисел (кроме знакового бита) и найти сумму элементов полученного массива. Определить содержит ли результат 1 в битах 2 и 4. Для преобразования элементов массива использовать функцию, которая получает в качестве параметра целое число и, если это число – положительное, инвертирует в нем все разряды, кроме знакового; если число отрицательное, оставляет его без изменения.
27. Составить программу кодирования / декодирования текстового файла по следующему алгоритму: над каждым символом исходного файла осуществляется побитовая операция «исключающее или» с текущим символом пароля, т.е.
Свых=Свх ^ p, где Свых - текущий символ выходного файла, Свх – текущий символ входного файла, p – текущий символ пароля, который выбирается следующим образом: от 1-го до последнего, по достижении последнего символа снова выбирается первый символ пароля и т.д.. Пароль (от 1 до 10 символов) и выбор режима работы (кодирование / декодирование) вводятся с клавиатуры.
28. Составить программу, которая вводит два символа с клавиатуры и передает их функции packChar, которая упаковывает их в одну переменную типа unsigned. Программа должна выводить исходные символы и результат в десятичном и двоичном представлении.
29. Составить функцию unpackInt, которая принимает переменную типа
unsigned long и распаковывает из нее два двухбайтовых целых числа. Программа должна печатать исходную переменную и полученные числа в десятичном и двоичном представлении.
30. Составить функцию, которая меняет местами старший и младший полубайты в заданном в качестве параметра символе. Использовать эту функцию в программе, кодирующей текстовый файл, путем перестановки полубайтов в каждом символе текстового файла. Предусмотреть возможность декодирования.
Режим работы (кодирование / декодирование) вводятся с клавиатуры.
31. Дан массив из 10 символов. Составить программу, инвертирующую порядок бит в байтах.
32. В строке символов переставить местами значения четных и нечетных битов.
33. Задано целое число. Используя побитовые операции, сформировать код символа, образованный битами с 2-го по 9. Результат представить в 16-ричном формате и вывести этот символ.
34. Даны 2 массива по 10 целых чисел.Сравниваются поразрядно соответствующие элементы массивов.Сформировать новый массив, элементами которого являются числа, содержащие единицы в тех битах, которые соответствуют совпадающим разрядам операндов, и нули, если соответствующие разряды операндов имеют различные значения. Результаты представить в 10-ичном и 16-ричнои форматах.
35. Задано целое число х. Составить программу, которая циклически сдвигает х влево на n разрядов.
36. Перемножить элементы массива целых чисел, коды которых содержат в 6-м бите 0. Из результата выделить младший байт и определить символ, которому он соответствует(если он существует).
37. Дан массив из 10 целых чисел. Инвертировать биты всех положительных чисел (кроме знакового бита) и найти сумму элементов полученного массива. Определить, содержит ли результат 1 в битах 2 и 4.
38. Дан массив из 10 целых чисел. Инвертировать биты младших полубайтов всех элементов массива и найти сумму элементов полученного массива.
39. Составить программу, кодирующую строку символов путем перестановки первого и последнего бито в байте, 2-го и предпоследнего и т.д. Предксмотреть возможность декодирования..
40. Задано целое число. Используя побитовые операции, сформировать код символа, образованный битами с 3-го по 10. Результат представить в 16-ричном формате и вывести этот символ.