Сформировать вектор из суммы наибольших и наименьших значений элементов столбцов матрицы - C (СИ)
Формулировка задачи:
Добрый день.
Помогите, пожалуйста.
Задана квадратная матрица размером N x N (N<=10), состоящая из действительных элементов. Сформировать вектор из суммы наибольших и наименьших значений элементов столбцов.
Проблема в том, что задачку надо реализовать с помощью указателей. Где-то с ними и путаюсь#include<stdio.h> #include<math.h> #include<locale.h> #include <stdlib.h> #include <time.h> int main() { setlocale(LC_ALL, "rus"); srand(time); do { printf("Задана квадратная матрица размером N x N (N<=10), состоящая из действительных элементов.\n Сформировать вектор из суммы наибольших и наименьших значений элементов столбцов.\n"); float mas[10][10]; int i, k; // float(*pMas)[10][10]; float *pMin[10],*pMax[10],*pSum[10]; //заполняем массив printf("________________________________________________________________\n"); for (i = 0; i < 10; i++) { printf("\n"); for (k = 0; k < 10; k++) { mas[i][k] = (-1000 + rand() % 2000) / 100.0; if (mas[i][k] >= 0) printf(" "); printf("%.2f ", mas[i][k]); } } printf("\n"); printf("________________________________________________________________\n"); //начинаем искать минимальные и максимальные значения в столбцах и обрабатывать их float min = 0, max = 0, sum = 0; float vect[10]; printf(" "); for (k = 0; k < 10; k++)//строки { for (i = 0; i < 10; i++)//столбцы { if (mas[i][k] > max) *pMax[i] = &mas[i][k]; if (mas[i][k] < min) *pMin[i]= &mas[i][k]; } *pSum[k] = *pMin[k] + *pMax[k]; vect[k] = *pSum[k]; printf("в столбце %i: min=%.2f , max=%.2f ,sum=%.2f \n ", k, *pMin, *pMax, *pSum); min = 0; max = 0; } printf("________________________________________________________________\n"); //выводим полученный вектор printf("получили вектор: \n ["); for (k = 0; k < 10; k++) printf("%.2f; ", vect[k]); printf("]\n"); } while (getch() != 27); system("pause"); return 0; }
Решение задачи: «Сформировать вектор из суммы наибольших и наименьших значений элементов столбцов матрицы»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 10 int main() { float mas[N][N]; float vect[N]; int i, k; srand(time(NULL)); printf("Задана квадратная матрица размером N x N (N<=10), состоящая из действительных элементов.\n Сформировать вектор из суммы наибольших и наименьших значений элементов столбцов.\n"); printf("<br>\n"); for (i = 0; i < N; i++) { printf("\n"); for (k = 0; k < N; k++) { mas[i][k] = (-1000 + rand() % 2000) / 100.0; if (mas[i][k] >= 0) printf(" "); printf("%.2f ", mas[i][k]); } } printf("\n"); printf("<br>\n"); for (k = 0; k < N; k++) { float* fp_min = &mas[0][k]; float* fp_max = &mas[0][k]; float* fp_cur = &mas[0][k]; for (i = 1; i < N; i++) { if(*fp_min > *fp_cur) fp_min = fp_cur; if(*fp_max < *fp_cur) fp_max = fp_cur; fp_cur = &mas[i][k]; } vect[k] = *fp_min + *fp_max; } printf("<br>\n"); printf("получили вектор: \n ["); for (k = 0; k < 10; k++) printf("%.2f; ", vect[k]); printf("]\n"); return 0; }
Объяснение кода листинга программы
В этом коде:
- Объявлены матрица и вектор.
- Задается размер матрицы N.
- Задаются начальные значения для элементов матрицы.
- Вычисляются минимальное и максимальное значение в каждом столбце матрицы.
- Вектор формируется как сумма минимального и максимального значения в каждом столбце.
- Выводится матрица.
- Выводится вектор.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д