Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 27.11.2012
Сообщений: 28
1

Реализовать набор подпрограмм для выполнения операций над числами в шеснадцатеричной СС

27.11.2012, 21:54. Показов 1707. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. Задача - неабходимо реализовать в виде модуля набор подпрограмм для выполнения следующих операций над натуральными числами в шеснадцатеричной системе счисления:
1) Сложения;
2) Вычитания;
3) Умножения;
4) Деления;
5) Перевода из двоичной системы счисления в шеснадцатеричную;
6) Перевода из шеснадцатиричной системы счисления в десятичную;
7) Функции проверки правильности записи числа в шеснадцатеричной системе счисления;
8) Функции реализующие операции отношения;
Простите за дурацкий лексикон и незнание основ, но
вопрос - как следует реализовать код, что бы Шарп понимал, что я работаю именно с шеснадцатеричной сс, подходил к преподу с вопросом, а можно ли переводить числа введеные скажем в text box в 10ю сс, проводить с ними необходимые операции, а затем снова переводить в 16ю сс...и затем уже выводить результат...на что она сообщила что "перехитрить самого себя" мне не удастся и что бы модуль работал именно с 16й сс...помогите, с чего начать? От чего отолкнуться?


Работает с 10й сс
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using System.Collections;
 
namespace ModOperaciy
{
    public class Class1
    {
        public static int SummaFunc(int x, int y)
        {
            return (x + y);
        }
        public static int RaznostFunc(int x, int y)
        {
            return (x - y);
        }
        public static int ProizvedenieFunc(int x, int y)
        {
            return (x * y);
        }
        public static int ChastnoeFunc(int x, int y)
        {
            return (x / y);
        }
        public static string Otnoshenye(int x, int y, string z)
        {
            if (x == y) z = "числа равны";
            else if (x > y) z = x + " больше";
            else if (x < y) z = y + " больше";
            return z;
        }
 
 
        public static long ToDec(string value, int fromBase)  //Перевод в десятичную
        {
            const string TABLE = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
            long rank = 1, result = 0;
            for (var i = value.Length - 1; i >= 0; i--)
            {
                var index = TABLE.IndexOf(value[i]);
                result += rank * index;
                rank *= fromBase;
            }
            return result;
        }
       public static string DecToHex(int chislo) //Перевод из десятичной системы в шестнадцатеричную
        {
 
            string hout = "", b = "";
            int q;
 
 
            while (chislo > 0)
            {
                q = chislo % 16;
 
                chislo = chislo / 16;
                if (q >= 0 && q < 10)
                
                    b = q.ToString();
                
                else
                if (q == 10)
                    b = "A";
                else if (q == 11)
                    b = "B";
                else if (q == 12)
                   b = "C";
                else if (q == 13)
                    b = "D";
                else if (q == 14)
                    b = "E";
                else if (q == 15)
                    b = "F";
               
                hout =hout + b;
            } 
            return new string(hout.ToCharArray().Reverse().ToArray());
          
       }
        
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2012, 21:54
Ответы с готовыми решениями:

Реализовать в виде класса набор подпрограмм для выполнения операций над комплексными числами
1. сложение; 2. вычитание; 3. умножение; 4. модуль комплексного числа;

Реализовать в виде модуля набор подпрограмм для выполнения следующих операций с массивом размерности nxm:
Реализовать в виде модуля набор подпрограмм для выполнения следующих операций с массивом...

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

Реализовать в виде класса набор методов для выполнения следующих операций с целыми числами:
Реализовать в виде класса набор методов для выполнения следующих операций с целыми числами: 1)...

9
65 / 50 / 7
Регистрация: 09.11.2012
Сообщений: 219
27.11.2012, 23:59 2
C#
1
2
3
4
            int a, b;
            a = 0x21fa;
            b = 0xeba5;
            Console.WriteLine("0x{0}", Convert.ToString(a + b, 16));
Так не канает?
Вообще чота бред какой-то, всё ж работает через двоичную всё равно, или я не понял, чего хочет эта женщина (хотя они сами не знают, чего хотят). [YAOMING]
1
0 / 0 / 1
Регистрация: 27.11.2012
Сообщений: 28
28.11.2012, 00:25  [ТС] 3
Я думаю что канает, но все равно плюнул на слова этой сорокалетней, незамужней женщины и сделал так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
  {
        public static string SummaFunc(string x, string y)
        
        {
           int x10 = Class1.ToDec(x, 16);
           int y10 = Class1.ToDec(y, 16);
           int z10 = x10 + y10;
           string z16 = Class1.DecToHex(z10);
           return z16;
        }
 
 
        public static int ToDec(string value, int fromBase)  //Перевод в десятичную
        {
            const string TABLE = "0123456789ABCDEF";
            int rank = 1, result = 0;
            for (var i = value.Length - 1; i >= 0; i--)
            {
                var index = TABLE.IndexOf(value[i]);
 
                if (index < 0 || index >= fromBase)
                { MessageBox.Show("Недопустимый символ!\nПроверьте введеные значения.", "Ошибка ввода"); break; }
                    
                result += rank * index;
                rank *= fromBase;
            }
            return result;
        }
        public static string DecToHex(int chislo) //Перевод из десятичной системы в шестнадцатеричную
        {
 
            string hout = "", b = "";
            int q;
 
           
            while (chislo > 0)
            {
                q = chislo % 16;
 
                chislo = chislo / 16;
                if (q >= 0 && q < 10)
 
                    b = q.ToString();
 
                else
                    if (q == 10)
                        b = "A";
                    else if (q == 11)
                        b = "B";
                    else if (q == 12)
                        b = "C";
                    else if (q == 13)
                        b = "D";
                    else if (q == 14)
                        b = "E";
                    else if (q == 15)
                        b = "F";
 
                hout = hout + b;
            }
            return new string(hout.ToCharArray().Reverse().ToArray());
 
        }


т.е вначале перевожу string значение скажем text box'a в int значение 10 сс, делаю все действия и возвращаюсь к значению string 16 сс....пусть ставит что хочет
0
65 / 50 / 7
Регистрация: 09.11.2012
Сообщений: 219
28.11.2012, 00:49 4
Wanz34rus, а зачем эти else if, если можно просто:
C#
1
2
3
4
            string mask = "0123456789ABCDEF";
            Console.WriteLine(mask[5]);
            Console.WriteLine(mask[10]);
            Console.WriteLine(mask[13]);
И не пиши транслитом "chislo", это не труъ. Пиши либо number, либо, если уж так хочется по-русски, то C# понимает русские символы:
C#
1
2
            int число = 9;
            Console.WriteLine(Math.Pow(число, число / 3));
0
0 / 0 / 1
Регистрация: 27.11.2012
Сообщений: 28
28.11.2012, 12:12  [ТС] 5
Хм, если честно не знал на счет русских символов. Труъ не труъ..что с меня взять....

Добавлено через 3 минуты
Цитата Сообщение от Necronomicron Посмотреть сообщение
Wanz34rus, а зачем эти else if, если можно просто:
C#
1
2
3
4
            string mask = "0123456789ABCDEF";
            Console.WriteLine(mask[5]);
            Console.WriteLine(mask[10]);
            Console.WriteLine(mask[13]);
Зачем мне выводить элементы строки? Я ведь выполняю проверку, если на входе будет скажем 10, то на выходе будет A, или я чего то недопонимаю?
0
65 / 50 / 7
Регистрация: 09.11.2012
Сообщений: 219
28.11.2012, 12:17 6
Цитата Сообщение от Wanz34rus Посмотреть сообщение
Зачем мне выводить элементы строки?
Ну это же просто пример, а ты используй как надо. Просто ты пишешь:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
                if (q >= 0 && q < 10)
 
                    b = q.ToString();
 
                else
                    if (q == 10)
                        b = "A";
                    else if (q == 11)
                        b = "B";
                    else if (q == 12)
                        b = "C";
                    else if (q == 13)
                        b = "D";
                    else if (q == 14)
                        b = "E";
                    else if (q == 15)
                        b = "F";
Зачем? Можно просто:
C#
1
b = TABLE[q]
0
0 / 0 / 1
Регистрация: 27.11.2012
Сообщений: 28
28.11.2012, 12:42  [ТС] 7
Зачем? Можно просто:
C#
1
b = TABLE[q]
Стоп, я опять туплю...при чем тут TABLE? Это с другой подпрограммы же?
0
65 / 50 / 7
Регистрация: 09.11.2012
Сообщений: 219
28.11.2012, 12:44 8
Ну так сделай TABLE глобальной.
И опять же, переменные принято писать с маленькой и маленькими, например: temporaryVariable.
1
0 / 0 / 1
Регистрация: 27.11.2012
Сообщений: 28
01.12.2012, 11:33  [ТС] 9
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
 {
 
 
          //  string s1 = "0xa";
          // string s2 = "0xa";
            string s1 = Console.ReadLine();
            string s2 = Console.ReadLine();
            int a, b;
            a = int.Parse(s1);
            b = int.Parse(s2);
            Console.WriteLine("0x{0}", Convert.ToString(a + b, 16));
            Console.ReadKey();
        }
Вернулся к этому варианту, но выдает ошибку, не переводит string скажем "0xa" в int "0xa" ...как быть?
0
65 / 50 / 7
Регистрация: 09.11.2012
Сообщений: 219
01.12.2012, 11:36 10
http://msdn.microsoft.com/ru-r... 1hf19.aspx
0
01.12.2012, 11:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.12.2012, 11:36
Помогаю со студенческими работами здесь

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

Реализовать в виде класса набор методов для выполнения следующих операций с целыми числами:
Реализовать в виде класса набор методов для выполнения следующих операций с целыми числами: 1)...

Реализовать в виде класса набор методов для выполнения след.операций с квадратными матрицами размерность n*n
Реализовать в виде класса набор методов для выполнения след.операций с квадратными матрицами ...

Определить функции выполнения арифметических операций над комплексными числами
Здравствуйте. Помогите пожалуйста. Даны действительные числа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru