Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с задачей! С++ 
V
    Опции темы
Voovan
Дата 19.12.2009, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 19.12.2009

Репутация: -2
Всего: -2



Здраствуйте, помогите пожалуста кто-нибудь. 
Задача состоит в том, что-бы вывести на экран двоичный код однобайтового числа типа char (число вводится пользователем)
Заранее благодарен
PM MAIL   Вверх
xvr
Дата 19.12.2009, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Код

int v;
cin>>v;
for(int i=8;i--;)
 if (v&(1<<i)) cout<<'1'; else cout<<'0';
cout << endl;

PM MAIL   Вверх
Dov
Дата 19.12.2009, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



Код
    char buff[9];
    char ch;

    cout << "Enter a symbol: ";
    cin  >> ch;
    cout << "dec: " << (int)ch << "\nbin: " << itoa(ch, buff, 2) << endl;



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Voovan
Дата 20.12.2009, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 19.12.2009

Репутация: -2
Всего: -2



Спасибо. Еще один вопрос. Вот я своими усилиями, не без помощи ваших содов сделал свой. 

Код

#include <iostream>
#include <stdio.h>
#include <conio.h>

int main()

{
    int i;
    char n;
    printf("Input some number:");
    scanf("%c", &n);

    for (i=8; i>0; i--)
    if (n&(1<<i))
    printf("1");
    else printf("0");


    return 0;
}




Но, в ответ он мне какуюто ерунду выдает, допустим: ввожу число 6, он пишет ответ 00011011, но это же неверно?! Кто знает в чем подвох?
Заранее спасибо!


PM MAIL   Вверх
Dov
Дата 20.12.2009, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



Цитата(Voovan @  20.12.2009,  07:56 Найти цитируемый пост)
ввожу число 6

Ты вводишь не число 6, а символ '6',  код которого 54.


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Voovan
Дата 20.12.2009, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 19.12.2009

Репутация: -2
Всего: -2



а как же тогда реализовать, чтобы он выводил двоичный код числа? 
PM MAIL   Вверх
Dov
Дата 20.12.2009, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



или  вместо char юзай int или так: 
Код
// ...
scanf("%c", &n);
n -= '0';
// ...

но это только числа от 0 до 9.

Это сообщение отредактировал(а) Dov - 20.12.2009, 11:33


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
MightyCat
Дата 20.12.2009, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 2.11.2008
Где: Донецк

Репутация: нет
Всего: нет



Что такое char?
Если знаковый то это число от -127 до +127
Если безнаковый, то это число от 0 до 255

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

#include <iostream>

int main()
{
    int dig;
    // While (true)
    std::cout << "Input char digit: ";
    std::cin >> dig;
    // if (число в заданном диапазоне) break;
    for (int i=7; i != -1; --i)
        if (dig&(1<<i))
            std::cout << "1";
        else
            std::cout << "0";
    std::cout << std::endl;
    return 0;
}

PM MAIL ICQ   Вверх
bsa
Дата 21.12.2009, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Voovan, и еще обрати внимание, что у тебя i  в цикле пробегает значения с 8 до 1, а биты в байте нумеруются с 0 до 7 (сдвиги такие же должны быть).
PM   Вверх
Voovan
Дата 23.12.2009, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 19.12.2009

Репутация: -2
Всего: -2



ооо, все, доперло, спасибо огроменное!!!)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

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


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0740 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.