Упорядочить элементы столбцов матрицы по возрастанию их значений методом выбора - C (СИ)
Формулировка задачи:
Составить блок-схему алгоритма и программу на языке С согласно с заданием, полученным от преподавателя по таблице 1:
Заданную прямоугольную матрицу A={aij} отсортировать по указанному алгоритму;
Для отсортированной матрицы найти значения функции F(fi(aij)); алгоритм сортировки и вычисления fi(aij) оформить в виде функций;
Элементы матрицы вводить с клавиатуры;
Программа должна вывести на экран отсортированную матрицу, все значения fi(aij) и значения функции F(fi(aij)).
Таблица 1
3 Упорядочить элементы столбцов матрицы по возрастанию их значений методом выбора fi(aij) - сумма элементов в каждом рядке матрицы;
F(fi(aij)) - среднее геометрическое значение fi(aij)
2 0 33 -1 -21
78 7 -4 -3 11
-2 -7 -1 -9 0
13 61 60 42 -10
1 0 4 0 16
сама программа есть, но тут что-то с переменнми
Скласти блок-схему алгоритму та програму мовою Cі згідно з завданням, отриманим від викладача за табл. 1: задану прямокутну матрицю A={aij} відсортувати за вказаним алгоритмом; для відсортованої матриці знайти значення функції F(fi(aij)); алгоритм сортування і обчислення fi(aij) оформити у вигляді функції; елементи матриці вводити з клавіатури; програма повинна вивести на екран відсортовану матрицю, всі значення fi(aij) та значення функції F(fi(aij)).
Таблиця 1
3 Впорядкувати елементи стовпців матриці за зростанням їх значень методом вибору fi(aij)-сума елементів у кожному рядку матриці; F(fi(aij))-середнє геометричне значення fi(aij)
2 0 33 -1 -21
78 7 -4 -3 11
-2 -7 -1 -9 0
13 61 60 42 -10
1 0 4 0 16
сама програма є, але тут шось з зміннними
#include<stdio.h> #include"stdafx.h" #include<math.h> #include<conio.h> #define n 5 void vvid(int element[n][n]); void metod_vibory(int element[n][n]); void suma(int element[n][n]); void heometruchne(int element[n][n]); void main() { int element[n][n]; vvid(element); metod_vibory(element); suma(element); heometruchne(element); } /*ввід матриці*/ /*ввод матрицы*/ void vvid(int element[n][n]) { int i,j,k,f,pos; for (i=0; i<n; i++) { for (j=0; j<n; j++) { printf("element[%d][%d] =", i+1, j+1); scanf_s("%d", element[i][j]); } } for (i=0; i<n; i++) { for (j=0; j<n; j++) printf(" %i\t", element[i][j]); printf("\n"); } _getch(); } /* впорядкування елементів її стовпців за зростаням їхніх значень методом вибору */ /* сортировка элементов ее столбцов по возрастанию их значений методом выбора */ void metod_vibory(int element[n][n]) { int i,j,pos,p,f; for (j=0; j<n; j++) for (i=0; i<n-1; i++) { int pos=i; for(p=i+1; p<n; p++) if(element[pos][j] > element[p][j]); pos=p; f=element[pos][j]; element[pos][j]=element[i][j]; element[i][j]=f; } for(i=0; i<n; i++) { for(j=0; j<n; j++) printf("%i\t", element[i][j]); printf("\n"); } _getch(); } /* обчисленя fi(aij)-суми елементів у кожному рядку матриці */ /* вычисление fi(aij) - суммы элементов в каждом рядке матрицы */ void suma(int element[n][n]) { int i, j; double suma; suma=0; for(i=0; i<n; i++) { { for(j=0; j<n; j++) suma=suma+element[i][j]; } printf(" suma elemetiv = %if",suma); printf("\n"); suma=0; } _getch(); } /* обчисленя F(fi(aij))-середнього геометричного значення fi(aij)*/ /* вычисление F(fi(aij)) - среднего геометричного значения fi(aij)*/ void heometruchne(int element[n][n]) { int i,j; double dobutok, serheom; dobutok=i; { for(i=0; i<n; i++); { { for(j=0; j<n; j++) dobutok=dobutok*element[i][j]; serheom=pow(dobutok, (double)i/n); } printf(" seredne heometrichne znachennya = %lf",serheom); printf("\n"); dobutok=i; } } _getch(); }
Решение задачи: «Упорядочить элементы столбцов матрицы по возрастанию их значений методом выбора»
textual
Листинг программы
#include<stdio.h> #include<math.h> #include<conio.h> #define n 5 void vvid(int element[n][n]); void metod_vibory(int element[n][n]); void suma(int element[n][n]); void heometruchne(int element[n][n]); void main() { int element[n][n]; vvid(element); metod_vibory(element); suma(element); heometruchne(element); } /*ввід матриці*/ /*ввод матрицы*/ void vvid(int element[n][n]) { int i,j,k,f,pos; for (i=0; i<n; i++) { for (j=0; j<n; j++) { printf("element[%d][%d] =", i+1, j+1); scanf_s("%d", &element[i][j]);///необходим & перед element[i][j] } } for (i=0; i<n; i++) { for (j=0; j<n; j++) printf(" %i\t", element[i][j]); printf("\n"); } _getch(); } /* впорядкування елементів її стовпців за зростаням їхніх значень методом вибору */ /* сортировка элементов ее столбцов по возрастанию их значений методом выбора */ void metod_vibory(int element[n][n]) { int i,j,pos,p,f; for (j=0; j<n; j++) for (i=0; i<n-1; i++) { int pos=i; for(p=i+1; p<n-1; p++) if(element[pos][j] > element[p][j]) { //ошибка что-бы в после проверки if выполнялоси несколько команд надо {} pos=p; f=element[pos][j]; element[pos][j]=element[i][j]; element[i][j]=f; } } for(i=0; i<n; i++) { for(j=0; j<n; j++) printf("%i\t", element[i][j]); printf("\n"); } _getch(); } /* обчисленя fi(aij)-суми елементів у кожному рядку матриці */ /* вычисление fi(aij) - суммы элементов в каждом рядке матрицы */ void suma(int element[n][n]) { int i, j; double suma; suma=0; for(i=0; i<n; i++) { { for(j=0; j<n; j++) suma=suma+element[i][j]; } printf(" suma elemetiv = %lf",suma);//вывод double используется %lf printf("\n"); suma=0; } _getch(); } /* обчисленя F(fi(aij))-середнього геометричного значення fi(aij)*/ /* вычисление F(fi(aij)) - среднего геометричного значения fi(aij)*/ void heometruchne(int element[n][n]) { int i=1,j; double dobutok, serheom; dobutok=i; //используется неинициализированная переменная { for(i=0; i<n; i++); { { for(j=0; j<n; j++) dobutok=dobutok*element[i][j]; serheom=pow(dobutok, (double)i/n); } printf(" seredne heometrichne znachennya = %lf",serheom); printf("\n"); dobutok=i; } } _getch(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д