Из нескольких массивов сформировать матрицу - C (СИ)

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

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

Задание: Даны два динамических одномерных массива X и Y размера N. Сформировать динамическую матрицу Z размера N*3, в которой первый столбец образуют элементы массива X, второй столбец-элементы массива Y, а третий столбец заполнен средними арифметическими значениями соответствующих пар элементов из X и Y вот что у меня получилось. компилятор выводит только первые 19 строк, а потом закрывается наведите пожалуйста на мысль в чем может быть причина
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
 
int main()
{
    int n;
    float **Z, *X, *Y;
 
    printf("Enter n=");
    scanf_s("%d", &n,1);
    X = (float*)malloc(n * sizeof(float));
    if (!X)
        return 1;
    Y = (float*)malloc(n * sizeof(float));
    if (!Y)
        return 1;
    for (int i = 0; i < n; i++)
    {
        *(X + i) = rand() % 200;
        *(Y + i) = rand() % 200;
    }
    printf("\n");
 
    Z = (float**)malloc(n*sizeof(float*));
    for (int i = 0; i<3; i++)
        Z[i] = (float*)malloc(3 * sizeof(float));
    if (!Z)
    {
        printf("ERROR\n");
        return 1;
    }
    printf("\nArray:\n");
    for (int j = 0; j < n; j++)
    {
        for (int i = 0; i<3; i++)
        {
            if (i == 0)
                Z[i][j] = X[j];
            if (i == 1)
                Z[i][j] = Y[j];
            if (i == 2)
                Z[i][j] = (Y[j] + X[j]) / 2;
            printf("%7.1f", Z[i][j]);
        }
        printf("\n");
    }
    for (int i = 0; i < 3; i++)
        free(Z[i]);
    free(Z); free(Y); free(X);
    return 0;
}

Решение задачи: «Из нескольких массивов сформировать матрицу»

textual
Листинг программы
Z[i] = (float*)malloc(3 *n* sizeof(float));

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

В данном коде происходит выделение памяти под массив (матрицу) Z с помощью функции malloc. Алгоритм действий следующий:

  1. Выполняется операция выделения памяти под массив Z с помощью функции malloc. В качестве аргумента функции передается размер памяти, который вычисляется как произведение трех (3) на значение переменной n. Значение переменной n передается в функцию malloc без изменений, так как она ожидает его в таком виде.
  2. Результат операции присваивается переменной Z. Значение переменной Z будет являться адресом начала выделенной памяти. Пример кода:
  3. Z[i] = (float)malloc(3 n* sizeof(float)); В данном коде переменная Z используется как индекс для доступа к элементам массива. Значение переменной i используется как индекс для доступа к элементам массива Z. Значение переменной n определяет размер массива, который будет выделен для каждого элемента массива Z.

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


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

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

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