Сформировать вектор из суммы наибольших и наименьших значений элементов столбцов матрицы - 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.
- Задаются начальные значения для элементов матрицы.
- Вычисляются минимальное и максимальное значение в каждом столбце матрицы.
- Вектор формируется как сумма минимального и максимального значения в каждом столбце.
- Выводится матрица.
- Выводится вектор.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д