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

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().

Был получен следующий результат при выполнении программы с использованием генератора случайных чисел:

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