Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Моя ргр Готово.docx
Скачиваний:
11
Добавлен:
12.02.2015
Размер:
34.17 Кб
Скачать

Министерство образования и науки Российской Федерации

ФГБОУ ВПО

«Саратовский государственный технический университет им. Гагарина Ю.А.»

Кафедра «Информационная безопасность автоматизированных систем»

Расчетно–графическая работа

На тему: «Перевод чисел из одной системы счисления в другую»

Выполнил: студент группы бИФБС-11

Шигонцев Ю.С.

Проверил: к.ф.-м.н., доц. Каф. ИБС

Беспалова Н.В.

Саратов 2014 г.

План

  1. Введение;

  2. Алгоритм решения поставленной задачи на языке программирования C#;

  3. Программа;

  4. Заключение.

Введение:

Еще с давних времен нам приходилось решать сложные математические, алгебраические и геометрические задачи, на которые затрачивалось много времени. И неудивительно, что в результате такого длительного процесса мы допускали ошибки, нам приходилось перерешивать задания по несколько раз. Для этого и была создана первая в своем роде ЭВМ (Электронная Вычислительная Машина). Первые варианты ЭВМ выполняли простейшие задачи: сложение, вычитание, деление и умножение. Со временем ЭВМ развивалась и стало проще выполнять поставленные задачи.

На данный момент мы находимся в той же ситуации. При переводе числа из одной системы счисления в любую другую затрачивается много времени. Чтобы решить эту проблему – мы создадим программу на языке С#.

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

Алгоритм решения и написание программы в c#

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

  1. Число перевести из данной системы счисления в 10-ую СС:

Где:

  1. S – данная система счисления

  2. –данное число

  3. –цифры числа

  4. n – разряд целой части числа

  5. m – разряд дробной части числа

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

  1. Получившееся число в 10-ой системе счисления перевести в любую другую. Для этого мы должны переводить целую и дробную часть числа по отдельности.

  1. Для перевода целой части числа из 10-ой СС в любую другую необходимо выполнить целочисленное деление. Полученное частное нужно делить на данную систему счисления, в которую хотим перевести, пока не останется 0. Остатки нужно выписать в обратном порядке – полученная последовательность и будет являться числом в новой системе счисления

  2. При переводе дробной части нужно умножать на данную систему счисления, в которую хотим перевести. Каждый раз, при умножении, мы отбрасываем целые части, а дробную часть - повторно умножаем. Полученные целые цифры выписываем в прямом порядке – это и получается дробная часть после запятой.

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

Так же не надо забывать, что при работе с системами счисления больше 10-ти, цифрам больше 9-ти присваиваются буквенные значения английского алфавита (A=10, B=11, C=12, D=13, E=14, F=15). Так как в языках программирования числа, имеющие буквенное значение, не распознает, нам придется прописать метод присвоения двухзначных цифр за букву английского алфавита, а исходное число представить как строку. В таком случае за каждой цифрой числа будет закрепляться его индекс.

Теперь приступаем к разработке алгоритма при работе с программой:

  1. Ввод исходного числа. (Ввод числа должен осуществляться через строку. Не забываем проверку на отрицательность числа)

  2. Ввод исходной системы счисления (В пределах ОДЗ)

  3. Перевод исходного числа в число 10-ой системы счисления (для удобства вычисления число должно быть вещественным)

  4. Ввод новой системы счисления (В пределах ОДЗ)

  5. Перевод числа в 10-ой системе счисления в число другой системы счисления. (Перевод целой и дробной части числа проводим каждый отдельно, и их результаты выводим в строковом типе. Не забываем про точность после запятой)

  6. Вывод результата. (Не забываем вывести отрицательный знак, если он присутствует)

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

public static int GetNum(char c)

{

int m = 0;

if (char.IsDigit(c)) //Если символ является цифрой

m = c - '0'; //То ищем разницу между кодами данного символа и цифры ‘0’

if (char.IsUpper(c)) //Если символ является заглавной буквой

m = c - 'A' + 10; //То ищем разницу между кодами данного символа и цифры ‘А’

else //Иначе

{if (char.IsLower(c)) //Если символ является строчной буквой

{m = c - 'a' + 10; }} //То ищем разницу между кодами данного символа и цифры ‘а’

return m; //Выводим полученное число

}

Для обратной операции создаем функцию преобразования числа в символ:

public static char GetChar(int m)

{

char c = '0';

if ((m >= 0) && (m <= 9)) //Если число от 0 до 9

c = (char)(m + '0'); //Сопоставим число с цифрой

if ((m >= 10) && (m <= 15)) //Если число от 10 до 15

c = (char)(m + 'A' - 10); //Сопоставим число с символом

return c; //Выводим полученный символ

}

Для поиска максимальной цифры числа напишем соответствующий метод (в пределах ОДЗ):

private static void Max(string n, out int m, out int max)

{

m = 0; max = 0; char k;

for (int i = 0; i < n.Length; i++)

{k = n[i]; m = GetNum(k);

do {

if ((0 <= k && k <= 'f') || (0 <= k && k <= 'F'))

{

if (max < m)

max = m;

}

} while (((k != ',' && k != '.') && 0 > k && k > 'f') || ((k != ',' && k != '.') && 0 > k && k > 'F'));

}

}

Полное решение поставленной задачи на C# предоставлено на следующей странице в пункте «Программа».