Массив: Определить произведение элементов в тех строках, которые не содержат нулевых элементов. - C (СИ)

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

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

Дана вещественная прямоугольная матрица. Определить произведение элементов в тех строках, которые не содержат нулевых элементов.

Решение задачи: «Массив: Определить произведение элементов в тех строках, которые не содержат нулевых элементов.»

textual
Листинг программы
#include "stdafx.h"
#include <stdlib.h>
#include <time.h>
 
int main()
{
    srand(time(0));
    int n, m; printf("N, M = "); scanf_s("%i %i", &n, &m);
    double** a = (double**)malloc(n * sizeof(double));
    double* mul = (double*)malloc(n * sizeof(double));
    if (a == NULL || mul == NULL) return -1;
    for (int i = 0; i < n; i++) {
        a[i] = (double*)malloc(n * sizeof(double));
        if (a[i] == NULL) return -1;
        mul[i] = 1.0;
        for (int j = 0; j < m; j++) {
            a[i][j] = (double)(rand()) / RAND_MAX * (10) - 5;
            mul[i] *= a[i][j];
            printf("%f\t", a[i][j]);
        }
        printf("\n");
    }
    for (int i = 0; i < n; i++)
        if (mul[i] != 0)
            printf("[%i] = %f\n", i, mul[i]);
    for (int i = 0; i < n; i++)
        free(a[i]);
    free(a);
    free(mul);
    getch();
    return 0;
}

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

В этом коде:

  1. Скачивается начальное значение для генератора случайных чисел.
  2. Задаются размер массива и количество строк для произведения элементов.
  3. Выделяется память под массив указателей на double.
  4. Выделяется память под массив double для хранения произведений элементов.
  5. Заполняются массивы a и mul.
  6. Вычисляются произведения элементов для каждой строки.
  7. Выводится произведение элементов для каждой строки.
  8. Освобождается память, выделенная под массив a.
  9. Освобождается память, выделенная под массив mul.
  10. Завершается программа. Пояснение:
    • В строке 2 используется функция scanf_s для считывания двух целых чисел, N и M, в переменные n и m.
    • В строке 3 массив указателей на double** a инициализируется с помощью функции malloc.
    • В строке 4 массив double** mul инициализируется с помощью функции malloc.
    • В строке 5 начинается цикл for для заполнения массива a.
    • В строке 6 каждый элемент массива a инициализируется с помощью функции malloc.
    • В строке 7 каждый элемент массива mul инициализируется единицей.
    • В строке 8 начинается второй цикл for для вычисления произведения элементов.
    • В строке 9 каждый элемент массива a генерируется случайным образом с помощью функции rand и выводится на консоль.
    • В строке 10 каждый элемент массива mul умножается на текущий элемент массива a и выводится на консоль.
    • В строке 11 начинается цикл for для проверки ненулевых элементов массива mul.
    • В строке 12 выводится индекс ненулевого элемента массива mul.
    • В строке 13 выводится значение ненулевого элемента массива mul.
    • В строке 14 начинается освобождение памяти, выделенной под массив a.
    • В строке 15 начинается освобождение памяти, выделенной под массив mul.
    • В строке 16 вызывается функция getch для приостановки программы.
    • В строке 17 программа завершается с кодом 0.

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


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

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

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