Реализация алгоритмов задач первого типа
Задача 1. Дана матрица вещественных чисел А = {аij}4х6.
Текст программы: #include "stdafx.h" #include<math.h> void main() { float A [4][6]; // описание матрицы А int i; int j; float P1; float P2; float Z; printf("Введите матрицу А\n"); for (i =0; i<4; i++) for (j = 0;j<6; j++) scanf("%f",&A[i][j]); P1=1; // установка начальных значений P2=1; // произведений for (i = 0; i<4; i++) for (j =0; j<6;j++) { if (A[i][j]>0) P1= P1*A[i][j]; // произведение + if (A[i][j]<0) P2 = P2*A[i][j];// произведение - } Z=P1/fabs(P2); printf("Z=%10.2f \n",Z); }
Задача 2. В квадратной целочисленной матрице В= {bij}5х5 вычислить модуль разности между числом нулевых элементов, стоящих ниже главной диагонали, и числом нулевых элементов, стоящих выше главной диагонали. Введем обозначения: L1 – счетчик нулевых элементов ниже главной диагонали; L2 – счетчик нулевых элементов выше главной диагонали; L = |L1 -L2|. Для заполнения матрицы воспользуемся датчиком случайных чисел.
Текст программы: #include "stdafx.h" #include<math.h> void main() { int B[5][5]; /* описание матрицы B */ int i, j, L1, L2, L; for (i = 0; i< 5; i++) for (j = 0;j<5; j++) B[i][j]= floor(rand()/1000.0); L1 = 0; /* инициализация счетчиков L1 и L2 */ L2 = 0; for (i = 0; i< 5; i++) for (j = 0; j< 5; j++) if (B[i][j]==0) /* поиск элементов, равных нулю */
{ if (i>j) L1=L1+1; /* выше главной диагонали */ if (i<j) L2=L2+1; /* ниже главной диагонали */ } L = abs(L1 - L2); printf("L=%d", L); } Реализация алгоритмов задач второго типа Задача 1. В матрице X ={хij}3х6 вещественных чисел первый элемент каждой строки поменять местами с минимальным элементом этой строки. Вывести матрицу X после обмена. (Для заполнения матрицы воспользуемся датчиком случайных чисел).
Текст программы: #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); } } Подпрограммы
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|