task21
unknown
c_cpp
2 years ago
1.7 kB
6
Indexable
#include <iostream> #include <locale.h> /*21. Дана квадратная вещественная матрица размерности n x n. Найти скалярное произведение строки на столбец, на пересечении которых находится последний минимальный элемент матрицы. */ double** allocateMemSq(int n) { double** a = new double*[n]; for (int i = 0; i < n; i++) { a[i] = new double[n]; } return a; } void deleteMem(double** a, int n) { for (int i = 0; i < n; i++) { delete[] a[i]; } delete[] a; } double scalarProd(double** a,int n, int line, int column) { double prod = 0; for (int k = 0; k < n; k++) { prod += a[line][k] * a[k][column]; } return prod; } void lastMinIndex(double** a, int n, int& lastMinL, int& lastMinC) { lastMinL = lastMinC = 0; double lastMin = a[0][0]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (a[i][j] <= lastMin) { lastMinL = i; lastMinC = j; } } } } int main() { setlocale(LC_ALL, ""); printf("Введите порядок матрицы: "); int n; scanf_s("%d", &n); double** arr = allocateMemSq(n); printf("Введите элементы матрицы:\n"); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) scanf_s("%lf", &arr[i][j]); } int l,c; lastMinIndex(arr, n, l, c); double res = scalarProd(arr, n, l, c); printf("Скалярное произведение строки на столбец, на пересечении которых находится последний минимальный элемент матрицы, равно: %lf\n", res); deleteMem(arr, n); return 0; }
Editor is loading...
Leave a Comment