- •1.Краткий обзор агрегатного типа struct.
- •Intcena;
- •Int main()
- •Int cena;
- •Void vyvod(avto s)
- •Int main()
- •3.Понятие объединения union.
- •Void vyvod(avto s, int I)
- •Int main()
- •Intcena;
- •Int main()
- •Int cena;
- •Intmain()
- •Void reset(); …
- •Void Demo::reset() // определениефункции reset( )
- •9.Пример реализации класса для организации обработки символьной строки.
- •Int demochar::length()
- •Int main()
- •10.Пример реализации класса для организации обработки одномерного массива целочисленных значений.
- •11.Инициализация объектов.
- •Int main()
- •12Указатель this.
- •13.Постоянные функции-члены класса.
- •3. Class avto {
- •15. Int main()
- •14.Массив объектов.
- •3. Class avto {
- •24. Int main() {
- •15.Статические переменные-члены и функции-члены класса.
- •17. Staticint GetSumCena() { return SumCena; };
- •19. Staticint SumCena;
- •16 Дружественные функции.
- •8. Friendvoid GetFields(avto&);
- •17 Класс, содержащий переменную-член типа класс.
- •3. Class Date_Avto {
- •16. Class avto {
- •30. Int main()
- •18 Сложность больших программных систем.
- •19 Пять признаков сложной системы.
- •20 Роль декомпозиции, абстракции, иерархии при построении сложных систем.
- •21 Объектная модель.
- •Ood основывается на объектно-ориентированной декомпозиции;
- •25Пример программы с наследованием классов.
- •3. Class avto {
- •18. Class gruz_avto : public avto {
- •36. Int main(){
- •26 Переопределение функций-членов внутри производного класса.
- •3. Class avto {
- •18. Class gruz_avto : public avto {
- •30. Int main()
- •5.Classint_Matrix// класс для обработки целочисленной матрицы
- •45. Int main()
- •Int main()
- •2. Usingnamespace std;
- •3. Int main()
- •18. Return 0;
- •Int main()
- •20. F.Write((char*)&s,sizeof(s));
- •7. Intcena;
- •21. F.Write((char*)&s,sizeof(s)); };
- •22. F.Close();
- •25. F.Seekg(sizeof(s), ios_base::beg);
- •26. F.Read((char*)&s,sizeof(s));
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.