Все четные элементы массива инвертировать умножением на -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
.
- Если пользователь вводит некорректный размер массива или не предоставляет достаточно памяти, то программа завершается с кодом ошибки
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д