Все четные элементы массива инвертировать умножением на -1 - C (СИ) (72174)

Узнай цену своей работы

Формулировка задачи:

Ввести с клавиатуры количество элементов массива N, потом сами элементы массива – целые числа. Все четные элементы инвертировать умножением на -1. Вывести получившийся массив. Требуется написать программу, осуществляющую работу с массивами, использующую функции. Требуется реализовать как минимум следующий набор функций: InputArray – для ввода массива с клавиатуры OutputArray – для вывода массива на экран UpdateArray – для выполнения заданных операций над массивом. Функция main () {} должна обеспечивать вызов этих функций. Массив должен передаваться в функцию в качестве параметра.
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. int main ();
  4. int InputArray (int arr[])
  5. {
  6. int n; //Количество элементов
  7. scanf ("%d", &n);
  8. for (int i = 0; i < n; i++)
  9. {
  10. scanf ("%d", &arr [i]); //Ввод элемента массива
  11. }
  12. _getch ();
  13. return n; //Возвращаем количество элементов
  14. }
  15. int main();
  16. int OutputArray (int arr[])
  17. {
  18. int arr[10];
  19. int n = InputArray(arr); //Ввод масива a и количества элементов
  20. for (int i = 0; i < n; i++)
  21. {
  22. printf ("%d", &arr[i], i++);
  23. }
  24. _getch ();
  25. return n;
  26. }
  27. int main ();
  28. int UpdateArray (int arr [10])
  29. {
  30. int n;
  31. for(int i=0;i<n;i++)
  32. printf("%d ", arr[i]);
  33. for (int i = 0; i < n; i= i+1)
  34. {
  35. if (arr [i]%2 == 0)
  36. arr [i] *= -1;
  37. }
  38. printf("\n Полученный массив:\n\n");
  39. for(int i = 0;i < n; i++)
  40. printf("%d ", arr [i]);
  41. _getch ();
  42. return 0;
  43. }

Решение задачи: «Все четные элементы массива инвертировать умножением на -1»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void InputArray(int arr[], unsigned size) {
  5.     if (size && (scanf("%d", arr) == 1)) {
  6.         InputArray(arr + 1, size - 1);
  7.     }
  8. }
  9.  
  10. void OutputArray(int arr[], unsigned size) {
  11.     if (size && (0 < printf("%d ", *arr))) {
  12.         OutputArray(arr + 1, size - 1);
  13.     }
  14. }
  15.  
  16. void UpdateArray(int arr[], unsigned size) {
  17.     if (size) {
  18.         if (*arr % 2 == 0) {
  19.             *arr *= -1;
  20.         }
  21.         UpdateArray(arr + 1, size - 1);
  22.     }
  23. }
  24.  
  25. int main() {
  26.     int* arr;
  27.     unsigned n;
  28.     if ((scanf("%u", &n) != 1) || (arr = malloc(sizeof(int) * n)) == NULL) {
  29.         return EXIT_FAILURE;
  30.     }
  31.  
  32.     InputArray(arr, n);
  33.     UpdateArray(arr, n);
  34.     OutputArray(arr, n);
  35.  
  36.     return EXIT_SUCCESS;
  37. }

Объяснение кода листинга программы

В данном коде представлена реализация алгоритма инвертирования всех четных элементов в массиве с помощью языка программирования C. Список действий, выполняемых в данном коде:

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

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


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

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

13   голосов , оценка 4.077 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы