Из нескольких массивов сформировать матрицу - 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. Алгоритм действий следующий:
- Выполняется операция выделения памяти под массив Z с помощью функции malloc. В качестве аргумента функции передается размер памяти, который вычисляется как произведение трех (3) на значение переменной n. Значение переменной n передается в функцию malloc без изменений, так как она ожидает его в таком виде.
- Результат операции присваивается переменной Z. Значение переменной Z будет являться адресом начала выделенной памяти. Пример кода:
- Z[i] = (float)malloc(3 n* sizeof(float)); В данном коде переменная Z используется как индекс для доступа к элементам массива. Значение переменной i используется как индекс для доступа к элементам массива Z. Значение переменной n определяет размер массива, который будет выделен для каждого элемента массива Z.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д