Как динамически ввести два массива: двумерный и одномерный? - 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));

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

  1. Объявляются две переменные: двумерный массив A и одномерный массив B.
  2. Используется оператор malloc для выделения памяти под двумерный массив A. В качестве аргумента функции malloc используется произведение n на размер одного указателя на int (sizeof(int *)).
  3. С помощью цикла for происходит выделение памяти под каждый элемент массива A. Для каждого элемента массива A используется оператор malloc, чтобы выделить память под одномерный массив размером m.
  4. Выделяется память под одномерный массив B с помощью оператора malloc. Размер памяти, выделяемой под массив B, равен n.

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


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

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

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