Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
oponnent27
76 / 0 / 1
Регистрация: 08.12.2015
Сообщений: 19
1

Программа, переводящая число из двоичной в десятичную

04.04.2016, 22:14. Просмотров 869. Ответов 5
Метки нет (Все метки)

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
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main ()
{
char bin[16];
long int dec;
int i;// номер разряда
int v;//вес i-го разряда
printf("Введите 8-ми разрядное дв.ч");
printf("и нажмите <Enter>");
scanf("%s",&bin);
dec=0;
v=1;//вес младшего(0-го разряда)
for (i=strlen(bin)-1;i>=0;i--)
{if (bin[i]=="1")
dec+=v;
v*=2;//вес следующего разряда
}
printf("Двоичному числу %s",bin);
printf("Соответствует  десятичное число %d",dec);
printf("\n для завершения нажмите <Enter>");
_getch();
}
Наклепал вот такую программу , завтра сдавать . Можете указать ошибки в программе ?
Сам проверить не могу, ибо на этом компе visual studio, в которой программу стоит проверить ,не хочет запускаться.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2016, 22:14
Ответы с готовыми решениями:

Программа переводящая из двоичной системы счисления в десятичную
Все мы знаем формулу перевода с уроков информатики. Выглядит примерно так: ПРИМЕР 1: Перевести...

Перевести число из двоичной записи в десятичную
Дана строка, изображающая двоичную запись целого положительного числа. Вывести строку, изображающую...

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

Перевести число из двоичной системы счисления в десятичную и наоборот
Помогите пожалуйста найти ошибки в программе, задание: составить программу, которая переводит...

Программа, переводящая число из одной системы счисления в другую
Вопрос заключается в следующем. По условиям задачи, мне необходимо перевести число из двоичной...

5
Serg_o_Grey
77 / 77 / 40
Регистрация: 29.03.2016
Сообщений: 360
04.04.2016, 22:27 2
Лучший ответ Сообщение было отмечено oponnent27 как решение

Решение

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
#include <iostream>
 
using namespace std; 
 
int main(int argc, char** argv) 
{
    string str = "11111111";
    int a = 0;
    int b = 0;
    int rez = 0;
    for (int i = str.size() - 1; i >= 0; i--)
    {
        if (str[i] != '0') 
        {
            rez = (b * a) + (str[i] - 48);
            b = rez;
        }
        else
        {
            b = (b * a) + (str[i] - 48);
        }
        
        a = 2;
    }
    cout << rez << endl;
    return 0;
}
Добавлено через 3 минуты
oponnent27,
в вашей программе в 16 строке вместо двойных ковычек одинарные нужно

Добавлено через 1 минуту
программа работает
1
oponnent27
76 / 0 / 1
Регистрация: 08.12.2015
Сообщений: 19
04.04.2016, 22:37  [ТС] 3
Serg_o_Grey, А вот такой вопрос еще
В 6й строке я выделяю место для 2х байтового двоичного числа (как мне объяснил брат) , почему так ?
0
Serg_o_Grey
77 / 77 / 40
Регистрация: 29.03.2016
Сообщений: 360
04.04.2016, 22:43 4
Лучший ответ Сообщение было отмечено oponnent27 как решение

Решение

Цитата Сообщение от oponnent27 Посмотреть сообщение
В 6й строке я выделяю место для 2х байтового двоичного числа (как мне объяснил брат) , почему так ?
видимо на случай если придется два байта в десятичнй формат переводить
можете изменить на 8, тогда вводить можно будет значение состоящее из 8 единиц и.или нулей
1
oponnent27
76 / 0 / 1
Регистрация: 08.12.2015
Сообщений: 19
04.04.2016, 22:54  [ТС] 5
Serg_o_Grey, т е если число 8-разрядное , то правильнее будет поставить вместо 16 восемь , ведь оно однобайтовое
0
Serg_o_Grey
77 / 77 / 40
Регистрация: 29.03.2016
Сообщений: 360
04.04.2016, 23:15 6
не совсем, если стоит 8-ка, то больше 8ми символов уже не влезет в массив, это надо иметь в виду.
а правильно будет то что не вызывает ошибки. т.е. можно и 4 для 1011 или 64 для 001
тут как будет угодно

соврал, 64 это уже тип long long а в примере определено int. т.е. для вашей и моей программ - 32 бита или 4 байта

Добавлено через 11 минут
long int как и int - 4 байта
для абсолютной уверенности в правильном переводе лучше использовать беззнаковые целочисленные типы:
unsigned short, unsigned int, unsigned long, unsigned long long
0
04.04.2016, 23:15
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2016, 23:15

Написать рекурсивный алгоритм перевода из двоичной системы счисления в десятичную ( из восьмеричной и шестнадцатеричной в десятичную)
Написать рекурсивный алгоритм перевода из двоичной системы счисления в десятичную ( из восьмеричной...

Из двоичной СС в десятичную СС
Задание: Дана строка символов. Если он изображением целого числа в двоичной системе счисления,...

Из двоичной в десятичную
Решил написать простой код для преобразования из двоичной в десятичную. Не хочет работать, тыкните...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.