Fedorovich_Aleksandrovich685
?>

C++ необходимо реализовать библиотеку, экспортирующую следующие классы: 1. интерфейс imilitaryman (военный), содержащий виртуальный деструктор и единственный чисто-виртуальный метод void serve() (служить 2. класс soldier (солдат), наследующий imilitaryman и реализующий его интерфейс. реализация метода serve() должна увеличивать количество выполненных поручений солдатом. в конструкторе класса должно устанавливаться начальное количество поручений (jobcount) солдата, равное 0. 3. класс officer (офицер) наследующий imilitaryman и имеющий подчинённых. военные (как офицеры, так и солдаты), находящиеся в подчинении офицера, ему в конструкторе в виде массива. реализация метода serve() должна делегировать выполнение поручения подчинённым. деструктор класса officer должен выполнить освобождение подчинённых. необходимо реализовать как минимум следующие тесты для проверки классов soldier и officer: 1. создать экземпляр класса soldier, присвоить его переменной militaryman типа imilitaryman & и убедиться, что при вызове метода militaryman.serve() будет увеличено количество выполненных поручений у солдата. 2. создать экземпляр класса officer с экземплярами классов подчинённых ему военных: двух солдат и одного офицера, у которого в подчинении находится ещё четыре солдата. присвоить созданный экземпляр класса officer переменной militaryman типа imilitaryman & и убедиться, что при вызове метода militaryman.serve() у всех шести солдат будет увеличено количество выполненных поручений. 3. убедиться, что деструкторы подчинённых вызываются при вызове деструктора officer. для этого разрешается использовать (экспортировать библиотекой) переменную с общим количеством существующих на данный момент экземпляров военных.

Информатика

Ответы

shkola8gbr
Program asd; const n=4; var c: array[1..n,1..n] of integer; i,j,s: integer; begin   for i: =1 to n do    begin     for j: =1 to n do      begin      c[i,j]: =1+random(9);       write(c[i,j],' ');       end;       writeln;   end;     writeln;           for j: =1 to n do      begin    s: =0;       for i: =1 to n do        begin      s: =s+c[i,j];                 end;       writeln('столбец[',j,'] = ',s);     end; end.
Viktorovna1012
Поставленную можно решать разными способами. можно озаботиться красотой алгоритма, можно - эффективностью выполнения программы, можно еще много чем. в связи с тем, что в настоящее время компьютеры большой вычислительной мощностью, а проста, выберем алгоритм, который имеет минимальную трудоемкость в написании и понятен внешне, хотя, быть может, в чем-то не совсем оптимален с точки зрения вычислительного процесса. речь идет об использовании встроенной функции языка паскаль - функции pos. конечно, использование функции posex, появившейся в pascal.abc, было бы эффективнее, но будем придерживаться классической версии. функция pos позволяет найти позицию первого от начала строки вхождения в эту строку подстроки. если вхождения нет - функция возвращает ноль. принимая оставшуюся после найденного вхождения часть строки за новую строку и повторяя поиск, можно найти все вхождения. не говорит, как организован ввод текста. дело в том, что в паскале строка не может содержать переход к новой строке, а текст задан двумя строками. можно организовать ввод двух строк, можно задать текст строковыми константами, можно организовать ввод из файла. считая, что смысл в поиске вхождений, принимаем способ текста несущественным и задаем текст двумя строковыми константами. это потребует выполнения алгоритма для каждой строки, следоватеьно, нам потребуется пользовательская функция, к которой мы будем обращаться. const   c1='не давши слово-крепись,';   c2='а давши - держись';   cc='давши'; { искомый контекст } function kol(c,ci: string): integer;   {количество вхождений ci а c } var   p,k,l,li: integer; begin   k: =0;   li: =length(ci);   l: =length(c);   repeat       p: =pos(ci,c);       if p> 0 then       begin           l: =length(c);           inc(k);           if p+li< l then c: =copy(c,p+li,l-(p+li-1))       end   until (p=0) or (p+li> =l);   kol: =k end; begin   writeln('количество вхождений равно ',kol(c1,cc)+kol(c2,cc)) end. вывод решения: количество вхождений равно 2

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

C++ необходимо реализовать библиотеку, экспортирующую следующие классы: 1. интерфейс imilitaryman (военный), содержащий виртуальный деструктор и единственный чисто-виртуальный метод void serve() (служить 2. класс soldier (солдат), наследующий imilitaryman и реализующий его интерфейс. реализация метода serve() должна увеличивать количество выполненных поручений солдатом. в конструкторе класса должно устанавливаться начальное количество поручений (jobcount) солдата, равное 0. 3. класс officer (офицер) наследующий imilitaryman и имеющий подчинённых. военные (как офицеры, так и солдаты), находящиеся в подчинении офицера, ему в конструкторе в виде массива. реализация метода serve() должна делегировать выполнение поручения подчинённым. деструктор класса officer должен выполнить освобождение подчинённых. необходимо реализовать как минимум следующие тесты для проверки классов soldier и officer: 1. создать экземпляр класса soldier, присвоить его переменной militaryman типа imilitaryman & и убедиться, что при вызове метода militaryman.serve() будет увеличено количество выполненных поручений у солдата. 2. создать экземпляр класса officer с экземплярами классов подчинённых ему военных: двух солдат и одного офицера, у которого в подчинении находится ещё четыре солдата. присвоить созданный экземпляр класса officer переменной militaryman типа imilitaryman & и убедиться, что при вызове метода militaryman.serve() у всех шести солдат будет увеличено количество выполненных поручений. 3. убедиться, что деструкторы подчинённых вызываются при вызове деструктора officer. для этого разрешается использовать (экспортировать библиотекой) переменную с общим количеством существующих на данный момент экземпляров военных.
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

fil-vasilij90
PivovarovaIlina1437
Sashagleb19
lukur2005
dawlatowajana
Yurevich1344
filimon211
Anzhelika-Bulanov802
irinasolodova3
Nastyaches4
ganul
Yekaterina_Popova1413
Coffee3862
mushatolga
Окунева-Мотова