Реализация алгоритмов задач второго типа
Задача 1.В матрице X ={хij}3х6 вещественных чисел первый элемент каждой строки поменять местами с минимальным элементом этой строки. Вывести матрицу X после обмена. ( Для заполнения матрицы воспользуемся датчиком случайных чисел).
X[i][jmin]=X[i][0]
X[i][0]=min
|
X[i][jmin]=X[i][0]
X[i][0]=min
|
X[i][jmin]=X[i][0]
X[i][0]=min
|
Текст программы:
#include "stdafx.h"
#include<math.h>
void main()
{
float X[3][6]; // описание матрицы X
int i,j,jmin;
float min;
for(i=0; i<3; i++) /* заполнение матрицы случайными числами*/
for (j= 0; j<6; j++)
X[i][j]=rand()/100;
printf(" матрица X\n");
for(i=0; i<3; i++) //вывод матрицы до перестановки
{
for (j=0; j<6; j++) printf("%8.2f",X[i][j]);
printf("\n");
}
for(i=0; i<3; i++) //цикл по строкам
{
min=+1E6; // установка начального значения min
for (j=0; j<6; j++) //цикл по столбцам
if (X[i][j]<min) // поиск минимума
{
min=X[i][j];
jmin=j;
}
X[i][jmin]=X[i][0]; // перестановка первого элемента
X[i][0]=min; // матрицы с наименьшим
}
for(i=0; i<3; i++) //вывод матрицы после перестановки
{
for (j=0; j<6; j++) printf("%8.2f",X[i][j]);
printf("\n");
}
}
Задача 2.Дана матрица вещественных чисел С = {сij}8х4. Вычислить среднее арифметическое каждого столбца. Результат оформить в виде одномерного массива S = {sj};j = .
#include "stdafx.h"
void main()
{ float C[8][4];
float S[4];
int i, j;
printf("Введите матрицу С:\n");
for(i=0; i<8; i++)
for (j= 0; j<4; j++)
scanf("%f",&C[i][j]);
for (j= 0; j<4; j++)
{
S[j]=0; //начальная установка элемента массива для сумм
for(i=0; i<8; i++)
S[j]= S[j] + C[i][j]; //накопление суммы j-го столбца
S[j]=S[j]/8; //вычисление среднего значения суммы j столбца
}
for (j= 0; j<4; j++) printf("%8.2f",S[j]); // вывод всех сумм
printf("\n");
}
В приведенной выше программе для вычисления каждого элемента S[j] организован двойной цикл, в котором индекс j является внешним параметром цикла, а индекс i - внутренним.
Приведем вариант программы без использования одномерного массива S.
#include "stdafx.h"
void main()
{ float C[8][4];
float S;
int i, j;
printf("Введите матрицу С:\n");
for(i=0; i<8; i++)
for (j= 0; j<4; j++)
scanf("%f",&C[i][j]);
for (j= 0; j<4; j++)
{
S=0;
for(i=0; i<8; i++)
S= S + C[i][j];
S = S/8;
printf("Среднее арифметическое %d-го столбца=%8.2f\n", j, S);
}
}