Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
 Аватар для SyxaRuk
0 / 0 / 1
Регистрация: 14.11.2013
Сообщений: 51

Перевести 2 десятичных числа в двоичные

01.12.2013, 15:35. Показов 1023. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Надо перевести 2 десятичных числа в двоичные. Если одно из чисел будет короче второго, то дополнить недостающие старшие биты нулями.
Например, получились числа 110101 и 1001. Надо, чтобы программа вывела 110101 и 001001.
Программа работает, но последние циклы для дополнения нулями не при какихусловиях не работают.
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
            Console.WriteLine("Vvedi 1 chislo:");
            string a = Console.ReadLine();
            int n1 = int.Parse(a);
            Console.WriteLine("Vvedi 2 chislo:");
            string b = Console.ReadLine();
            int n2 = int.Parse(b);
 
            string obr_str1 = "";
            while (n1 != 0)
            {
                obr_str1 += n1 % 2;
                n1 /= 2;
            }
 
            string str1 = "";
            for (int i = (obr_str1.Length - 1); i >= 0; i--)
            {
                str1 += obr_str1[i];
            }
 
            string obr_str2 = "";
            while (n2 != 0)
            {
                obr_str2 += n2 % 2;
                n2 /= 2;
            }
 
            string str2 = "";
            for (int i = (obr_str2.Length - 1); i >= 0; i--)
            {
                str2 += obr_str2[i];
            }
            if (str1.Length < str2.Length)
            {
                while (str1.Length == str2.Length)
                {
                    str1 = str1.Insert(0, "0");
                }
            }
            if (str2.Length < str1.Length)
            {
                while (str2.Length == str1.Length)
                {
                    str2 = str2.Insert(0, "0");
                }
            }
            Console.WriteLine(str1);
            Console.WriteLine(str2);


Хотя так все работает:
Кликните здесь для просмотра всего текста
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
            if (str1.Length < str2.Length) { str1 = str1.Insert(0, "0"); }
            if (str1.Length < str2.Length) { str1 = str1.Insert(0, "0"); }
            if (str1.Length < str2.Length) { str1 = str1.Insert(0, "0"); }
            if (str1.Length < str2.Length) { str1 = str1.Insert(0, "0"); }
            if (str1.Length < str2.Length) { str1 = str1.Insert(0, "0"); }
            if (str1.Length < str2.Length) { str1 = str1.Insert(0, "0"); }
            if (str1.Length < str2.Length) { str1 = str1.Insert(0, "0"); }
            if (str1.Length < str2.Length) { str1 = str1.Insert(0, "0"); }
            if (str1.Length < str2.Length) { str1 = str1.Insert(0, "0"); }
            if (str1.Length < str2.Length) { str1 = str1.Insert(0, "0"); }
            if (str1.Length < str2.Length) { str1 = str1.Insert(0, "0"); }
            if (str1.Length < str2.Length) { str1 = str1.Insert(0, "0"); }
 
 
            if (str1.Length > str2.Length) { str2 = str2.Insert(0, "0"); }
            if (str1.Length > str2.Length) { str2 = str2.Insert(0, "0"); }
            if (str1.Length > str2.Length) { str2 = str2.Insert(0, "0"); }
            if (str1.Length > str2.Length) { str2 = str2.Insert(0, "0"); }
            if (str1.Length > str2.Length) { str2 = str2.Insert(0, "0"); }
            if (str1.Length > str2.Length) { str2 = str2.Insert(0, "0"); }
            if (str1.Length > str2.Length) { str2 = str2.Insert(0, "0"); }
            if (str1.Length > str2.Length) { str2 = str2.Insert(0, "0"); }
            if (str1.Length > str2.Length) { str2 = str2.Insert(0, "0"); } 
            if (str1.Length > str2.Length) { str2 = str2.Insert(0, "0"); }
            if (str1.Length > str2.Length) { str2 = str2.Insert(0, "0"); }
            if (str1.Length > str2.Length) { str2 = str2.Insert(0, "0"); }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.12.2013, 15:35
Ответы с готовыми решениями:

Перевести массив десятичных чисел в двоичные
Помогите пожалуйста на языке СИ: Дан массив целых чисел, состоящий из N элементов (N=10). Перевести заданные числа в двоичную систему...

Перевести десятичные числа в двоичные с точностью до 10–8
Перевести десятичные числа в двоичные с точностью до 10–8. Для полученных двоичных чисел записать прямой, обратный и дополнительный коды ...

Как считать из файла двоичные числа и перевести их в десятичные?
Задали написать программу на языке Си, информации на лекциях по этим темам конечно же не было и задали это в виде проекта который надо...

6
 Аватар для Kaleb
81 / 79 / 30
Регистрация: 01.09.2013
Сообщений: 152
01.12.2013, 20:29
доработал
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
using System;
using System.Linq;
 
namespace ConsoleApplication4
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Enter  first number: ");
            var n1 = int.Parse(Console.ReadLine()); // var implicitly typed
            Console.Write("Enter second number: ");
            var n2 = int.Parse(Console.ReadLine());
 
            string obr_str1 = string.Empty; //somehow think declare empty string is more correct
            string obr_str2 = string.Empty;
 
            while (n1 != 0)
            {
                obr_str1 += n1 % 2;
                n1 /= 2;
            }
 
            while (n2 != 0)
            {
                obr_str2 += n2 % 2;
                n2 /= 2;
            }
 
            var str1 = new string(obr_str1.Reverse().ToArray()); // linq reverse
            var str2 = new string(obr_str2.Reverse().ToArray());
 
            while (str1.Length > str2.Length) // add zero
                str2 = str2.Insert(0, "0");
 
            Console.WriteLine("\n"+str1);
            Console.WriteLine(str2);
            Console.ReadKey(true);
        }
    }
}


Не по теме:

когда начинал кодить выходило нечто на 50-100 строк, а нужно было вставить цикл на 5 строк

0
 Аватар для SyxaRuk
0 / 0 / 1
Регистрация: 14.11.2013
Сообщений: 51
01.12.2013, 22:57  [ТС]
Kaleb, Спасибо, но мне не понятны несколько строк:
C#
1
string obr_str2 = string.Empty;
и
C#
1
var str1 = new string(obr_str1.Reverse().ToArray());
Хотя насчет второго могу предположить, что var str1 определит какого типа будет переменная, а ToArray() - учитывая в какой тип была преобразована переменная, разобьет на нужные элементы.


Это была первая часть задачи. Теперь для меня вообще наверно невозможное - сделать арифметические операции (+-*/). Вот пытался сделать сложение:
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
string flag = "0";
            string str="";
            for (int i = (str1.Length-1); i>=0; i--)
            {
                for (int j = 0; j < str.Length; j++)
                {
 
                    if (str1[i] != str2[i])
                    {
                        if ((str1[i] == 0 && str2[i] == 1) || (str2[i] == 0 && str1[i] == 1)) str = "1";
                    }
                    else
                    {
                        if (str1[i] == 0 && str2[i] == 0) str = "0";
                        else
                        {
                            flag = "1";
                            if (str1[i] == 1 && str2[i] == 1) str = "0";
                            str = str.Insert((j - 1), flag);
                        }
                    }
                    str = str + flag;
                }
                str += str;
            }
            Console.WriteLine(str);
Добавлено через 7 минут

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

Не по теме:

Меню, ошибки и в классы засунуть я, думаю, смогу:)

0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
01.12.2013, 23:03
Цитата Сообщение от SyxaRuk Посмотреть сообщение
Уже наверно месяц делаю эту задачу, а сдавать уже через день.
Тогда поздно уже что то изучать. Делайте так, как планировали.
Конкретно, по первому вопросу.
Замените
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
            if (str1.Length < str2.Length)
            {
                while (str1.Length == str2.Length)
                {
                    str1 = str1.Insert(0, "0");
                }
            }
            if (str2.Length < str1.Length)
            {
                while (str2.Length == str1.Length)
                {
                    str2 = str2.Insert(0, "0");
                }
            }
на
C#
1
2
3
4
5
6
7
                while (str2.Length != str1.Length)
                {
                    if (str1.Length < str2.Length)
                        str1 = str1.Insert(0, "0");
                    else
                        str2 = str2.Insert(0, "0");
                }
1
 Аватар для Kaleb
81 / 79 / 30
Регистрация: 01.09.2013
Сообщений: 152
01.12.2013, 23:05
C#
1
string obr_str2 = string.Empty;
Представляет пустую строку
C#
1
var str1 = new string(obr_str1.Reverse().ToArray());
var неявно задаем тип переменной, компилятор сам определит
реверс строки str1
0
 Аватар для SyxaRuk
0 / 0 / 1
Регистрация: 14.11.2013
Сообщений: 51
01.12.2013, 23:15  [ТС]
Цитата Сообщение от Kaleb Посмотреть сообщение
C#
1
string obr_str2 = string.Empty;
Представляет пустую строку
То есть Empty - это значит по умолчанию?
Цитата Сообщение от Kaleb Посмотреть сообщение
C#
1
var str1 = new string(obr_str1.Reverse().ToArray());
var неявно задаем тип переменной, компилятор сам определит
реверс строки str1
А что именно делает ToArray(), с реверсом понятно.
0
73 / 72 / 37
Регистрация: 21.11.2009
Сообщений: 258
01.12.2013, 23:33
Цитата Сообщение от SyxaRuk Посмотреть сообщение
То есть Empty - это значит по умолчанию?
Empty - это пустая строка. String.Empty = ""
Цитата Сообщение от SyxaRuk Посмотреть сообщение
А что именно делает ToArray(), с реверсом понятно.
Метод
C#
1
element.Reverse
есть не что иное, как Linq-надстроечка, которая возвращает интерфейс IEnumerable. А ToArray превращает этот интерфейс в массив.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.12.2013, 23:33
Помогаю со студенческими работами здесь

Перевод десятичных чисел в двоичные
Разработать программу для перевода десятичных чисел в двоичные. Исходные данные считывать из файла, указанного пользователем. Результат...

Перевод отрицательных десятичных чисел в двоичные
Помогите, пожалуйста! Как перевести отрицательные десятичные числа в двоичные? С положительными всё понятно, а вот что делать с...

Перевод дробных десятичных чисел в дробные двоичные и обратно
Требуется перевести дробное десятичное число в дробное двоичное число. и наоборот перевести дробное двоичное число в дробное...

Перевести матрицу десятичных дробей в обыкновенные дроби
Здравствуйте, у меня вот возникла такая проблема при выполнении дипломной работы. Поиск подобного кода не дал результатов. Есть только...

Двоичные числа на С++
Доброго времени суток. Восьмеричные числа на С++ вроде представляются с префиксом 0, т.е. 0124 Шестнадцатеричные - 0x, т.е. 0x124, а...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru