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

18 Мар 2020 в 19:41
219 +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 Апр в 16:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 829 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир