Разместить в динамической памяти 2 массива – матрицу размерностью n на n и вектор длины n, с элементами типа long double (значения n и элементы массивов ввести с кон-соли). Написать функцию, вычисляющую произведение данной матрицы на данный вектор (их передать по указателю) и возвращающую указатель на массив-результат. Выдать на консоль значения полученного вектора. Для языка С

18 Мар 2020 в 19:41
246 +1
0
Ответы
1
#include <stdio.h>
#include <stdlib.h>
long double* matrix_vector_mult(long double* matrix, long double* vector, int n) {
long double* result = (long double*)malloc(n * sizeof(long double));
for (int i = 0; i < n; i++) {
result[i] = 0;
for (int j = 0; j < n; j++) {
result[i] += matrix[i * n + j] * vector[j];
}
}
return result;
}
int main() {
int n;
printf("Enter the dimension n of the matrix and vector: ");
scanf("%d", &n);
long double* matrix = (long double*)malloc(n * n * sizeof(long double));
long double* vector = (long double*)malloc(n * sizeof(long double));
printf("Enter the elements of the matrix:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%Lf", &matrix[i * n + j]);
}
}
printf("Enter the elements of the vector:\n");
for (int i = 0; i < n; i++) {
scanf("%Lf", &vector[i]);
}
long double* result = matrix_vector_mult(matrix, vector, n);
printf("Resulting vector after matrix-vector multiplication:\n");
for (int i = 0; i < n; i++) {
printf("%Lf ", result[i]);
}
printf("\n");
free(matrix);
free(vector);
free(result);
return 0;
}

Примечание: Для компиляции программы необходимо использовать компилятор, поддерживающий стандарт C99 или выше (например, gcc с флагом -std=c99).

Программа сначала запрашивает у пользователя размерность n матрицы и вектора, затем вводит элементы матрицы и вектора. После этого вызывается функция matrix_vector_mult для вычисления произведения матрицы на вектор. Результат выводится на консоль. В конце программы освобождаются выделенные участки памяти.

18 Апр 2024 в 16:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир