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

Блок-схема (алгоритм программы для перевода чисел из десятичной в двоичную систему исчисления и на оборот)

m=i

Покаa не станет равно 0

Получение значения ячейки

Если выбран пункт «В двоичную»

i=1

Для i=1 до m-1

Запись результата в строку

Если выбран пункт «В десятичную»

Запоминание значения

Вычисление длины строки

d=0

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

Если число цифр в строке меньше следующего разряда для вычисления

Для i=1 до m

Перевод числа в строку;

Вычисление длины строки.

Увеличение разряда

Старт

Получение остатка от деления;

Деление нацело;

Запись в массив остатка; Увеличение I.

Запись результата в ячейку

Конец

Запись результата в ячейку

Конец

Рабочий вид программы (принцип действия)

1

2

3

4

5

  1. Ячейка для ввода исходного числа.

  2. Ячейка, в которую выводится результат вычисления.

  3. Флажок выбора системы исчисления (двоичная).

  4. Флажок выбора системы исчисления (десятичная).

  5. Кнопка после нажатия которой происходит вычисление.

Код программы

Private Sub CommandButton1_Click()

Dim a As Integer, d As Integer, e(10) As Integer, i As Integer, m As Integer, tmp As Integer 'переменные

Dim ch As String 'переменные

a = Cells(1, 1) 'Запись в a числа из первой ячейки (исходное число)

If OptionButton1 = True Then 'Если выбран пункт "В двоичную"

i = 1 'Стартовое число, количество цифр в числе

Do Until a = 0 'Пока a не будет равно 0, цикл будет продолжаться

d = a Mod 2 'Получение остатка от деления

a = a \ 2 'Само деление (нацело)

e(i) = d 'Запись в массив остатка (массив будет выводиться в виде строки)

i = i + 1 'Повышение количества чисел на одно

Loop

m = i 'Запоминание количества чисел

For i = 1 To m - 1 'Начало цикла записи в строку результата

ch = ch + Str(e(m - i)) 'Соппсна запись результата в строку

Next i

Cells(2, 1) = ch 'Вывод результата в ячейку

End If

If OptionButton2 = True Then 'Если выбран пункт "В десятичную"

ch = Cells(1, 1) 'Запись значения строкового

a = Cells(1, 1) 'Запись значения цифрового

m = Len(ch) 'Вычисление длины строки

d = 0 'Установка начальной суммы

For i = 1 To m 'Начало цикла вычисления

d = d + ((a \ 10 ^ (m - i)) * (2 ^ (m - i))) 'Много букв (много цыфер?): получение числа из наивысшего разряда и умножение его на 2 в степени порядка разряда

a = a - 10 ^ (m - i) 'Уменьшение числа на разряд, присвоение a следующего значения

ch = CStr(a) 'Установка числа в строку

tmp = Len(ch) 'Вычисление длины строки

If tmp < (m - i) Then 'Бубен: если количество цифр в строке, меньше следующего разряда для вычисления

i = i + 1 'увеличение на 1 разряда для вычисления

End If

Next i

Cells(2, 1) = d 'Запись результат в ячейку

End If

End Sub