Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Реализация алгоритмов задач второго типа




Реализация алгоритмов задач первого типа

Задача 1. Дана матрица вещественных чисел А = {аij}4х6.
Вычислить значение Z = Р1/|Р2|, где Р1 и Р2 – произведения положительных и отрицательных элементов матрицы соответственно.

Z=P1/|P2|
Вывод Z
Конец
Aij<0  
P2=P2 . Aij  
P1=P1 . Aij
Aij>0
i = 0, 3
P1=0 P2=0
J = 0, 5
НАЧАЛО
Ввод матрицы А
Да
Да
P2=P2 . Aij  
Aij<0  
Да
P1=P1 . Aij
Да
Aij>0
i = 0, 3
J = 0, 5
P1=0 P2=0
НАЧАЛО
Ввод матрицы А

 


Текст программы:

#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|.

Для заполнения матрицы воспользуемся датчиком случайных чисел.

 

L = | L1 – L2 |
Вывод L
Конец
i< j  
L2 = L2 + 1  
L1 = L1 + 1
Bij = 0
i = 0, 4
L1=0 L2=0
J = 0, 4
НАЧАЛО
Ввод матрицы B
Да
i > j

 

 


Текст программы:

#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 после обмена. (Для заполнения матрицы воспользуемся датчиком случайных чисел).

Да
X[i][jmin]=X[i][0] X[i][0]=min
Х[i][j]<min  
min=X[i][j] jmin=j    
i = 0, 3
J = 0, 6
НАЧАЛО
Вывод Матрицы Х
Инициализация матрицы Х
min=106
НАЧАЛО
Вывод Матрицы Х
Инициализация матрицы Х
i = 0, 3
min=106
НАЧАЛО
Вывод Матрицы Х
Инициализация матрицы Х
Да
Х[i][j]<min  
J = 0, 6
i = 0, 3
min=106
НАЧАЛО
Вывод Матрицы Х
Инициализация матрицы Х
Да
Х[i][j]<min  
J = 0, 6
i = 0, 3
min=106
НАЧАЛО
Вывод Матрицы Х
Инициализация матрицы Х
min=X[i][j] jmin=j    
Да
Х[i][j]<min  
J = 0, 6
i = 0, 3
min=106
НАЧАЛО
Вывод Матрицы Х
Инициализация матрицы Х
min=X[i][j] jmin=j    
Да
Х[i][j]<min  
J = 0, 6
i = 0, 3
min=106
НАЧАЛО
Вывод Матрицы Х
Инициализация матрицы Х
min=X[i][j] jmin=j    
Да
Х[i][j]<min  
J = 0, 6
i = 0, 3
min=106
НАЧАЛО
Вывод Матрицы Х
Инициализация матрицы Х
X[i][jmin]=X[i][0] X[i][0]=min
min=X[i][j] jmin=j    
Да
Х[i][j]<min  
J = 0, 6
i = 0, 3
min=106
НАЧАЛО
Вывод Матрицы Х
Инициализация матрицы Х
Вывод матрицы Х
Конец
X[i][jmin]=X[i][0] X[i][0]=min
min=X[i][j] jmin=j    
Да
Х[i][j]<min  
J = 0, 6
i = 0, 3
min=106
НАЧАЛО
Вывод Матрицы Х
Инициализация матрицы Х

 

 


Текст программы:

#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);

}

}




Поделиться с друзьями:


Дата добавления: 2014-12-26; Просмотров: 338; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.