- •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));
9.Пример реализации класса для организации обработки символьной строки.
В программе определяется класс demochar, в котором предусмотрены два явных конструктора, соответственно для обеспечения ввода строки с клавиатуры (1-ый конструктор) и для формирования строки с использованием генератора случайных значений (2-й конструктор).
В классе demochar в качестве закрытого члена определяется переменная-член (поле)st[dlina], а для вычисления длины этой строки предусматривается функция-член (метод)length().
#include<iostream>
#include<stdlib.h>
#include<time.h>
usingnamespace std;
constint dlina=121;
// объявлениекласса demochar
class demochar {
public: demochar(); // прототип 1-гоконструктора
demochar(int,int,int); // прототип 2-гоконструктора
intlength(); // прототип функции для вычисления
// длиныстроки st класса demochar
private: char st[dlina];
};
// Определение 1-го конструктора, обеспечивающего ввод
// строки длиной до 120 символов с клавиатуры
demochar::demochar()
{ bool fl=false;
do { cout <<"Vvedite stroku:"; cin >> st;
if (length()>=dlina)
{ cout <<"Error!!! Vvedena slishkom dlinnaya stroka!"; fl=true;}
else fl=false; }
while (fl);
}
// Определение 2-го конструктора, обеспечивающего генерацию
// c помощью ГСЗстрокидлинойдо 120 символов
demochar::demochar(int dl, int min, int max)
{ srand((unsigned) time(NULL));
// !!! Цикл для формирования символьной строки с помощью ГСЗ
// Здесь используется автоматическое преобразование значения
// типа int в значение типа char
for(int i=0; i<dl; i++) st[i]=rand()%(max-min+1)+min;
st[dl]='\0';
cout <<"GSZ stroka:"<< st << endl;
}
// Определение функции-члена класса, которая вычисляет длину
// переменной-члена st
Int demochar::length()
{ int kl=0;
while (st[kl]!='\0') kl++;
return kl;
}
Int main()
{ int m;
cout <<"Vvedite 0 - GSZ ili drugoe chislo "
<< "dlya vvoda s klaviaturi:"; cin >> m;
if (m==0)
{ cout <<"Regim GSZ:"<< endl;
int dls,min,max;
bool fl=false;
do { cout <<"Vvedite dlinu stroki:"; cin >> dls;
if (dls>=dlina)
{ cout <<"Dlina vvedena nepravilno!"<< endl;
fl=true;}
else fl=false; }
while (fl);
cout <<"VVEDITE min,max (ot 65 do 90):";
cin >> min >> max;
if (max<min) {int prom=min; min=max; max=prom;}
demochar ch(dls,min,max);}
else
{cout <<"Regim vvoda s klaviaturi:"<< endl;
demochar ch;
cout <<"Dlina vvedennoj stroki = "<< ch.length()
<<endl;}
return 0;
}
При запуске программы в самом начале необходимо при выборе режима работы либо ввести 0 для формирования символьной строки с помощью генератора случайных значений, либо ввести другое целое число для активизации режима ввода символьной строки с клавиатуры.
В случае выбора режима формирования строки с использованием ГСЗ необходимо будет ввести значение длины строки и диапазон кодов символов.
!!! Отметим, что любой член класса может напрямую обращаться к другому члену класса, а потому функция length() “видит” строку st, а в 1-ом конструкторе идет обращение к функции length().
Был получен следующий результат при выполнении программы с использованием генератора случайных чисел: