11489

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

Курсовая

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

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

Русский

2013-04-08

380.5 KB

271 чел.

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

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

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

Содержание

Введение

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

  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.  В результате разработки программы понял что «Жизнь - не малина!»


 

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

26100. Культура как система 20.17 KB
  Однако такое восприятие культуры утвердилось далеко не сразу. Начало системному рассмотрению культуры было положено Эдуардом Бернеттом Тайлором в работе Первобытная культура. На основе изучения большого этнографического материала автор описывает и анализирует конкретные элементы первобытной культуры на фоне культуры мировой и формулирует целостное видение культуры первобытности в контексте теории анимизма – специфической веры первобытного человека в одушевленность всей природы которая связывала в единую целостность весь его практический...
26101. Методология, методы и методика исследования культуры 13.43 KB
  Методология – система базовых мировоззренческих принципов исследования включающая методы методики способы и средства реализации поставленных целей и задач. Методология исследования культуры: Феноменологические Функционализм Структурализм Постструктурализм Системный Синергетический Постмодернизм Диалектический Семиотический Органицизм Диффузионизм Цивилизационный Аксиологический и др. Методология: Универсалистская Индивидуалистическая Конструктивистская Метод – последовательность шагов действий которые необходимо...
26102. Основные подходы в изучении культуры 17.67 KB
  Ценности нормы и значения Предметные и организационные формы Главная функция Креативная творение бытия человеком или для человека Адаптация и воспроизводство жизненною уклада людей Латентность поддержание образца и социализация Воспроизводство и обновление самой деятельности Приоритетный метод исследования Диалектический Эволюционный Структурнофункциональный Системнодеятельностный Философский подход дает самую широкую панораму видения культуры предполагая изучение фундаментальных оснований человеческого бытия глубин самосознания...
26103. Проблема типологии культуры: основные принципы построения 17.54 KB
  Этническая культура совокупность черт культуры касающихся преимущественно обыденной жизни бытовой культуры. Этническая культура включает орудия труда нравы обычаи нормы обычного права ценности постройки одежду пищу средства передвижений жилище знания верования виды народного искусства. Национальная культура имеет соционормативную структуру которая обеспечивает координацию поведения и деятельности людей объединенных в рамках данной общности; предохраняет от распада и способствует адаптации членов общества к внешним и...
26104. Культура как способ самореализации человека 14.83 KB
  Человек выступает одновременно и как субъект культуры ее творец и как объект ее воздействия. Воспитание определенного типа личности главная цель в функционировании духовной культуры. В основе функционирования всей духовной культуры лежит деятельность по производству и воспроизводству духовных ценностей а также деятельность по овладению этими ценностями.
26105. Понятие затрат, издержек и расходов. Классификация затрат для принятия управленческих решений 48 KB
  Например: швейной фабрикой был закуплен материал на 100 тыс руб. Однако находится предприятие которое согласно купить изделия из этого материала за 300 тыс руб. при этом дополнительные затраты на изготовление этой продукции составят 260 тыс руб. целесообразно ли принимать заказ Затраты в сумме 100 тыс руб произведены и не будут изменяться в зависимости от выбранного варианта решения.
26106. Классификация затрат для исчисления себестоимости 29.5 KB
  1Прямые это те затраты которые экономически обосновано напрямую включаются в себестоимость отдельного вида продукции работ услуг. Материалы могут основными и вспомогательными прямые трудовые зарплата основных производственных рабочих 2Косвенные общепроизводственные расходы их нельзя напрямую отнести на готовою продукцию они распределяются между отдельными изделиями согласно выбранной на предприятии методики пропорционально базе распределения косвенных расходов Себестоимость продукции это выраженные в денежной форме...
26107. Понятие и объекты калькулирования 32.5 KB
  Задача калькулирования определить размер затрат приходящихся на единицу продукции. фактическая отчетная калькуляция отражает совокупность всех затрат на производство и реализацию продукции. Для рациональной организации учета издержек необходимо правильно выбрать метод учета затрат и калькулирования себестоимости продукции работ услуг. Под методом учета затрат и калькулирования себестоимость понимают совокупность документирования и отражения производственных затрат обеспечивающих определение фактической себестоимости продукции а т.
26108. Попроцессный метод учета затрат на производств и калькулирование себестоимости продукции 31 KB
  Попроцессный метод учета затрат на производств и калькулирование себестоимости продукции Структура ответа: Сфера и условия применения. Особенности таких видов производства массовый тип производства непродолжительный цикл ограниченность номенклатуры выпускаемой продукции единые единицы измерения полное отсутствие либо не значительные размеры незавершенного производства.простой используется при отсутствии запасов готовой продукции на конец отчетного периода. Себестоимость = затраты за отчетный период объем произведенной продукции в...