Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
инф_техн_метод_указания_КР_211000(З).DOC
Скачиваний:
3
Добавлен:
16.11.2019
Размер:
2.03 Mб
Скачать

Описание переменных

Идентификатор переменной

Тип данных

Функция, выполняемая в программе

определение

ключевое слово

N

целый

int

Размер массива

n

целый

int

Индекс текущего элемента массива

A[n]

вещественный

float

Элемент массива

I_max

целый

int

Индекс максимального элемента массива

I_min

целый

int

Индекс минимального элемента массива

fmax

логический

bool

Флаг поднимается (становится равным 1) , если встретится элемент, значение которого равно максимальному значению

fmin

логический

boo

Флаг поднимается (становится равным 1) , если встретится элемент, значение которого равно минимальному значению

f3

целый

int

Флаг равен -1, если вычисление суммы начинается с элемента, равного минимальному значению, равен +1, если вычисление суммы начинается с элемента, равного максимальному значению,

S

вещественный

float

Сумма элементов массива

Алгоритм решения задачи

Листинг программы

//-----------------------------------------------------------------------------------------------------

#pragma hdrstop

//-----------------------------------------------------------------------------------------------------

#include <conio.h> //библиотека подключения функции getch()

#include <iostream.h> //библиотека для cin и cout

#include <malloc.h> //библиотека для динамического выделения памяти

#include <fstream.h> //библиотека для ввода/вывода в файл

#include <windows.h> //библиотека используется в функции RUS

#include <math.h> //библиотека математических функций

#include <ctype.h> // библиотека проверки принадлежности символов

#include <stdlib.h> // библиотека некоторых стандартных функций

#include <string.h> // библиотека функций работы со строками

//

char bufRus[256];

//-----------------------------------------------------------------------------------------------------

char* RUS(const char*text) //функция поддержки русского языка

{

CharToOem(text,bufRus);

return bufRus;

}

//-----------------------------------------------------------------------------------------------------

#pragma argsused

int main(int argc, char* argv[])

{

//-------- описание переменных ---------------------------------------------------------------

const int N=10;

int n, I_max=0, I_min=0, f3=0;

float A[N], S=0;

bool fmax=0, fmin=0;

//--------- ввод массива -------------------------------------------------------------------------

cout<<RUS("\nВведите массив из ")<<N;

cout<<RUS("элементов\n");

for(n=0; n<N; n++)

{

cout<<RUS("\nВведите A[ ")<<n<<" ] = ";

cin>>A[n];

}

//---------- поиск индексов минимального и максимального элементов -------------

for(n=1; n<N; n++)

{

if( A[n]<A[I_min])

I_min=n;

if( A[n]>A[I_max])

I_max=n;

}

//-------------вычисление суммы между минимумом и максимумом ------------------

if(A[I_min]!=A[I_max])

{

for(n=0; n<N; n++)

{ if(A[n]==A[I_min])

{

fmin=1;

cout<<RUS("\nИндекс минимального элемента массива = ")<<n;

}

if(A[n]==A[I_max])

{

fmax=1;

cout<<RUS("\nИндекс максимального элемента массива = ")<<n;

}

if(fmin==1&&fmax==0)

{ S+=A[n]; f3=-1;}

if(fmin==1&&fmax==1&&f3==-1)

{S-=A[I_min];

cout<<RUS("\nСумма элементов между минимумом и максимумом = ")<<S;

S=0;

f3=0;

fmin=0;

fmax=0;

}

if(fmin==0&&fmax==1)

{S+=A[n];f3=1;}

if(fmin==1&&fmax==1&&f3==1)

{S-=A[I_max];

cout<<RUS("\nСумма элементов между максимумом и минимумом = ")<<S;

S=0;

f3=0;

fmin=0;

fmax=0;

}

}

if(f3==-1)

cout<<RUS("\nНет максимального элемента массива ");

if(f3==1)

cout<<RUS("\nНет минимального элемента массива ");

}

else

cout<<RUS("\nВсе элементы массива имеют одно значение");

//-----------------------------------------------------------------------------------------------------

cout<<RUS("\nНажмите любую клавишу для завершения программы \n");

getch();

return 0;

}

//---------------------------------------------------------------------------

Результаты тестирования программы

ЗАДАНИЕ 2

Условие задачи

Ввести с клавиатуры вещественную матрицу размерностью 44. Определить:

1) максимальный элемент среди элементов, расположенных выше главной диагонали;

2) количество отрицательных элементов в тех столбцах, которые содержат хотя бы один нулевой элемент.

Метод решения задачи

Для поиска максимального элемента среди элементов, расположенных выше главной диагонали, используется следующий прием. Сначала за максимальный элемент принимается элемент с индексом строки равным 0 и индексом столбца равным 1. Он является первым элементом выше главной диагонали, если рассматривать матрицу с левого верхнего угла. Значение этого элемента записывается в переменную Max. Затем, при поиске, перебираются элементы матрицы, расположенные выше главной диагонали: у них индекс строки меньше индекса столбца. Значение каждого элемента сравнивается со значением Max. Если встретиться элемент, значение которого больше Max, то в Max записывается его значение. Таким образом, находится максимальное значение среди элементов матрицы. Далее опять перебираются элементы матрицы, расположенные выше главной диагонали. Если значение элемента равно значению Max, то выводятся индексы его строки и столбца.

Подсчет количества отрицательных элементов в тех столбцах, которые содержат хотя бы один нулевой элемент, можно выполнить следующим образом. Выбирается первый столбец, т.е. задается его индекс j=0. Далее, перебирая индекс строк i, выполняется поиск элементов в этом столбце, равных нулю. Если такой элемент встретится, поднимается флаг f. После поиска, анализируется состояние флага f. Если он равен 1, то в данном столбце выполняется подсчет отрицательных элементов. Далее, те же действия выполняется для следующего столбца.