Дан двумерный массив размером nxn, заполненный числами. Все отрицательные элементы записать в одномерный массив - C (СИ)

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

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

Помогите с решением:

Дан двумерный массив размером nxn, заполненный целыми числами. Все его отрицательные элементы записать в одномерный массив.

Всем заранее большое спасибо.

Решение задачи: «Дан двумерный массив размером nxn, заполненный числами. Все отрицательные элементы записать в одномерный массив»

textual
Листинг программы
#include <time.h>
#include <stdlib.h>
 
int NegativeCount(int** a, int n) {
    int count = 0;
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            if (a[i][j] < 0)
                count++;
    return count;
}
 
int main()
{
    int n;
    srand(time(NULL));
    printf_s("N = "); scanf_s("%d", &n);
    int **a = (int **)malloc(n * sizeof(int *));
    for (int i = 0; i < n; i++) {
        a[i] = (int *)malloc(n * sizeof(int));
        for (int j = 0; j < n; j++) {
            a[i][j] = -10 + rand() % 20;
            printf("%i\t", a[i][j]);
        }
        printf("\n");
    }
    int nb = NegativeCount(a, n), counter = 0;
    int *b = (int *)malloc(nb * sizeof(int *));
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            if (a[i][j] < 0) {
                b[counter] = a[i][j];
                counter++;
            }
    printf("Array: ");
    for (int i = 0; i < nb; i++)
        printf("%i ", b[i]);
    getch();
    return 0;
}

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

  1. Начинается с объявления функции NegativeCount, которая принимает двумерный массив a и его размер n. Функция считает количество отрицательных элементов в массиве и возвращает это число.
  2. В функции main, пользователь вводит размер массива n.
  3. Затем создается двумерный массив a размером nxn с помощью malloc.
  4. Внутренний цикл заполняет этот массив случайными числами от -10 до 10 с шагом 2.
  5. Внешний цикл выводит полученный массив на экран.
  6. Затем вызывается функция NegativeCount, которая считает количество отрицательных элементов в массиве a.
  7. С помощью malloc создается одномерный массив b, который будет содержать все отрицательные элементы из массива a.
  8. Внутренний цикл проходит по всем элементам массива a и если элемент отрицательный, то он копируется в массив b с помощью оператора присваивания.
  9. Увеличивается счетчик counter на единицу.
  10. Выводится на экран массив b.
  11. В конце программы вызывается функция getch, которая ожидает нажатия клавиши.
  12. Программа завершается и возвращает 0.

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


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

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

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