Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shprora_po_proge.docx
Скачиваний:
5
Добавлен:
23.09.2019
Размер:
518.78 Кб
Скачать

10.Пример реализации класса для организации обработки одномерного массива целочисленных значений.

В программе определяется класс int_array, в котором предусмотрены два явных конструктора, соответственно для обеспечения ввода целочисленных значений с клавиатуры (1-ый конструктор) и для формирования одномерного целочисленного массива с использованием генератора случайных значений (2-й конструктор).

В классе int_array в качестве закрытых членов определяются поле kl_el для размещения фактического количества элементов в массиве и одномерный целочисленный массив a[max_kl]. Метод Input_kl_el() предназначен для обеспечения ввода значения поля kl_el. Метод Output() обеспечивает вывод значений элементов массива на экран. Для вычисления суммы элементов массива реализован метод Summa_el(), а для вычисления среднего арифметического среди всех элементов – SArifm_el(). Метод Sort() предназначен для формирования на основе исходного массива отсортированного по возрастанию массива. Метод Get_kl_el() обеспечивает доступ к закрытому (возвращает его значение) полю kl_el.

#include <iostream>

#include <stdlib.h>

#include <time.h>

using namespace std;

constintmax_kl=18;

classint_array {

public:

int_array(); // Прототип 1-го конструктора

int_array(int); // Прототип 2-го конструктора

voidInput_kl_el(); // Прототип функции для ввода

// количества элементов массива

voidOutput(); // Прототип функции для вывода массива

intSumma_el(); // Прототип функции для вычисления

// значения суммы элементов массива

doubleSArifm_el(); // Прототип функции для вычисления

// знпчения среднего арифметического

voidSort(int b[max_kl]); // Прототип функции сортировки

// массива

intGet_kl_el() {returnkl_el;} // Метод возвращает

// кол-воэлементов

private: intkl_el;

int a[max_kl];

};

// Определение 1-го конструктора, обеспечивающего ввод

// с клавиатуры целочисленного массива (до 18 элементов)

int_array::int_array()

{ Input_kl_el();

for(inti=0; i<kl_el; i++)

{ cout<< "Vvvedite " <<i<< " element: ";

cin>> a[i]; }

}

// Определение 2-го конструктора, обеспечивающего генерацию

// c помощью ГСЗ целочисленного массива (до 18 элементов)

int_array::int_array(int prom)

{ Input_kl_el();

intmin,max;

cout<< "VVEDITE min,max: ";

cin>> min >> max;

if (max<min) {prom=min; min=max; max=prom;}

srand((unsigned) time(NULL));

for(inti=0; i<kl_el; i++) a[i]=rand()%(max-min+1)+min;

}

voidint_array::Input_kl_el()

{ boolfl=false;

do { cout<< "Vveditekolichestvoelementovmassiva: ";

cin>>kl_el;

if ((kl_el< 1) || (kl_el>max_kl))

{ cout<< "Oshibka v kolichestve"

<<" elementovmassiva!!!" <<endl;

fl=true;}

elsefl=false; }

while (fl);

}

voidint_array::Output() // Метод класса выводит массив на экран

{

for(inti=0; i<kl_el; i++) cout<< a[i] << "; ";

cout<<endl;

}

intint_array::Summa_el()

{

int sum=0;

for(inti=0; i<kl_el; i++) sum+=a[i];

return sum;

}

doubleint_array::SArifm_el()

{

return (double)Summa_el()/kl_el;

}

voidint_array::Sort(int b[max_kl])

{ for (inti=0; i<kl_el; i++) b[i]=a[i];

// Сортировка с помощью прямого выбора

for (int i=0; i < kl_el-1; i++)

for (int j=i+1; j <kl_el; j++)

if (b[i]>b[j])

{int prom=b[i]; b[i]=b[j]; b[j]=prom;}

}

int main()

{ int x[max_kl];

intregim;

cout<< "Vvedite 0 - GSZ ilidrugoechislodlyavvoda"

<< "s klaviaturi: ";

cin>>regim;

if (regim==0)

{

cout<< "Regim GSZ ->" <<endl;

int_arraymassiv(0);

cout<< "Massiv -> "; massiv.Output();

cout<< "Summa elementov = " <<massiv.Summa_el()

<<endl;

cout<< "Sredneearifm = " <<massiv.SArifm_el()

<<endl;

massiv.Sort(x);

for (inti=0; i<massiv.Get_kl_el(); i++)

cout<< x[i] << "; ";

cout<<endl;

}

else

{

cout<< "Regimvvoda s klaviaturi:" <<endl;

int_arraymassiv;

cout<< "Massiv -> "; massiv.Output();

cout<< "Summa elementov = " <<massiv.Summa_el()

<<endl;

cout<< "Sredneearifm = " <<massiv.SArifm_el()

<<endl;

massiv.Sort(x);

for (inti=0; i<massiv.Get_kl_el(); i++)

cout<< x[i] << "; ";

cout<<endl;

}

return 0;

}

В программе внутри функции main() в самом ее начале определяется массив int x[max_kl];, в котором в дальнейшем будут размещены отсортированные значения массива из объекта с именем massiv. Затем определяется целочисленная переменная intregim; и вводится ее значение. Если для переменной regim введено целочисленное значение 0, то выполняется та часть программы, в которой с помощью 2-го конструктора формируется объект massiv класса int_array, а иначе объект massiv класса int_array формируется с помощью 1-го конструктора.

Отметим, что в обоих случаях после формирования объекта massiv предусматривается выполнение следующих операций:

1) вывод сформированного целочисленного массива на экран с помощью метода Output();

2) вывод суммы элементов массива на экран методом Summa_el();

3) вывод среднего арифметического методом SArifm_el();

4) сортировка сформированного массива с помощью метода Sort();

5) вывод отсортированного массива на экран с использованием цикла for.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]