11489

Двоичный калькулятор

Курсовая

Информатика, кибернетика и программирование

Курсовая работа по дисциплине: технология программирования Тема Двоичный калькулятор. Содержание Введение История метода Разработка программы двоичного калькулятора Блок схема программы Математическая модель решаемой программы Описан...

Русский

2013-04-08

380.5 KB

270 чел.

Курсовая работа

по дисциплине: «технология программирования»

Тема  «Двоичный калькулятор.»

Содержание

Введение

История метода

  1.  Разработка программы двоичного калькулятора
  2.  Блок схема программы
  3.  Математическая модель решаемой программы  
  4.  Описание интерфейса
  5.  Инструкция по применению программы
  6.  Проверка работоспособности программы
  7.  Актуальность и проблематика программы
  8.  Список используемой литературы
  9.  Приложение (листинг программы)
  10.  Заключение

Введение.

C++

C++ (произносится «си плюс плюс») — компилируемый статически типизированный язык программирования общего назначения. Поддерживая разные парадигмы программирования, сочетает свойства как высокоуровневых, так и низкоуровневых языков. В сравнении с его предшественником — языком C, — наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования. Название «C++» происходит от языка C, в котором унарный оператор ++ обозначает инкремент переменной.

Являясь одним из самых популярных языков программирования, C++ широко используется для разработки программного обеспечения. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (например, видеоигры). Существует несколько реализаций языка C++ — как бесплатных, так и коммерческих. Их производят Проект GNU, Microsoft, Intel и Embarcadero (Borland). C++ оказал огромное влияние на другие языки программирования, в первую очередь на Java и C#.

При создании C++ Бьёрн Страуструп стремился сохранить совместимость с языком C. Множество программ, которые могут одинаково успешно транслироваться как компиляторами C, так и компиляторами C++, довольно велико — отчасти благодаря тому, что синтаксис C++ был основан на синтаксисе C.

Семантика: 

мультипарадигмальный: объектно-ориентированное, обобщённое, процедурное, метапрограммирование

Тип исполнения:

компилируемый

Появился в:

1983 г.

Автор(ы):

Бьёрн Страуструп

Расширение файлов:

.c++ .cpp .cxx .cc .h++ .hpp .hxx .hh .h

Типизация данных:

статическая

Основные реализации:

GNU C++, Microsoft Visual C++, Intel C++ compiler, Comeau C/C++, Embarcadero (Borland) C++ Builder, Watcom C++ compiler, Digital Mars C++, Oracle Solaris Studio C++ compiler, Turbo C++

Диалекты:

ISO/IEC 14882 C+

Язык возник в начале 1980-х годов, когда сотрудник фирмы Bell Laboratories Бьёрн Страуструп придумал ряд усовершенствований к языку C под собственные нужды. До начала официальной стандартизации язык развивался в основном силами Страуструпа в ответ на запросы программистского сообщества. В 1998 году был ратифицирован международный стандарт языка C++: ISO/IEC 14882:1998 «Standard for the C++ Programming Language»; после принятия технических исправлений к стандарту в 2003 году — нынешняя версия этого стандарта — ISO/IEC 14882:2003.

Ранние версии языка, известные под именем «C с классами», начали появляться с 1980 года. Идея создания нового языка берёт начало от опыта программирования Страуструпа для диссертации. Он обнаружил, что язык моделирования Simula имеет такие возможности, которые были бы очень полезны для разработки большого программного обеспечения, но работает слишком медленно. В то же время язык BCPL достаточно быстр, но слишком близок к языкам низкого уровня и не подходит для разработки большого программного обеспечения. Страуструп начал работать в Bell Labs над задачами теории очередей (в приложении к моделированию телефонных вызовов). Попытки применения существующих в то время языков моделирования оказались неэффективными. Вспоминая опыт своей диссертации, Страуструп решил дополнить язык C (преемник BCPL) возможностями, имеющимися в языке Симула. Язык C, будучи базовым языком системы UNIX, на которой работали компьютеры Bell, является быстрым, многофункциональным и переносимым. Страуструп добавил к нему возможность работы с классами и объектами. В результате, практические задачи моделирования оказались доступными для решения как с точки зрения времени разработки (благодаря использованию Симула-подобных классов) так и с точки зрения времени вычислений (благодаря быстродействию C). В начале в C были добавлены классы (с инкапсуляцией), производные классы, строгая проверка типов, inline-функции и аргументы по умолчанию.

Разрабатывая C с классами (позднее C++), Страуструп также написал программу cfront — транслятор, перерабатывающий исходный код C с классами в исходный код простого C. Новый язык, неожиданно для автора, приобрёл большую популярность среди коллег и вскоре Страуструп уже не мог лично поддерживать его, отвечая на тысячи вопросов.

В 1983 году произошло переименование языка из C с классами в C++. Кроме того, в него были добавлены новые возможности, такие как виртуальные функции, перегрузка функций и операторов, ссылки, константы, пользовательский контроль над управлением свободной памятью, улучшенная проверка типов и новый стиль комментариев (//). Его первый коммерческий выпуск состоялся в октябре 1985 года. В 1985 году вышло также первое издание «Языка программирования C++», обеспечивающее первое описание этого языка, что было чрезвычайно важно из-за отсутствия официального стандарта. В 1989 году состоялся выход C++ версии 2.0. Его новые возможности включали множественное наследование, абстрактные классы, статические функции-члены, функции-константы и защищённые члены.

В 1990 году вышло «Комментированное справочное руководство по C++», положенное впоследствии в основу стандарта. Последние обновления включали шаблоны, исключения, пространства имён, новые способы приведения типов и булевский тип.

Стандартная библиотека C++ также развивалась вместе с ним. Первым добавлением к стандартной библиотеке C++ стали потоки ввода/вывода, обеспечивающие средства для замены традиционных функций C printf и scanf. Позднее самым значительным развитием стандартной библиотеки стало включение в неё Стандартной библиотеки шаблонов.

Никто не обладает правами на язык C++, он является свободным. Однако сам документ стандарта языка (за исключением черновиков) не доступен бесплатно.

Стандартизация языка

В 1998 году был опубликован стандарт ISO/IEC 14882:1998 (известный как C++98), разработанный комитетом по стандартизации C++ (ISO/IEC JTC1/SC22/WG21 working group). В течение нескольких лет после опубликования документа, рассмотрев сообщения об ошибках, комитет разработал исправленную версию стандарта, ISO/IEC 14882:2003, вышедшую в 2003 году. В 2005 году был выпущен отчёт «Library Technical Report 1» (кратко называемый TR1). Не являясь официально частью стандарта, отчёт описывает расширения стандартной библиотеки, которые, как ожидалось авторами, должны быть включены в следующую версию языка C++. Степень поддержки TR1 улучшается почти во всех поддерживаемых компиляторах языка C++.

В настоящее время разрабатывается новая версия стандарта, неофициально называемая C++0x.

Наиболее употребляемыми в настоящее время позиционными системами являются:

  * 1 — единичная (как позиционная может и не рассматриваться; счёт на пальцах, зарубки, узелки «на память» и др.);

  * 2 — двоичная (в дискретной математике, информатике, программировании);

  * 3 — троичная;

  * 4 — четверичная;

  * 5 — пятеричная;

  * 8 — восьмеричная;

  * 10 — десятичная (используется повсеместно);

  * 12 — двенадцатеричная (счёт дюжинами);

  * 16 — шестнадцатеричная (используется в программировании, информатике, а также в шрифтах);

  * 60 — шестидесятеричная (единицы измерения времени, измерение углов и, в частности, координат, долготы и широты).

Восьмеричная система счисления — позиционная целочисленная система счисления с основанием 8. Для представления чисел в ней используются цифры 0 до 7.

Восьмеричная система часто используется в областях, связанных с цифровыми устройствами. Характеризуется лёгким переводом восьмеричных чисел в двоичные и обратно, путём замены восьмеричных чисел на триплеты двоичных. Ранее широко использовалась в программировании и вообще компьютерной документации, однако в настоящее время почти полностью вытеснена шестнадцатеричной. В восьмеричной системе указываются права доступа для команды chmod в Unix-подобных операционных системах.

Десятичная система счисления — позиционная система счисления по целочисленному основанию 10. Одна из наиболее распространённых систем счисления в мире. Для записи чисел наиболее часто используются символы 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, называемые арабскими цифрами. Предполагается, что основание 10 связано с количеством пальцев рук у человека.

Шестнадцатеричная система счисления— позиционная система счисления по целочисленному основанию 16. Обычно в качестве шестнадцатеричных цифр используются десятичные цифры от 0 до 9 и латинские буквы от A до F для обозначения цифр от 1010 до 1510, то есть (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F).

Широко используется в низкоуровневом программировании и вообще в компьютерной документации, поскольку в современных компьютерах минимальной единицей памяти является 8-битный байт, значения которого удобно записывать двумя шестнадцатеричными цифрами. Такое использование началось с системы IBM/360, где вся документация использовала шестнадцатеричную систему, в то время как в документации других компьютерных систем того времени (даже с 8-битными символами, как, например, PDP-11 или БЭСМ-6) использовали восьмеричную систему.

В стандарте Юникода номер символа принято записывать в шестнадцатеричном виде, используя не менее 4 цифр (при необходимости — с ведущими нулями).

Двоичная система счисления — это позиционная система счисления с основанием 2. В этой системе счисления числа записываются с помощью двух символов (1 и 0).

Двоичная система используется в цифровых устройствах, поскольку является наиболее простой и соответствует требованиям:

  * Чем меньше значений существует в системе, тем проще изготовить отдельные элементы, оперирующие этими значениями. В частности, две цифры двоичной системы счисления могут быть легко представлены многими физическими явлениями: есть ток — нет тока, индукция магнитного поля больше пороговой величины или нет и т. д.

  * Чем меньше количество состояний у элемента, тем выше помехоустойчивость и тем быстрее он может работать. Например, чтобы закодировать три состояния через величину индукции магнитного поля, потребуется ввести два пороговых значения, что не будет способствовать помехоустойчивости и надёжности хранения информации.

  * Двоичная арифметика является довольно простой. Простыми являются таблицы сложения и умножения — основных действий над числами.

В цифровой электронике одному двоичному разряду в двоичной системе счисления соответствует (очевидно) один двоичный разряд двоичного регистра, то есть двоичный триггер с двумя состояниями (0,1).


1
. История метода

  * Полный набор из 8 триграмм и 64 гексаграмм, аналог 3-битных и 6-битных цифр, был известен в древнем Китае в классических текстах книги Перемен. Порядок гексаграмм в книге Перемен, расположенных в соответствии со значениями соответствующих двоичных цифр (от 0 до 63), и метод их получения был разработан китайским учёным и философом Шао Юн в XI веке. Однако нет доказательств, свидетельствующих о том, что Шао Юн понимал правила двоичной арифметики, располагая двухсимвольные кортежи в лексикографическом порядке.

  * Индийский математик Пингала (200 год до н. э.) разработал математические основы для описания поэзии с использованием первого известного применения двоичной системы счисления.[1][2]

  * Прообразом баз данных, широко использовавшихся в Центральных Андах (Перу, Боливия) в государственных и общественных целях в I—II тысячелетии н. э., была узелковая письменность Инков — кипу, состоявшая как из числовых записей десятичной системы[3], так и не числовых записей в двоичной системе кодирования[4]. В кипу применялись первичные и дополнительные ключи, позиционные числа, кодирование цветом и образование серий повторяющихся данных[5]. Кипу впервые в истории человечества использовалось для применения такого способа ведения бухгалтерского учёта как двойная запись[6].

  * Наборы, представляющие собой комбинации двоичных цифр, использовались африканцами в традиционных гаданиях (таких как Ифа) наряду со средневековой геомантией.

  * В 1605 году Френсис Бэкон описал систему, буквы алфавита которой могут быть сведены к последовательностям двоичных цифр, которые в свою очередь могут быть закодированы как едва заметные изменения шрифта в любых случайных текстах. Важным шагом в становлении общей теории двоичного кодирования является замечание о том, что указанный метод может быть использован применительно к любым объектам.[7] (См. Шифр Бэкона)

  * Современная двоичная система была полностью описана Лейбницем в XVII веке в работе Explication de l’Arithmétique Binaire[8]. В системе счисления Лейбница были использованы цифры 0 и 1, как и в современной двоичной системе. Как человек, увлекающийся китайской культурой, Лейбниц знал о книге Перемен и заметил, что гексаграммы соответствуют двоичным числам от 0 до 111111. Он восхищался тем, что это отображение является свидетельством крупных китайских достижений в философской математике того времени.[9]

  * В 1854 году английский математик Джордж Буль опубликовал знаковую работу, описывающую алгебраические системы применительно к логике, которая в настоящее время известна как Булева алгебра или алгебра логики. Его логическому исчислению было суждено сыграть важную роль в разработке современных цифровых электронных схем.

  * В 1937 году Клод Шеннон предствил к защите кандидатскую диссертацию Символический анализ релейных и переключательных схем в MIT, в которой булева алгебра и двоичная арифметика были использованы применительно к электронным реле и переключателям. На диссертации Шеннона по существу основана вся современная цифровая техника.

  * В ноябре 1937 года Джордж Штибиц, впоследствии работавший в Bell Labs, создал на базе реле компьютер «Model K» (от англ. «Kitchen», кухня, где производилась сборка), который выполнял двоичное сложение. В конце 1938 года Bell Labs развернула исследовательскую программу во главе со Штибицом. Созданный под его руководством компьютер, завершённый 8 января 1940 года, умел выполнять операции с комплексными числами. Во время демонстрации на конференции American Mathematical Society в Дармутском колледже 11 сентября 1940 года Штибиц продемонстрировал возможность посылки команд удалённому калькулятору комплексных чисел по телефонной линии с использованием телетайпа. Это была первая попытка использования удалённой вычислительной машины посредством телефонной линии. Среди участников конференции, бывших свидетелями демонстрации, были Джон фон Нейман, Джон Мокли и Норберт Винер, впоследствии писавшие об этом в своих мемуарах.

Запись двоичных чисел.

Двоичная система счисления является частным случаем сдвоенных двоичных показательных позиционных систем счисления с обоими основаниями (a и b) равными 2. Целые числа записываются в виде:

где:

  * n — число цифр (знаков) в числе x2,2,

  * k — порядковый номер цифры,

  * a = 2 — основание внутриразрядной системы счисления, * ak — цифры числа x2,2 из множества a={0,1},

  * b = 2 — основание показательной функции, основание межразрядной системы счисления.

Целые числа являются частными суммами степенного ряда:

в котором коэффициенты an берутся из кольца R=a{0,1}, X=2, n=k, а верхний предел в частных суммах ограничен с до — n-1.

Из комбинаторики известно, что число записываемых кодов не зависит от основания показательной функции — b, которое определяет диапазон представляемых числами x2,b величин, и равно числу размещений с повторениями:

где a=2 — 2-х элементное множество a={0,1} из которого берутся цифры ak, n — число элементов (цифр) в числе x2,b.

Дробные числа записываются в виде:

где:

  * m — число цифр дробной части числа,

  * a = 2 — основание внутриразрядной системы счисления,

  * b = 2 — основание показательной функции, основание межразрядной системы счисления.

Следует отметить, что число может быть записано в двоичном виде, а система счисления при этом может быть не двоичной, с другим основанием. Пример: двоично-десятичное кодирование, в котором десятичные цифры записываются в двоичном виде, а система счисления — десятичная.

Преобразование чисел.

Для преобразования из двоичной системы в десятичную используют следующую таблицу степеней основания 2:

1 | 2 | 4 | 8 | 16 | 31 | 64 | 128 | 126 | 512 |

Начиная с цифры 1 все цифры умножаются на два. Точка, которая стоит после 1, называется двоичной точкой.

Преобразование двоичных чисел в десятичные

Для перевода двоичного числа в десятичное необходимо это число представить в виде суммы произведений степеней основания двоичной системы счисления на соответствующие цифры в разрядах двоичного числа.

Например, требуется перевести двоичное число 10110110 в десятичное. В этом числе 8 цифр и 8 разрядов ( разряды считаются, начиная с нулевого, которому соответствует младший бит). В соответствии с уже известным нам правилом представим его в виде суммы степеней с основанием 2:

101101102 = (1·27)+(0·26)+(1·25)+(1·24)+(0·23)+(1·22)+(1·21)+(0·20) = 128+32+16+4+2 = 18210

Точно так же, начиная с двоичной точки, двигайтесь справа налево. Под каждой двоичной единицей напишите её эквивалент в строчке ниже. Сложите получившиеся десятичные числа.

Таким образом, двоичное число 10110110 равнозначно десятичному 182.

Преобразование десятичных чисел в двоичные

Допустим, нам нужно перевести число 19 в двоичное. Вы можете воспользоваться следующей процедурой :

            19 /2 = 9  с остатком 1

             9  /2 = 4  c остатком 1

             4  /2 = 2  с остатком 0

             2  /2 = 1  с остатком 0

             1  /2 = 0  с остатком 1

Рисунок 1. Перевод в двоичное число

Итак, мы делим каждое частное на 2 и записываем остаток в конец двоичной записи. Продолжаем деление до тех пор, пока в делимом не будет 0. В результате получаем число 19 в двоичной записи: 10011.

2. Разработка программы двоичного калькулятора

Задание: Произвести математические действия с двоичными числами.

Для решения подобной задачи, нам нужно будет ввести двоичное число, совершить математическое действие с другим двоичным числом и получить ответ в двоичном виде.

Постановка задачи: Разработать калькулятор, который будет производить математические действия с двоичными числами такие как «деление», «сложение», «вычитание», «умножение».

Метод решения задачи:  Программа будет иметь консольный вид. Изначально, при запуске программы, будет выходить интерфейс, в котором ясно написано, что следует делать для выполнения действий с двоичными числами. Ответ будет тоже в двоичном виде.
3.Блок схема программы

1

2

3

4

5

нет

6

Да

7

8  Нет

Да

 

9

 10

 11

12 Нет

Да

13

14

15

16

Нет

Да 17

18

18

         К 21 к 19

 К 18

19

20

21

22

23

24

 25 Нет

Да 26

27

29

28

 К 30

30

 

 

 

 31

 32

 

 33

34

35

36

37

Нет

38 Да

38

 39

 40

 41

 42

 43


4. Математическая модель решаемой программы

Таблица сложения

+

0

1

0

0

1

1

1

10

Пример сложения «столбиком» (14 + 5 = 19):

+

1

1

1

0

1

0

1

1

0

0

1

1

Таблица умножения

×

0

1

0

0

0

1

0

1

Пример умножения «столбиком» (14 × 5 = 70):

×

1

1

1

0

1

0

1

+

1

1

1

0

1

1

1

0

1

0

0

0

1

1

0

Таблица двоичного сложения

0+0=0

0+1=1

1+0=1

1+1=0 +

+единица переносится в старший разряд

Таблица двоичного вычитания

0-0=0

1-0=1

1-1=0

0-1=1 +

+единица занимается из старшего разряда

Таблица двоичного умножения

0*0=0

0*1=0

1*0=0

1*1=1

Двоичная система счисления: сложение

Правила сложения двоичных чисел аналогичны правилам в десятичной системе счисления.

Таблица сложения в двоичной системе счисления:

1 + 1 = 10
1 + 0 = 1 и 0 + 1 = 1
0 + 0 = 0

Здесь все числа двоичные.

Пример в двоичной системе счисления:

1 + 0 = 1

Переведём левую и правую части этого равенства в десятичную систему:

1 * 20 + 0 * 20 = 1 * 20

получаем в десятичной системе:

1 + 0 = 1

Пример: Сложим числа 1001 и 10. Складывать будем «столбиком», как и в десятичной системе счисления:

Пример: Сложим 100 и 100:

Пример: Сложим 101 и 101:

Двоичная система счисления: вычитание

Таблица вычитания двоичных чисел:

10 - 1 = 1
1 - 0 = 1
1 - 1 = 0
0 - 0 = 0

Здесь все числа двоичные.

Пример в двоичной системе счисления:

10 - 1 = 1

Переведём левую и правую части этого равенства в десятичную систему:

1 * 21 + 0 * 20 - 1 * 20 = 1 * 20

получаем в десятичной системе:

2 + 0 - 1 = 1

Пример. Вычтем из числа 100 число 10. Вычетать будем «столбиком», как и в десятичной системе счисления:

Здесь сначала из правого нуля в 100 вычли ноль, а после, чтоб из среднего нуля в 100 вычесть 1, мы заняли 1 из позиции 3. Всё как в десятичной системе, но в нашем распоряжении только 0 и 1 и таблица вычитания.

Пример. Вычтем из числа 1001 число 10.

Пример. Вычтем из числа 1000 число 1.

Двоичная система счисления: умножение

Таблица умножения двоичных чисел:

1 * 1 = 1
1 * 0 = 0 и 0 * 1 = 0
0 * 0 = 0

Здесь все числа двоичные.

Пример. Умножать будем «столбиком», как и в десятичной системе счисления:

Пример:

Двоичная система счисления: деление

Используя таблицу вычитания и таблицу умножения для двоичных чисел, делим подобно тому, как мы делим десятичные числа.

Пример деления двоичных чисел:


5. Описание интерфейса

Рисунок 3: Главное окно программы.

Рисунок 4: Выбор действия, ввод первого двузначного числа

Рисунок 5: Ввод второго двузначного числа

Рисунок 6: Вывод ответа и предложение продолжить операции


6. Инструкция по применению программы

К примеру вам нужно сложить два двоичных числа и вы решили воспользоваться данной программой.

  1.  Запустить программу

Вы увидите черное окошко с выбором действий (сложение, вычитание, деление, умножение)

  1.  Выбираете действие которое будете выполнять со своими числами, например сложение, оно под номером «1». Значит надо ввести с клавиатуры цифру «1» жмете Enter.
  2.  Программа запросит ввести 1 число которое вы хотели сложить, после ввода числа нажмите Enter.
  3.  После введения первого числа программа запросит второе число которое вы хотели сложить введите в клавиатуры второе число и нажмите Enter.
  4.  Под введенным вами вторым числом вы увидите ответ, при сумме введенных ранее чисел.
  5.  Далее можете продолжить операции или выйти из программы, введя «0» с клавиатуры и нажав Enter два раза.
  6.  
    Проверка работоспособности программы

Рисунок 7: Проверка сложения

Пример разложения десятичного числа в двоичное

14/2 =7 остаток 0

7/2=3 остаток 1

3/2=1 остаток 1

Теперь считываем с конца в начало и получаем 1110

5/2=2 остаток 1

2/2=1 остаток 0

Считываем с конца в начало и получаем 101

Таблица сложения

+

0

1

0

0

1

1

1

10

Двоичная система счисления: сложение  (14 + 5 = 19):

+

1

1

1

0

1

0

1

1

0

0

1

1

Рисунок 8: Проверка умножения

Двоичная система счисления: умножение

Таблица умножения двоичных чисел:

1 * 1 = 1
1 * 0 = 0 и 0 * 1 = 0
0 * 0 = 0

Здесь все числа двоичные.

Пример. Умножать будем «столбиком», как и в десятичной системе счисления:

Рисунок 9: Проверка Деления

Двоичная система счисления: деление

Используя таблицу вычитания и таблицу умножения для двоичных чисел, делим подобно тому, как мы делим десятичные числа.

Пример деления двоичных чисел:

Рисунок 10: Проверка  Вычитания

Двоичная система счисления: вычитание

Таблица вычитания двоичных чисел:

10 - 1 = 1
1 - 0 = 1
1 - 1 = 0
0 - 0 = 0

Здесь все числа двоичные.

Пример в двоичной системе счисления:

10 - 1 = 1

Переведём левую и правую части этого равенства в десятичную систему:

1 * 21 + 0 * 20 - 1 * 20 = 1 * 20

получаем в десятичной системе:

2 + 0 - 1 = 1

Пример. Вычтем из числа 100 число 10. Вычетать будем «столбиком», как и в десятичной системе счисления:

  1.  
    Актуальность и проблематика программы

Актуальность: Эта программа делит, умножает, складывает, делит двоичные числа. Работает стабильно. Создана в среде С++ в консольном варианте. Работает как с операционной системой Windows так и с ОС Linux. Данная программа, на мой взгляд не столь востребована в данное время, потому что существует много аналогов этой программы. Даже взять стандартный инженерный калькулятор Windows. В нем можно посчитать не только в двоичной системе, но и в десятеричной, шестнадцатеричной и т.д.  Но если смотреть со стороны студента МБА, то программа очень даже актуальна. Когда речь идет о обучении программирования на языке С++ то начать с такой программы как калькулятор весьма полезно. Программа имеет легкий интерфейс.

Проблематика: При вычитании чисел где в ответе должен получиться «0» выводиться «00», а если в ответе должна получиться единица то выводиться «01»  А в целом программа работает без сбоев и выводов ошибок. При вводе чисел таких как 2,3,4,5,6 и т.д., то есть не двоичных, программа не выдает ошибок а выдает ответ «с потолка»

Решить проблему с защитой от вода букв и цифр больше «0» и «1» так и не удалось. Программа продолжает брать ответ  «с потолка».

  1.  
    Список используемой литературы
  2.  Google.com
  3.  www.Wikipedia.org
  4.  Н. Подбельский «Язык С++»; Питер, Санкт – Петербург 2004.
  5.  Н.Культин «Практика программирования на С++». «Питер», Санкт – Петербург 2003.
  6.  А.Л. Фридман «Язык программирования С++ » курс лекций; Интернет Университет Информационных технологий; Москва 2003

  1.  
    Приложение
    (листинг программы)

#include <iostream>

#include <math.h>

#include <fstream>

#include <windows.h>

using namespace std;

char bufRus[256];

char* Rus(const char* text);

int chv101();

int chv102();

int chv2(int d);

int main()

{

   int perv101, perv102;

   int c, d, dd, a, b;

   while (c != 0)

   {

   cout<<Rus("Добропожаловать в калькулятор!\n");

   cout<<Rus("1 - Сложение\n");

   cout<<Rus("2 - Вычитание\n");

   cout<<Rus("3 - Деление\n");

   cout<<Rus("4 - Умножение\n");

   cout<<Rus("0 - Выход\n");

   cin >> c;

   switch (c)

   {

       case 1:

       {

           perv101 = chv101();

           perv102 = chv102();

           d=perv101+perv102;

           chv2(d);

           cout << endl;

       }

       break;

       case 2:

       {

           perv101 = chv101();

           perv102 = chv102();

           d=perv101-perv102;

           chv2(d);

           cout << endl;

       }

       break;

       case 3:

       {

           perv101 = chv101();

           perv102 = chv102();

           d=perv101/perv102;

           chv2(d);

           cout << endl;

       }

       break;

       case 4:

       {

           perv101 = chv101();

           perv102 = chv102();

           d=perv101*perv102;

           chv2(d);

           cout << endl;

       }

       break;

   }

   }

return 0;

}

int chv101()

{

   int y=0, a=0,i,count=0,j,as,sa;

    char str[50];

   cout<<Rus("Введите первое двузначное число:\n");

   cin>>str;

   for (i=0; str[i]!='\0'; i++)

       {

       if (str[i]!=' ')

           {

           count++;

           }

       }

   int mas[count];

   char popo;

   for (i=0; i<count; i++)

    {

    popo=str[i];

    switch (popo)

      {

       case '0': {mas[i]=0;} break;

       case '1': {mas[i]=1;} break;

      }

    }

   for (i=0; i<count; i++)

     {

     sa=((count-i)-1);

     a=a+(mas[i]*(pow(2,sa)));

     }

return a;

}

int chv102()

{

   int y=0, b=0,i,count=0,j,as,sa;

    char str[50];

   cout<<Rus("Введите второе двузначное число:\n");

   cin>>str;

   for (i=0; str[i]!='\0'; i++)

       {

       if (str[i]!=' ')

           {

           count++;

           }

       }

   int mas[count];

   char popo;

   for (i=0; i<count; i++)

    {

    popo=str[i];

    switch (popo)

      {

       case '0': {mas[i]=0;} break;

       case '1': {mas[i]=1;} break;

      }

    }

   for (i=0; i<count; i++)

     {

     sa=((count-i)-1);

     b=b+(mas[i]*(pow(2,sa)));

     }

return b;

}

int chv2(int d)

{

   int i=0, b=0, dd=0,bb=0;

   dd = d;

   bb = d;

   for (i=0; ; i++)

       {

       b++;

       d=d/2;

       if (d<2)

           {

           break;

           }

       }

   b=b+1;//из скольки чисел будет состоять дв число

   int cel[b],ost[b],dvoich[b];

   int trans = 0;

   for (i=0; i<b; i++)

       {

       cel[i]=bb/2;

       ost[i]=cel[i];

       bb=bb/2;

       cel[i]=dd-(cel[i]*2);

       dd=ost[i];

       dvoich[(b-1)-i]=cel[i];

       }

   for (i=0; i<b; i++)

       {

       cout<< dvoich[i];

       }

return dvoich[i];

}

char* Rus(const char* text)

{

       CharToOem(text, bufRus);

       return bufRus;

}

  1.  
    Заключение
  2.  В результате разработки программы двоичного калькулятора приобрел навыки работы с двоичным кодом и языком С++.
  3.  Ознакомился с программированием в CodeBlocks
  4.  В ходе разработки были использованы такие функции как «Case» (выбора действия, структура выбора)
  5.  В ходе разработке были проанализированы и использованы следующие технологии:

1) Str

2) массивы;

3) Циклы;

4) Структура выбора;

    5.  Программа может быть усовершенствована, если внести в нее защиту от некорректно введенных данных.

   6.  В результате разработки программы понял что «Жизнь - не малина!»


 

А также другие работы, которые могут Вас заинтересовать

28674. Разработка и принятие первой Конституции РСФСР 1918 г., ее классовый характер. Избирательное право 12.53 KB
  Она закрепила политическую основу государства Советы рабочих солдатских и крестьянских депутатов. Выборы в Советы были многоступенчатыми и основанными на принципах представительства и делегирования граждане прямо избирали депутатов в сельские и городские Советы и делегатов на выборы всех последующих уровней. Правом избирать и быть избранными в Советы пользовались трудящиеся достигшие 18 лет независимо от пола национальности вероисповедания и т.
28675. Основные положения Конституции РСФСР 1918 г. Политическая система. Система органов власти и управления 12.33 KB
  Основные положения Конституции РСФСР 1918 г. Конституция РСФСР состояла из шести разделов: 1. Общие положения Конституции РСФСР. О гербе и флаге РСФСР.
28676. Политика «военного коммунизма», ее сущность, содержание. Продразверстка. Всеобщая трудовая повинность 13.36 KB
  й чрезвычайных мер управления эккой харных для периода Гражданской войны. Поскольку жесткая система контроля и распредя основывалась на уравнительном распреди для трудящихся она получила название коммунизма а поскольку система возникла как чрезвычайная мера в период войны название военного коммунизма. С окончанием Гражданской войны он был отменен.
28677. Перестройка государственного аппарата в годы гражданской войны и иностранной военной интервенции. Совет рабочей и крестьянской обороны 13.45 KB
  В перерывах между съездами Советов высшим органом власти являлся ВЦИК. был установлен сессионный порядок работы ВЦИК. С сессионным порядком работы ВЦИК изменился и харер деятти его Президиума: он был наделен правом руководить заседаниями ВЦИК наблюдать за выпем его постановлений назначать наркомов инструктировать центральные и местные органы отменять постановления СНК и др. Президиум ВЦИК был наделен законодательными полномочиями.
28678. Военно-политический и хозяйственный союз республик в годы гражданской войны -и иностранной военной интервенции (1918- 1920 гг.) 12.25 KB
  Военнополитический и хозяйственный союз республик в годы гражданской войны и иностранной военной интервенции 1918 1920 гг. ознаменовался рождением Российской Советской Федеративной Социалистической Республики. На первом этапе на территории бывшей царской России возникли автономные республики территориальные автономии с учетом национального состава населения появились суверенные Советские республики. Второй этап объединительного движения народов советских республик связан с периодом гражданской войны и иностранной военной интервенции...
28679. Переход Советского государства к новой экономической политике, ее сущность Совершенствование государственного аппарата и законодательства в период перехода к НЭПу 13.46 KB
  Переход Советского государства к новой экономической политике ее сущность Совершенствование государственного аппарата и законодательства в период перехода к НЭПу. X съезд Коммунистической партии принял решение о переходе от продразверстки к продналогу и о переходе к новой экономической политике нэпу. Переход к новой эккой политике означал отказ от методов военного коммунизма. предполагалось начать выпуск новой валюты.
28680. Судебная реформа 1922 г. и создание единой судебной системы. Упразднение чрезвычайных судебных органов. Создание прокуратуры и адвокатуры 13.61 KB
  ВЦИК утвердил Положение о судоустройстве РСФСР положившее начало новой судебной реформе. Положение вводилось в действие на всей терории РСФСР с 1 января 1923 г. Данным нормативным актом создавалась единая судебная система: народный суд в составе постоянного народного судьи; народный суд в составе постоянного народного судьи и 2ух народных заседателей; губернский суд; Верховный суд РСФСР и его коллегии. Параллельно с единой системой народных судов РСФСР действовали специальные суды: военные трибуналы военнотранспортные трибуналы...
28681. Развитие законодательства и его кодификация в 1922 г. Кодексы законов о труде, земле, гражданский и уголовный кодексы 1922 г. 14.06 KB
  ГК РСФСР состоял из 4 разделов: общ. ЗК РСФСР состоял из Оснх положений и 3 частей: о трудовом землепользи о городских землях и госных земельных имвах о землеустройстве и переселении. Кодекс закрепил отмену частной собствти на землю недра воды и леса в пределах РСФСР. КЗоТ РСФСР сост.
28682. Национально-государственное размежевание в Средней Азии и образование новых советских социалистических республик 12.23 KB
  Первыми субъектами СССР были четыре союзные республики: РСФСР УССР БССР и ЗСФСР. В дальнейшем СССР пополнялся новыми субъектами. На первом этапе развития Союза ССР происходило национальногосударственное размежевание в Средней Азии на территории Туркестанской АССР входившей в состав РСФСР и двух самостоятельных государств Хорезмской и Бухарской народных советских республик. были приняты декларации об образовании Узбекской ССР и Туркменской ССР.