Все четные элементы массива инвертировать умножением на -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. Список действий, выполняемых в данном коде:

  1. Ввод размера массива и его заполнение:
    • Сначала пользователю предлагается ввести размер массива с помощью функции scanf().
    • Если ввод корректен, то вызывается функция malloc(), которая выделяет память под массив заданного размера.
    • Затем вызывается функция InputArray(), которая осуществляет ввод элементов массива.
    • После заполнения массива вызывается функция UpdateArray(), которая инвертирует все четные элементы массива.
    • Наконец, вызывается функция OutputArray(), которая выводит элементы массива на экран.
  2. Алгоритм инвертирования четных элементов:
    • Четность каждого элемента проверяется с помощью оператора % (остаток от деления).
    • Если элемент четный, то он умножается на -1 с помощью оператора умножения *=.
    • Затем функция UpdateArray() рекурсивно вызывается для следующего элемента массива.
  3. Ошибочные условия и выход из программы:
    • Если пользователь вводит некорректный размер массива или не предоставляет достаточно памяти, то программа завершается с кодом ошибки EXIT_FAILURE.
    • Если в процессе выделения памяти произошла ошибка, то программа также завершается с кодом ошибки EXIT_FAILURE.
    • В случае успешного выполнения всех операций программа завершается с кодом успеха EXIT_SUCCESS.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5
Похожие ответы