Работа №7

Комментарий: перечитайте комментарий к работе №6. 


Вариант 1: вывод объёма памяти в удобочитаемом виде

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

Переменная для хранения введённого пользователем значения должна иметь тип unsigned long (диапазон её допустимых значений в этом случае будет от 0 до 4294967295).

Например:

1. Если пользователь вводит размер в байтах равный 1234567890, то на экране должно отобразиться следующее: 1234567890 B = 1.14 GB.

2. Если пользователь вводит размер в байтах равный 123456789, то на экране должно отобразиться следующее: 123456789 B = 117.73 MB.

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

в виде строки.

Если это сложно – массив символов можно передать в функцию в качестве ещё одного из её аргументов. Если и это сложно – почитайте лекции.


Вариант 2: сумма значений между определёнными элементами массива

Даны 2 массива элементов с плавающей точкой одинакового размера (элементы можно задать прямо в программе при объявлении).

Необходимо:

1. Найти ИНДЕКС первого слева отрицательного элемента в первом массиве (если отрицательных элементов в массиве нет, то принять за искомый минимальный индекс элемента массива);

2. Найти ИНДЕКС первого отрицательного элемента справа во втором массиве (если отрицательных элементов в массиве нет, то принять за искомый индекс последнего элемента массива);

3. Если первый из найденных индексов больше второго – вывести соответствующее сообщение и завершить программу.

4. Найти суммы соответствующих элементов двух массивов между двумя найденными индексами (из п.1 и п.2), записать их в третий массив начиная с его первого элемента (с элемента с индексом 0). Третий массив можно объявить такого же размера, как и каждый из двух исходных.

5. Вывести на экран только те элементы третьего массива, в которые записаны суммы элементов (см. п.4).

Пример:

Массив 1: 1 -2 3 4 5 6 7 -8 -9 0

Массив 2: -1 -2 -3 -4 5 6 -7 8 9 0

Первый отрицательный элемент слева в массиве 1 это элемент -2 с индексом 1. Первый отрицательный элемент справа в массиве 2 это элемент - 7 с индексом 6.

Находим суммы элементов двух массивов с индексами от 1 до 6 включительно, записываем их в массив 3 начиная с элемента с индексом 0 и выводим их на экран, получаем:

-4 0 0 10 12 0

Действия в пунктах 1, 2, 4 и 5 оформить в виде отдельных функций с необходимым для решения задачи числом аргументов и возвращаемыми значениями.


Вариант 3: изменение элементов одномерного массива

Дан одномерный массив элементов целого типа (можно инициализировать при объявлении). Если хотя бы один элемент массива равен 0, то все отрицательные элементы массива заменить их исходными значениями в степени, равной модулю исходного значения, а положительные – значением их квадратного корня (используйте для его нахождения функцию sqrt из кое-какой библиотеки имя которой найдёте сами). В противном случае заменить все значения элементов массива на значения с противоположным знаком. Вывести на экран получившийся массив.

Проверку на наличие 0 в массиве, замену отрицательных элементов на значения в степени их модуля, а также возведение числа в степень оформить в виде отдельных функций.