1
|
2
|
3
|
ИЛИ
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
0
|
1
|
0
|
1
|
0
|
1
|
1
|
1
|
1
|
0
|
1
|
1
|
0
|
1
|
1
|
1
|
1
|
0
|
1
|
1
|
1
|
1
|
1
|
Рис. 2. Построения комбинационного элемента "ИЛИ".
Если хотя бы один вход будет равен 1, Дизъюнкция будет 1.
Исходя из этого можно сделать вывод, что выход
комбинационного элемента будет равен 1, если на входе есть хоть один 1. Если же
все входные элементы равны 0, то выход равен 0.
Триггер - класс электронных устройств, обладающих способностью
длительно находиться в одном из двух устойчивых состояний и чередовать их под
воздействием внешних сигналов. Каждое состояние триггера легко распознаётся по
значению выходного напряжения. Отличительной особенностью триггера как
функционального устройства является свойство запоминания двоичной информации.
Под памятью триггера подразумевают способность оставаться в одном из двух
состояний и после прекращения действия переключающего сигнала. Приняв одно из
состояний за "1", а другое за "0", можно считать, что
триггер хранит один разряд числа
<https://ru.wikipedia.org/wiki/%D0%A7%D0%B8%D1%81%D0%BB%D0%BE%D0%B2%D0%BE%D0%B9_%D1%80%D0%B0%D0%B7%D1%80%D1%8F%D0%B4>,
записанного в двоичном коде.
Рис. 3 Схема триггера JK
Регистром называется функциональный узел, осуществляющий приём,
хранение и передачу информации. Регистры состоят из группы триггеров. По типу
приёма и выдачи информации различают 2 типа регистров:
С последовательным приёмом и выдачей информации - сдвиговые
регистры. С параллельным приёмом и выдачей информации - параллельные регистры.
В данной работе используется сдвиговый регистр, который представляет собой
параллельно соединённую цепочку триггеров.
инкапсуляция цифровой элемент программа
Рис. 4. схема регистра.
2.
Конструирование классов
Исходя из задания, нам требуется создать 4 класса, связанных
между собой отношениями. Для удобства написания программы, будут даны классам
"говорящие" имена.
Соответственно у нас будет класс "ELEMENT”. Это базовый класс и
единственная его обязанность - работать с его полем "имя элемента" (name), а точнее изменять его.
Это модификатор. Также класс имеет конструктор для создания объектов и
деструктор для их уничтожения. Помимо этого, имеются поля хранящие в себе
количество входов и выходов элемента.
Поля Класса:
string name; - содержит в себе имя элемента
int AmountInput; - число входов элемента
int AmountOutput; - число выходов элемента
Методы Класса:
string GetName () - возвращает имя объекта
int GetIn () - возвращает количество входов объектаGetOut
() - возвращает количество выходов объекта
~ELEMENT () - деструктор() - конструктор по умолчанию
ELEMENT (string S, int K1, int K2) - конструктор с параметрамиConfigName
(string S) - модификатор имени объектаConfigElement
(string S, int K1, int K2) - модификатор объекта
Наследником класса " ELEMENT ” выступает класс "KOMBIN”. Его обязанности:
работать с входными значениями - задавать, получать их; работать с выходным
значением - генерировать его при помощи вычисления. Класс имеет модификатор,
селектор, конструктор, конструктор копирования и деструктор. Класс имеет
множество входов и один выход.
Поля Класса:
int * Input; - целочисленный массив указателей на значения
на входах элемента.
Методы Класса:
void SetParametres () - ф-я позволяющая
задавать значения а входах элемента.
int Output () - возвращает сигнал на выходе объекта
~ KOMBIN () - деструктор() - конструктор по умолчанию
KOMBIN (string name, int K): ELEMENT (name, K, 1)
- конструктор с параметрамиConfigName
(string S) - модификатор имени объектаConfigElement
(string S, int K1, int K2) - модификатор объекта
Еще одним наследником класса " ELEMENT ” является класс "MEMORY”. В его обязанности
входит: работать с входными значениями, получать их; определять состояние
экземпляра класса в текущий момент времени.
В классе имеются модификатор, селектор, конструктор,
конструктор копирования, деструктор.
Имеет входы, соответствующие типу JK триггера, входы
установки и сброса и 2 выхода - прямой и инверсный.
Поля Класса:С - целочисленная переменная хранит в себе
значение предыдущего
синхро-импульса.
int Input [5] - целочисленный массив состоящий из 5
элементов хранящих в себе значения на входах JK триггера.
int Quas - выходной сигнал триггера.
int Revs - инверсный сигнал триггера.
Методы Класса:calculations () - функция занимающаяся
вычисление выходного сигнала.KoyJot () - функция вычисляющая соотношение между K и J.
MEMORY () - конструктор по умолчанию.
MEMORY (MEMORY ob, string name): ELEMENT (name,
5,2) - конструктор копирования.(string
name): ELEMENT (name, 5,2) - конструктор с
параметрами. OutPut () возвращает значение
сигнал на выходе объекта.
int ReJ () возвращает значение на входном сигнале J объекта.
int ReK () - возвращает значение на входном сигнале K объекта.
int ReMC () - возвращает значение на прошлого
синхро-импульса.
int ReSS () - возвращает значение на входном сигнале
синхро-импульса объекта.
int ReS () возвращает значение на входном сигнале S объекта.
int ReR () возвращает значение на входном сигнале R объекта.
int RevsOutPut () - возвращает значение инверсного выхода
элемента.
void SetDirectParameters () - задает параметры
входных сигналов.
void SetOJKDirectParameters (int a, int b, int ss) - аналогично
предыдущему void SetORSDirectParameters (int a, int b) - аналогично предыдущему int SieRa () - функция вычисляющая
соотношение между управляющими входами R и S.
Также будет использоваться класс "REGISTER", где класс "MEMORY" используется, как
включаемый. Его обязанности: задавать значения на входах экземпляра класса,
получать это значение; работать с состоянием экземпляра класса. Соответственно,
у него есть модификатор и селектор.
Поля Класса:
int Drop; - вход сброса.
MEMORY obj [8]; - массив триггеров из которых состоит
регистр.
int RInput [8] [5]; - значение входных сигналов регистра.
int RC; - предыдущие значение синхро-сигнала.
int Select; - вход установки.
int OutInput (int r, int e) - возвращает значение входа по запросу.
Диаграмма классов UML.
3.
Описание программы
Подключаемые пространства имен:
using namespace std;
это группировка определенных функций, классов и т.п. Если
какой-либо разработчик напишет свою библиотеку функций и в ней окажутся функции
с теми же названиями, что и функции в другой библиотеке, то разработчику
следует объявить уникальное пространство имен для своих функций и классов.
Тогда программист, использующий такую библиотеку, сможет либо при вызове
определенных функций использовать префикс пространства имен, либо объявить, что
все функции по умолчанию будут вызываться из определенного пространства имен.
Подключаемые библиотечные файлы:
#include <iostream>
заголовочный файл
<https://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%B3%D0%BE%D0%BB%D0%BE%D0%B2%D0%BE%D1%87%D0%BD%D1%8B%D0%B9_%D1%84%D0%B0%D0%B9%D0%BB>
с классами, функциями и переменными для организации ввода-вывода в языке
программирования C++ <https://ru.wikipedia.org/wiki/C%2B%2B>. Iostream
использует объекты
<https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)>
cin, cout, cerr и clog для передачи информации в и из стандартных потоков
<https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D1%8B%D0%B5_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%B8>
ввода и вывода. Являясь частью стандартной библиотеки C++, эти объекты также
являются частью стандартного пространства имён - std.
#include <istream> Определяет класс шаблона basic_istream, которое посредничает
извлечения для iostreams и класса шаблона basic_iostream, которое посредничает
вставки и извлечения. Заголовок также определяет соответствующих манипулятора.
Этот файл заголовка обычно включается автоматически другим заголовком
iostreams; редко, необходимо включить его напрямую.
#include <conio. h>
Этот заголовочный файл объявляет несколько библиотечных функций
для работы с "консольным вводом и выводом" программы. Большинство
компиляторов языка Си.
#include <string>
Предназначен для добавления возможнисти использовать функции для
работы со строками и т.д.
#include <windows. h>
Этот файл содержит множество определений типов данных, макросов,
прототипов функций, констант и т.д.
Используемые типы:
1. int - целочисленный тип.
Формат: int name; // значение I = 0
2. string - последовательность из нуля или более символов
в кодировке Юникод.
Формат: string a = "hello";
3. массивы - можно сохранить несколько переменных
одного типа в структуре данных массива.
Формат: type name [];
Используемые методы:
Метод для задание входных сигналов регистра:
void RSetDirectParameters ()
{int SI=0;<<"\n\n\n\t\t\t\tWrite
InPuts Valuas of REGISTER: \n\n\n";<<"\t\tValua of Synchro
Signal = ";>>SI;<<"\n\t\tValua on InPut S =
";>>Select;<<"\n\t\tValua on InPut R =
";>>Drop;(int i=0; i<8; i++)
{[i] [0] =SI;[i] [1] =Select;[i] [2]
=Drop;<<"\n\n\n\n\t\t\tWhite InPut Valuas of TRIGER MEMORY
"<<i+1<<": \n";<<"\n\n\t\t\tValua on InPut
J = ";>>RInput [i] [3];<<"\n\n\t\t\tValua on InPut K =
";>>RInput [i] [4];("cls");[i]. SetOJKDirectParameters
(RInput [i] [3],RInput [i] [4],RInput [i] [0]);[i]. SetORSDirectParameters
(RInput [i] [1],RInput [i] [2]);
}
}
Метод для обеспечения вывода меню:
while (x! =4)
{x=5;("cls");<<"\n\n\t\n\tChose
Digital Element Which you want to Test: ";<<"\n\n\t\t1 -
Combinatoric Element";<<"\n\t\t2 - Memory
Triger";<<"\n\t\t3 - Register JK";<<"\n\t\t4 -
Quit\n\n\t\tAnd u chose is: ";>>x;
….
}
Метод для осуществления подсчета выходного сигнала триггере JK:
int calculations ()
{b=0;(Input [0] ==1 && C==0)
{=0;=SieRa ();(b==1)
{cout<<"\n\t\tERROR messenge: inputs R
and S have valua 1";[0] =0;[1] =0;[2] =0;[3] =0;[4] =0;
}(b==0)();
}(Quas==0)=1;(Quas==1)=0;(Input [0] ==0)
C=0;
}
Полный текст программы приведен в приложении.
4.
Тестирование
При запуске программы, перед нами отображается окно с 4
пунктами меню. Пользователь должен ввести цифру, соответствующую нужному
разделу.
В случае, если пользователь ввел цифру "1",
программа запрашивает количество входов комбинационного элемента, а затем
значения на его входах.
После того, как пользователь ввел все необходимые данные, он
должен нажать "Enter".
Далее, перед нами появляется новое меню - подпункт раздела
"Комбинационный элемент", в нем пользователю предоставляется выбор
если он хочет продолжить работу с тем же комбинационным элементом он нажимает
"1" и Enter, передним снова появляется окно ввода значений на входах данного
комбинационного элемента и т.д.
Если он нажмет цифру "3", а затем Enter то передним откроется
окно, в котором он сможет введя номер входа узнать значение его сигнала затем
программа задаст вопрос хочет ли пользователь повторить предыдущею операцию
"1" - да, "0" - нет. Если нет то произойдет возврат в
предыдущие меню.
Если в предыдущем меню он нажмет цифру "0" и затем Enter то он вернуться в главное
меню программы.
В случае если в главном меню пользователь нажмет цифру
"2" и затем Enter то перед ним откроеться окно работы с триггером в
котором ему будет необходимо ввести значение на входах триггра
После того как он нажмет клавишу Enter перед ним появится
окно
В этом окне будет отображенна информация о значении выходного
сигнала JK триггера и о значении инверсного сигнала JK триггера а так же
аналогичное комбинационному элементу меню в котором он нажав цифру
"3" сможет перейти к просмотру значений сигналов на входах.
Введя значение соответствующего входа из списка можно будет
увидеть значение его текучего сигнала затем вопрос об повторе операции или
выходе из меню и переходе к прядущему
Полсе выполнения выше изложенной операции опять появится меню
выбора дейсвия если в нем ввести цифру одни то откроется окно ввода значений
сигналов на входах триггера как было ранее если 0 то произойдет возврат в
главное меню
Если в главном меню ввести цифру "3" и нажать
клавишу Enter
Откроется окно работы с Регистром
После ввода данных откроется окно просмотра результатов в
котором будет отображены значение выходов регистра и меню которое аналогичное
меню из комбинационного элемента и триггера предоставляющее возможность выбора
операции которая будет выполнена в дальнейшем
Если нажать "1" пользователю представиться
возможность заново внести данные и просмотреть результат если "0" то
произойдет возврат в главное меню если "3" то откроется меню в
котором можно будет введя номер триггера который находится в составе регистра и
выбрав один из его входов из списка узнать значение сигнала на данном входе.
Далее если вы нажмете ноль заново запуститься функция
просмотра значения сигнала на входе если вы нажмете "0" и затем Enter то произойдет возврат в
предыдущее меню
Если там вы введете цифру "0" и нажмете Enter произойдет в главное
меню
Если там вы введете цифру "4" и нажмете клавишу Enter то программа завершит
свою работу
Заключение
В данной работе была рассмотрена задача моделирования и
создания цифровых элементов с использованием объектно-ориентированного подхода
на языке программирования высокого уровня С++. На основе поставленного задания,
были последовательно выполнены этапы анализа, проектирования и, на базе их
результатов, произведена реализация цифровых элементов. На этапе анализа был
определен внешний вид программы и компонентов логической схемы, также был
приведен механизм работы с входными сигналами для более гибкого взаимодействия
с пользователем. При проектирование были описаны 4 основных класса, класс ELEMENT для хранения компонентов
для общего обозначения элементов, класс KOMBIN описывающий свойства и
методы для работы с Комбинационным элементом "ИЛИ", класс MEMORY, послуживший основой для
создания регистра, и класс REGISTER - главный класс описывающий работу сложного 8-ми
разрядного Регистра памяти. При программирование класс ELEMENT был определен как
шаблонный класс для всех остальных класс MEMORY стал включаемым классом
для класса REGISTER.
Использование объектно-ориентированного подхода позволило значительно
упростить реализацию отдельных частей данной программы, на основе чего можно
сделать вывод о том, что данный подход является оптимальным для создания
приложений подобного рода. Помимо этого, были закреплены навыки, полученные при
выполнении лабораторных работ курса дисциплины "Объектно-ориентированное
программирование", что можно также считать выполнением одной из главных
целей данной работы.
Список
литературы
1.
<http://www.petrsu.ru/Chairs/IMO/pascal/theory/part2_3_1.html>
. Буч Г., Рамбо
Дж., Джекобсон А. Язык UML. Руководство пользователя. - С-П.: Издательство
"Питер", 2003. - 432 с.
. http://gos-it.
wikia.com/wiki <http://gos-it.wikia.com/wiki>
. http://fdpo. samgtu.ru/node/44
Приложение
#include <iostream>
#include <istream>
#include <conio. h>
#include <string>
#include <windows. h>namespace std;ELEMENT
{ private:name;AmountInput;AmountOutput;:GetName
()
{name;
}GetIn ()
{AmountInput;
}GetOut ()
{AmountOutput;
}
~ELEMENT ()
{<<"\n\t\t"<<name<<"
deleted";
}()
{
}ConfigName (string S)
{= S;
}(string S, int K1, int K2)
{= S;= K1;= K2;
}ConfigElement (string S, int K1, int K2)
{= S;= K1;= K2; }
};KOMBIN: protected ELEMENT
{ private:* Input;:()
{= new int [0];
}(string name, int K): ELEMENT (name, K, 1)
{= new int [K];
}SetParameters ()
{(int i = 0; i < GetIn (); i++)
{>>* (Input+i);
}
}Output ()
{p = 0;(int i = 0; i < GetIn (); i++)
{(* (Input+i) ==1)
{=1; break; }=0;
}p;
}Vlinput (int x)
{int o=0;(x > GetIn ())=0;o=* (Input+
(x-1));o; }
};MEMORY: protected ELEMENT
{private:Input [5];Quas;Revs;C;:()
{(int i = 0; i < 5; i++)[i] = 0;=0;=0;=1;
}(MEMORY ob, string name): ELEMENT (name, 5,2)
{MEMORY ob1;=ob. Quas;=ob. Revs;=ob. C;
}(string name): ELEMENT (name, 5,2)
{(int i = 0; i < GetIn (); i++)
{[i] =0;
}Quas=0; Revs=1;=0; }ReMC ()
{return C;
}ReSS ()
{return Input [0];
}ReS ()
{return Input [1];
}ReR ()
{return Input [2];
{return Input [3];
}ReK ()
{return Input [4];
}KoyJot ()
{(Input [3] ==0 && Input [4]
==1)=0;(Input [3] ==1 && Input [4] ==0)=1;(Input [3] ==1 &&
Input [4] ==1 && Quas==1)=0;(Input [3] ==1 && Input [4] ==1
&& Quas==0)=1;(Input [3] ==1 && Input [4] ==1 &&
Revs==1)=1;(Input [3] ==1 && Input [4] ==1 && Revs==0)=0;
}SieRa ()
{int p;=0;(Input [1] ==0 && Input [2]
==0)
{=0; }(Input [1] ==1 && Input [2] ==0)
{=1; p=2; }(Input [1] ==0 && Input [2]
==1)
{=0; Revs=1; p=3; }(Input [1] ==1 &&
Input [2] ==1)
{=1; Quas=0; C=0; Revs=1; }p;
}calculations ()
{b=0;(Input [0] ==1 && C==0)
{=0;=SieRa ();(b==1)
{cout<<"\n\t\tERROR messenge: inputs R
and S have valua 1";[0] =0;[1] =0;[2] =0;[3] =0;[4] =0;
}(b==0)();
}(Quas==0)=1;(Quas==1)=0;(Input [0] ==0)=0;
}SetDirectParameters ()
{cout<<"\n\n\n\t\t\tWrite InPut Valuas
of MEMORY: \n"
<<"\n\t\tSynchro Impuls =
";>>Input [0];<<"\n\t\tValua on InPut S =
";>>Input [1];<<"\n\t\tValua on InPut R =
";>>Input [2];<<"\n\t\tValua on InPut J =
";>>Input [3];<<"\n\t\tValua on InPut K =
";>>Input [4];
}SetOJKDirectParameters (int a, int b, int ss)
{ Input [3] =a;[4] =b;[0] =ss;
}SetORSDirectParameters (int a, int b)
{ Input [1] =a;[2] =b;
}OutPut ()
{return Quas;
}RevsOutPut ()
{return Revs;
}
};REGISTER: protected ELEMENT
{:Drop;Select;obj [8];RInput [8] [5];RC;:(string
name): ELEMENT (name, 40, 16)
{=0;=0;=0;(int i=0; i<8; i++)
{for (int j=0; j<5; j++)
{RInput [i] [j] =0; }}
}OutInput (int r, int e)
{=e-1;=r-1;RInput [r] [e];
}RSetDirectParameters ()
{int SI=0;<<"\n\n\n\t\t\t\tWrite
InPuts Valuas of REGISTER: \n\n\n";<<"\t\tValua of Synchro
Signal = ";>>SI;<<"\n\t\tValua on InPut S =
";>>Select;<<"\n\t\tValua on InPut R = ";>>Drop;(int
i=0; i<8; i++)
{[i] [0] =SI;[i] [1] =Select;[i] [2]
=Drop;<<"\n\n\n\n\t\t\tWhite InPut Valuas of TRIGER MEMORY
"<<i+1<<": \n";<<"\n\n\t\t\tValua on
InPut J = ";>>RInput [i] [3];<<"\n\n\t\t\tValua on InPut
K = ";>>RInput [i] [4];("cls");[i]. SetOJKDirectParameters
(RInput [i] [3],RInput [i] [4],RInput [i] [0]);[i]. SetORSDirectParameters
(RInput [i] [1],RInput [i] [2]);
}
}RegisterCalculations ()
{();("cls");<<"\n\t\t\tOutPut
value of REGISTER Outputs: \n ";(int i=0; i<8; i++)
{(RInput [i] [0] ==1 && RC==0)
{[i]. calculations ();
}<<"\n\t\tMEMORY No.
"<<i+1<<" is "<<obj [i]. OutPut ()
<<" "<<"Reverse is "<<obj [i]. RevsOutPut
();
}(RInput [0] [0] ==0)=0;(RInput [0] [0] ==1)=1;
}
};main ()
{m=0; int n=0; int g=0; int
v=0;<<"\n\n\t\t\tWellcome to NOIR's Course Project!";x=0;(x!
=4)
{x=5;("cls");<<"\n\n\t\n\tChose
Digital Element Which you want to Test: ";<<"\n\n\t\t1 -
Combinatoric Element";<<"\n\t\t2 - Memory
Triger";<<"\n\t\t3 - Register JK";<<"\n\t\t4 -
Quit\n\n\t\tAnd u chose is: ";>>x;(x==1)
{int x1=1;("cls");<<"\n\n\n\t\tWrite
amount inputs of combination element ";>>n;ob
("Richard",n);<<"\n\t\tWrite value of inputs ";.
SetParameters ();<<"\n\t\t"<<"OutPut's value of
combination element is "<<ob. Output ();(x1! =0)
{<<"\n\n\t\tDo you want continue work
with this element? 1-yes / 0-no\n\t\tif you want inspect values on inputs type
- 3 \n\t\t";>>x1;("cls");(x1==1)
{("cls");<<"\n\n\n\n\n\t\tWrite
value of inputs ";. SetParameters
();<<"\n\t\t"<<"OutPut's value of combination
element is "<<ob. Output ();
}(x1==3)
{int x2=1;(x2! =0)
{system
("cls");<<"\n\n\n\t\twrite No. of Input which u want
inspect ";>>m;<<"\n\t\tvalue of input No.
"<<m<<" is "<<ob. Vlinput
(m);<<"\n\t\tdo you want to do it again? 1 - yes 0 - no
";>>x2;
}
}
}("cls");
}(x==2)
{int x3=1;("cls");og
("Charls");<<"\n\n\t\t";. SetDirectParameters ();.
calculations ();<<"\n\t\tOutPut value of MEMORY is "<<og.
OutPut () <<"\n"<<"\t\tReversive OutPut value of
MEMORY is "<<og. RevsOutPut ();(x3! =0)
{<<"\n\n\t\tDo you want continue work
with this element? 1-yes / 0-no\n\t\tif you want inspect values on inputs type
- 3 \n\t\tand you answer is: ";>>x3;(x3==1)
{system
("cls");<<"\n\n\t\t";. SetDirectParameters ();.
calculations ();<<"\n\t\tOutPut value of MEMORY is "<<og.
OutPut () <<"\n"<<"\t\tReversive OutPut value of
MEMORY is "<<og. RevsOutPut () <<"\n";
}(x3==3)
{system ("cls");x4=1;(x4! =0)
{system
("cls");<<"\n\n\n\t\twrite No. of Input which u want
inspect from list\n\n\t\t 1. Synchro Impulse 2. S 3. R 4. J 5. K 6. Memory Sync
\n\n\t\t Input: ";>>v;(v==1)<<"\n\t\tVALUE of input
Synchro Impulse is "<<og. ReSS ();(v==2)<<"\n\t\tVALUE of
input S is "<<og. ReS ();(v==3)<<"\n\t\tVALUE of input R
is "<<og. ReR ();(v==4)<<"\n\t\tVALUE of input J is
"<<og. ReJ ();(v==5)<<"\n\t\tVALUE of input K is
"<<og. ReK ();(v==6)<<"\n\t\tVALUE of input Memory Sync
is "<<og. ReMC ();<<"\n\n\t\tdo you want to do it again?
1 - yes 0 - no \n\n\t\t and you answer is: ";>>x4;("cls");
}}}}(x==3)
{system ("cls");x5=1;osh
("Elisabeth");. RegisterCalculations ();(x5! =0)
{<<"\n\n\t\tDo you want continue work
with this element? 1-yes / 0-no\n\t\tif you want inspect values on inputs type
- 3 \n\t\tand you answer is: ";>>x5;(x5==1)
{("cls");<<"\n\n\t\t";.
RegisterCalculations ();
{x6=1;z=0;("cls");(x6! =0)
{cout<<"\n\n\n\t\twrite No. of MEMORY
which you want inspect: ";>>z;<<"\n\n\t\twrite No. of
Input which u want inspect from list\n\n\t\t 1. Synchro Impulse 2. S 3. R 4. J
K.5\n\n\t\t Input: ";>>v;(v==1)<<"\n\t\tVALUE of input
Synchro Impulse of REGISTER' MEMORY "<<z<<" is
"<<osh. OutInput (z,v);(v==2)<<"\n\t\tVALUE of input S of
REGISTER' MEMORY "<<z<<" is "<<osh. OutInput
(z,v);(v==3)<<"\n\t\tVALUE of input R of REGISTER' MEMORY
"<<z<<" is "<<osh. OutInput
(z,v);(v==4)<<"\n\t\tVALUE of input J of REGISTER' MEMORY
"<<z<<" is "<<osh. OutInput
(z,v);(v==5)<<"\n\t\tVALUE of input K of REGISTER' MEMORY
"<<z<<" is "<<osh. OutInput
(z,v);<<"\n\n\t\tdo you want to do it again? 1 - yes 0 - no \n\n\t\t
and you answer is: ";>>x6;("cls");
}}}}}0; }