Реализация алгоритмов задач первого типа
Задача 1.Дана матрица вещественных чисел А = {аij}4х6.
Вычислить значение Z = Р1/|Р2|, где Р1 и Р2 – произведения положительных и отрицательных элементов матрицы соответственно.
Решение
Эта задача относится к первому типу, так как для вычисления P1 и P2 следует просмотреть всю матрицу. В этой задаче инициализацию переменных P1 и P2 следует сделать один раз перед циклами по индексам элементов матрицы.
Z=P1/|P2| |
Вывод Z |
Конец |
Aij<0 |
P2=P2 . Aij |
P1=P1 . Aij |
Aij>0 |
i = 0, 3 |
P1=0 P2=0 |
J = 0, 5 |
НАЧАЛО |
Ввод матрицы А |
Да |
Да |
Текст программы:
#include "stdafx.h"
#include<math.h>
int main()
{ float A [4][6] ; // описание матрицы А
int i;
int j;
float P1, 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/abs(P2);
printf("Z=%10.2f \n",Z);
return 0;
}
Задача 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>
#include<stdlib.h>
#include<iostream>
int 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);
std::cout<<"L="<<L<<"\n";
return 0;
}
Дата добавления: 2015-02-10; просмотров: 749;