Сформировать вектор из суммы наибольших и наименьших значений элементов столбцов матрицы - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добрый день. Помогите, пожалуйста.

Задана квадратная матрица размером N x N (N<=10), состоящая из действительных элементов. Сформировать вектор из суммы наибольших и наименьших значений элементов столбцов.

Проблема в том, что задачку надо реализовать с помощью указателей. Где-то с ними и путаюсь
Листинг программы
  1. #include<stdio.h>
  2. #include<math.h>
  3. #include<locale.h>
  4. #include <stdlib.h>
  5. #include <time.h>
  6. int main()
  7. {
  8. setlocale(LC_ALL, "rus");
  9. srand(time);
  10. do
  11. {
  12. printf("Задана квадратная матрица размером N x N (N<=10), состоящая из действительных элементов.\n Сформировать вектор из суммы наибольших и наименьших значений элементов столбцов.\n");
  13. float mas[10][10];
  14. int i, k;
  15. // float(*pMas)[10][10];
  16. float *pMin[10],*pMax[10],*pSum[10];
  17.  
  18. //заполняем массив
  19. printf("________________________________________________________________\n");
  20. for (i = 0; i < 10; i++)
  21. {
  22. printf("\n");
  23. for (k = 0; k < 10; k++)
  24. {
  25. mas[i][k] = (-1000 + rand() % 2000) / 100.0;
  26. if (mas[i][k] >= 0)
  27. printf(" ");
  28. printf("%.2f ", mas[i][k]);
  29. }
  30. }
  31. printf("\n");
  32. printf("________________________________________________________________\n");
  33. //начинаем искать минимальные и максимальные значения в столбцах и обрабатывать их
  34. float min = 0, max = 0, sum = 0;
  35. float vect[10];
  36. printf(" ");
  37. for (k = 0; k < 10; k++)//строки
  38. {
  39. for (i = 0; i < 10; i++)//столбцы
  40. {
  41. if (mas[i][k] > max)
  42. *pMax[i] = &mas[i][k];
  43. if (mas[i][k] < min)
  44. *pMin[i]= &mas[i][k];
  45. }
  46. *pSum[k] = *pMin[k] + *pMax[k];
  47. vect[k] = *pSum[k];
  48. printf("в столбце %i: min=%.2f , max=%.2f ,sum=%.2f \n ", k, *pMin, *pMax, *pSum);
  49. min = 0;
  50. max = 0;
  51. }
  52. printf("________________________________________________________________\n");
  53. //выводим полученный вектор
  54. printf("получили вектор: \n [");
  55. for (k = 0; k < 10; k++)
  56. printf("%.2f; ", vect[k]);
  57. printf("]\n");
  58. } while (getch() != 27);
  59. system("pause");
  60. return 0;
  61. }

Решение задачи: «Сформировать вектор из суммы наибольших и наименьших значений элементов столбцов матрицы»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. #define N 10
  6.  
  7. int main()
  8. {
  9.     float mas[N][N];
  10.     float vect[N];
  11.     int i, k;
  12.  
  13.     srand(time(NULL));
  14.     printf("Задана квадратная матрица  размером N x N (N<=10),  состоящая из действительных элементов.\n Сформировать вектор из суммы наибольших и наименьших значений элементов столбцов.\n");
  15.  
  16.     printf("<br>\n");
  17.     for (i = 0; i < N; i++) {
  18.         printf("\n");
  19.         for (k = 0; k < N; k++) {
  20.             mas[i][k] = (-1000 + rand() % 2000) / 100.0;
  21.  
  22.             if (mas[i][k] >= 0)
  23.                 printf(" ");
  24.             printf("%.2f ", mas[i][k]);
  25.  
  26.         }
  27.     }
  28.     printf("\n");
  29.     printf("<br>\n");
  30.  
  31.     for (k = 0; k < N; k++)
  32.     {
  33.         float* fp_min = &mas[0][k];
  34.         float* fp_max = &mas[0][k];
  35.         float* fp_cur = &mas[0][k];
  36.        
  37.         for (i = 1; i < N; i++)
  38.         {
  39.             if(*fp_min > *fp_cur)
  40.                 fp_min = fp_cur;
  41.             if(*fp_max < *fp_cur)
  42.                 fp_max = fp_cur;
  43.             fp_cur = &mas[i][k];
  44.         }
  45.         vect[k] = *fp_min + *fp_max;
  46.     }
  47.     printf("<br>\n");
  48.  
  49.     printf("получили вектор: \n [");
  50.     for (k = 0; k < 10; k++)
  51.         printf("%.2f; ", vect[k]);
  52.     printf("]\n");
  53.     return 0;
  54. }

Объяснение кода листинга программы

В этом коде:

  1. Объявлены матрица и вектор.
  2. Задается размер матрицы N.
  3. Задаются начальные значения для элементов матрицы.
  4. Вычисляются минимальное и максимальное значение в каждом столбце матрицы.
  5. Вектор формируется как сумма минимального и максимального значения в каждом столбце.
  6. Выводится матрица.
  7. Выводится вектор.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы