Все четные элементы массива инвертировать умножением на -1 - C (СИ) (72174)
Формулировка задачи:
Ввести с клавиатуры количество элементов массива N, потом сами элементы массива – целые числа. Все четные элементы инвертировать умножением на -1. Вывести получившийся массив.
Требуется написать программу, осуществляющую работу с массивами, использующую функции. Требуется реализовать как минимум следующий набор функций:
InputArray – для ввода массива с клавиатуры
OutputArray – для вывода массива на экран
UpdateArray – для выполнения заданных операций над массивом.
Функция main () {} должна обеспечивать вызов этих функций. Массив должен передаваться в функцию в качестве параметра.
Листинг программы
- #include <stdio.h>
- #include <conio.h>
- int main ();
- int InputArray (int arr[])
- {
- int n; //Количество элементов
- scanf ("%d", &n);
- for (int i = 0; i < n; i++)
- {
- scanf ("%d", &arr [i]); //Ввод элемента массива
- }
- _getch ();
- return n; //Возвращаем количество элементов
- }
- int main();
- int OutputArray (int arr[])
- {
- int arr[10];
- int n = InputArray(arr); //Ввод масива a и количества элементов
- for (int i = 0; i < n; i++)
- {
- printf ("%d", &arr[i], i++);
- }
- _getch ();
- return n;
- }
- int main ();
- int UpdateArray (int arr [10])
- {
- int n;
- for(int i=0;i<n;i++)
- printf("%d ", arr[i]);
- for (int i = 0; i < n; i= i+1)
- {
- if (arr [i]%2 == 0)
- arr [i] *= -1;
- }
- printf("\n Полученный массив:\n\n");
- for(int i = 0;i < n; i++)
- printf("%d ", arr [i]);
- _getch ();
- return 0;
- }
Решение задачи: «Все четные элементы массива инвертировать умножением на -1»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- void InputArray(int arr[], unsigned size) {
- if (size && (scanf("%d", arr) == 1)) {
- InputArray(arr + 1, size - 1);
- }
- }
- void OutputArray(int arr[], unsigned size) {
- if (size && (0 < printf("%d ", *arr))) {
- OutputArray(arr + 1, size - 1);
- }
- }
- void UpdateArray(int arr[], unsigned size) {
- if (size) {
- if (*arr % 2 == 0) {
- *arr *= -1;
- }
- UpdateArray(arr + 1, size - 1);
- }
- }
- int main() {
- int* arr;
- unsigned n;
- if ((scanf("%u", &n) != 1) || (arr = malloc(sizeof(int) * n)) == NULL) {
- return EXIT_FAILURE;
- }
- InputArray(arr, n);
- UpdateArray(arr, n);
- OutputArray(arr, n);
- return EXIT_SUCCESS;
- }
Объяснение кода листинга программы
В данном коде представлена реализация алгоритма инвертирования всех четных элементов в массиве с помощью языка программирования C. Список действий, выполняемых в данном коде:
- Ввод размера массива и его заполнение:
- Сначала пользователю предлагается ввести размер массива с помощью функции
scanf()
. - Если ввод корректен, то вызывается функция
malloc()
, которая выделяет память под массив заданного размера. - Затем вызывается функция
InputArray()
, которая осуществляет ввод элементов массива. - После заполнения массива вызывается функция
UpdateArray()
, которая инвертирует все четные элементы массива. - Наконец, вызывается функция
OutputArray()
, которая выводит элементы массива на экран.
- Сначала пользователю предлагается ввести размер массива с помощью функции
- Алгоритм инвертирования четных элементов:
- Четность каждого элемента проверяется с помощью оператора
%
(остаток от деления). - Если элемент четный, то он умножается на
-1
с помощью оператора умножения*=
. - Затем функция
UpdateArray()
рекурсивно вызывается для следующего элемента массива.
- Четность каждого элемента проверяется с помощью оператора
- Ошибочные условия и выход из программы:
- Если пользователь вводит некорректный размер массива или не предоставляет достаточно памяти, то программа завершается с кодом ошибки
EXIT_FAILURE
. - Если в процессе выделения памяти произошла ошибка, то программа также завершается с кодом ошибки
EXIT_FAILURE
. - В случае успешного выполнения всех операций программа завершается с кодом успеха
EXIT_SUCCESS
.
- Если пользователь вводит некорректный размер массива или не предоставляет достаточно памяти, то программа завершается с кодом ошибки
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д