Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
6 / 6 / 0
Регистрация: 17.05.2020
Сообщений: 81

Проверка ввода двоичного кода

13.02.2021, 10:33. Показов 1968. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Возникла проблема в проверке ввода двоичного кода. Вводя 0,1 всё нормально работает, но только ввожу 0101, пишет неправильный ввод. Помогите сделать чтобы можно было вводить двоичную последовательность.
Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
 
int main() {
    int num;
    cin >> num;
    if (num>=0 && num<=1){
        cout << "все верно" << endl;
    } else cout << "неверно, введите заново" << endl;
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.02.2021, 10:33
Ответы с готовыми решениями:

Функция ввода двоичного вектора
нужна функция ввода двоичного вектора напишите ее если есть у кого-нибудь ;

проверка двоичного числа
написать программу которая проверяет является ли введенная с клавы строка двоичным числом

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

5
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5208 / 2925 / 1509
Регистрация: 14.12.2018
Сообщений: 5,266
Записей в блоге: 1
13.02.2021, 10:38
Должен вводить num как строка для того, как работать обще с вводом двоичной последовательности !
0
6 / 6 / 0
Регистрация: 17.05.2020
Сообщений: 81
13.02.2021, 10:42  [ТС]
А как можно конвертировать с инт в стринг?
Мне просто нужно чтобы было ввод с инта.
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,243
13.02.2021, 12:30
Цитата Сообщение от Tihon18 Посмотреть сообщение
ввод с инта
Как Вы себе это представляете?
Операция cin>>num перегружена для целых чисел в предположении, что вводится число в десятичном представлении.
Двоичное представление надо вводить в строку, а потом самостоятельно конвертировать ее в число.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
char txt[33]; // вводится 32 разрядное беззнаковое целое число
cin.getline(txt,33);
unsigned int num=0;
for(char* p=txt;*p!=0;++p)
{
   int digit=(*p)-'0';
   if(digit!=0 && digit!=1) // '1'-'0' даст 1,'0'-'0' даст 0 
   {
        cout<<"введено не двоичное число"<<endl;
        return 1;
   }
   num <<= 1; // сдвигаем на 1 разряд влево
   num |= digit; // прибавляем 0 или 1
}
cout<<"Введено двоичное число, его десятичное представление:"<<num<<endl;
0
6 / 6 / 0
Регистрация: 17.05.2020
Сообщений: 81
13.02.2021, 14:40  [ТС]
А как со строкой сделать проверку двоичного кода ?

Добавлено через 13 минут
Я нашел способ как перевести с инт в строку. Проблема теперь только в проверке ввода. Поможете ?
Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <sstream>
using namespace std;
 
int main() {
    int num;
    cin >> num;
    stringstream tmp;
    tmp << num;
    string str;
    tmp >> str;
    return 0;
}
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,243
13.02.2021, 14:54
Цитата Сообщение от Tihon18 Посмотреть сообщение
Я нашел способ как перевести с инт в строку
Ваш способ нельзя назвать правильным.
Вы вводите число состоящее из нулей и единиц как десятичное и выводите в строку как десятичное.
Разве что, предполагаете, что из всех десятичных цифр используются только ноль и один.
Т.е. 1101 это число равное 1*103+1*102+0*101+1*100
А на самом деле надо
11012 = 1*23+1*22+0*21+1*20 = 1310

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

Полный текст:
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
#include <iostream>
#include <fstream>
#include <clocale>
using namespace std;
void BinaryOut(int n)
{
    char txt[33] = "00000000000000000000000000000000";
    int L = 0;
    while (n)
    {
        txt[L++] = '0' + n % 2;
        n /= 2;
    }
    for (int i = 31; i >= 0; i--)
        cout << txt[i];
}
 
int main() 
{
    setlocale(LC_ALL, "Rus");
    char txt[33]; // вводится 32 разрядное беззнаковое целое число
    cin.getline(txt, 33);
    unsigned int num = 0;
    for (char* p = txt; *p != 0; ++p)
    {
        int digit = (*p) - '0';
        if (digit != 0 && digit != 1) // '1'-'0' даст 1,'0'-'0' даст 0 
        {
            cout << "введено не двоичное число" << endl;
            return 1;
        }
        num <<= 1; // сдвигаем на 1 разряд влево
        num |= digit; // прибавляем 0 или 1
    }
    cout << "Введено двоичное число, его десятичное представление:" << num << endl;
    cout << "Двоичное представление в памяти компьютера:";
    BinaryOut(num);
    cin.get();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.02.2021, 14:54
Помогаю со студенческими работами здесь

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

проверка чтения двоичного файла
Доброго времени суток. Как проверить считанное содержимое из бинарного файла. Например, в нем хранился размер массива (к примеру, 10)....

Палиндром двоичного кода
Для введенного с клавиатуры натурального числа n(n&lt;=32000) определить является ли его запись в двоичной системе счисления палиндромом?

Перевод двоичного кода в текст
Здравствуйте уважаемые форумчане, у меня было задание сделать шифратор/дешифратор текста, хотя в С++ не работал ^_^ У вас на форуме нашел...

Создание файла из двоичного кода
Здравствуйте, у меня есть переменная типа std::string В ней хранится двоичной код, как мне создать файл (.txt), и записать в него этот...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru