Упорядочить элементы столбцов матрицы по возрастанию их значений методом выбора - 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();
}