Файл: Разработка модуля для выполнения операций с натуральными числами в 16-ричной системе счисления ( Шестнадцатеричные числа в программировании).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 01.04.2023

Просмотров: 32

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

- При вычитании из меньшего числа большее получим отрицательное шестнадцатеричное число.

- При делении шестнадцатеричных чисел может не получиться целочисленного деления. В таком случае будут указаны целая часть и остаток от деления.

Программа выполнена с использованием языка “C#” версии 7.0. и платформы “Visual Studio 2017”.

using System;

namespace Сalculative_Module

{

class Program

{

static void Main(string[] args)

{

Module.Demonstration();

Console.ReadKey();

}

}

public static class Module

{

private static string ConvertNumber10to16(int X) // Конвертация десятичных чисел в односимвольные шестнадцатеричные числа

{

if (X == 10)

return "A";

else if (X == 11)

return "B";

else if (X == 12)

return "C";

else if (X == 13)

return "D";

else if (X == 14)

return "E";

else if (X == 15)

return "F";

else

return X.ToString();

}

public static string ConvertTo10From16(int X10) // Ввод десятичного числа - вывод шестнадцатеричное число

{

string Y16 = "";

do

{

Y16 = ConvertNumber10to16(X10%16) + Y16;

X10 /= 16;

} while (X10 > 15);

if (X10>0)

Y16 = ConvertNumber10to16(X10) + Y16;

return Y16;

}

private static int ConvertChar16to10(char X) // Конвертация шестнадцатеричных односимвольных чисел в десятичные числа

{

if ((X == 'A') || (X == 'a'))

return 10;

else if ((X == 'B') || (X == 'b'))

return 11;

else if ((X == 'C') || (X == 'c'))

return 12;

else if ((X == 'D') || (X == 'd'))

return 13;

else if ((X == 'E') || (X == 'e'))

return 14;

else if ((X == 'F') || (X == 'f'))

return 15;

else

return X-'0';

}

public static int ConvertTo16From10(string X16) // Ввод шестнадцатеричого числа - вывод десятичное число

{

char[] Num = X16.ToCharArray();

int Rezult = 0;

for (int i = Num.Length - 1, j = 0; i >= 0; i--, j++)

{

Rezult += ConvertChar16to10(Num[j]) * (int)Math.Pow(16, i);

}

return Rezult;

}

public static string Sum16(string A, string B) // Сложение

{

return ConvertTo10From16(ConvertTo16From10(A) + ConvertTo16From10(B));

}

public static string Raz16(string A, string B) // Вычитание

{

int a = ConvertTo16From10(A);

int b = ConvertTo16From10(B);

if (a >= b)

return ConvertTo10From16(ConvertTo16From10(A) - ConvertTo16From10(B));

else

return "-" + ConvertTo10From16(ConvertTo16From10(B) - ConvertTo16From10(A));

}

public static string Mult16(string A, string B) // Умножение

{

return ConvertTo10From16(ConvertTo16From10(A) * ConvertTo16From10(B));

}

public static string Del16(string A, string B) // Деление

{

return ConvertTo10From16(ConvertTo16From10(A) / ConvertTo16From10(B));

}

public static void Demonstration() // Демонстрация работы модуля

{

int x;

string A, B;

Console.WriteLine("Введите натуральное делятичное число ");

x = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("Это число в шестнадцатеричной системе счисления: " + ConvertTo10From16(x));

Console.WriteLine("Введите шестнадцатеричное число число ");

A = Console.ReadLine();

Console.WriteLine("Это число в десятичной системе счисления: " + ConvertTo16From10(A));

Console.WriteLine("Введите подряд два шестнадцатеричных числа");

A = Console.ReadLine();

B = Console.ReadLine();