Как динамически ввести два массива: двумерный и одномерный? - C (СИ)
Формулировка задачи:
Задача: Создать функцию которая вычисляет скалярное произведение двух указанных строк матрицы
Подскажите, как динамически ввести два массива: двумерный и одномерный, и как в дальнейшем к ним обращаться?
Этот момент в своем коде я и пропустил:#include <stdio.h> #include <stdlib.h> int n,m; int main() { scanf("%d %d",&n,&m); // Считываем размерность массива // * ПОДСКАЖИТЕ КАК ЭТО СДЕЛАТЬ* Вводим динамически двумерный массив A размером [n][m] // * ПОДСКАЖИТЕ КАК ЭТО СДЕЛАТЬ* Вводим динамически одномерный мессив B в котором будем хранить искомое скалярное произв. 2х строк // Считываем саму матрицу for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) scanf("$d",&A[i][j]); int i1,i2; scanf("%d %d",&i1,&i2); // Считали номера строк(которые нужно перемножить) // Перемножаем и записываем искомую строку в массив B for (j=1;i<=m;j++) B[j]=A[i1][j]*A[i2][j]; // Выводим иск. строку for (j=1;j<=m;j++) printf("%d",B[j]); system ("pause"); }
Решение задачи: «Как динамически ввести два массива: двумерный и одномерный?»
textual
Листинг программы
int **A, *B; .... A = (int **) malloc(n*sizeof(int *)); for(i=0; i< n; i++) A[i] = (int *)malloc(m*sizeof(int)); B = (int *)malloc(n*sizeof(int));
Объяснение кода листинга программы
- Объявляются две переменные: двумерный массив A и одномерный массив B.
- Используется оператор malloc для выделения памяти под двумерный массив A. В качестве аргумента функции malloc используется произведение n на размер одного указателя на int (sizeof(int *)).
- С помощью цикла for происходит выделение памяти под каждый элемент массива A. Для каждого элемента массива A используется оператор malloc, чтобы выделить память под одномерный массив размером m.
- Выделяется память под одномерный массив B с помощью оператора malloc. Размер памяти, выделяемой под массив B, равен n.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д