Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
marina11
1 / 1 / 0
Регистрация: 15.11.2012
Сообщений: 84
#1

Изменить программу для типа unsigned char - C++

20.02.2013, 14:40. Просмотров 425. Ответов 4
Метки нет (Все метки)

Подскажите пожалуйста, что нужно изменить в программе перевода числа, чтобы она правильно работала для введенного числа типа unsigned char,а не int. Когда меняю типы, программа выдаёт один и тот же неправильный результат для любого введенного числа...
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 "stdafx.h"
#include <stdio.h>   
#include <conio.h>   
#include <math.h>   
  
void dvoich(int x)   
{  
    int i, b;  
    long c = 0;  
     for(i=0; x > 0;i++)  
     {
        b = x % 2;  
        x = (x-b)/2;
        c += b * pow(10.,i);
    }
    printf("\nDvoichnoe chislo: %d",c);   
 
}   
  
void main()   
{
    int a;  
    printf("Vvedite desyatichnoe chislo:");  
    scanf("%d",&a);  
     dvoich(a);  
    getch();  
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2013, 14:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Изменить программу для типа unsigned char (C++):

Как задать границу для типа данных unsigned char*? - C++
У меня есть двумерный массив значений типа unsigned char*, диапазон значений которого 0 - 255. Как задать условие, чтобы при увеличении на...

Аргумент типа "unsigned char*" несовместим с параметром типа "const char*" - C++
int f(unsigned char s, unsigned char q) { N = strlen(s); //Ошибка тут... M = strlen(q); //...и тут Как исправить?

Как получить адрес переменной типа unsigned char? - C++
Всем привет! Как получить адрес переменной типа unsigned char? Всё ерунда получается #include &lt;iostream&gt; using namespace std; ...

Надо перевести переменную типа unsigned char* в signed int и обратно - C++
у меня есть переменная типа unsigned char*, мне нужно перевести ее в signed int , провести арифметические вычисления и затем перевести ее...

Напишите программу, которая будет определять размер для данных (int, char, long, double, short, unsigned, float) и выводить информацию - C++
1. Какие типы данных лучше всего использовать для хранения следующих значений: а) возраст человека в текущем году; б) вес человека в...

Приведение типов unsigned char[2] to unsigned char [64] - C++
Добрый день! Подскажите пожалуйста, как поступить. Есть простая функция main int main() { SHA1Context sha; uint8_t...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
20.02.2013, 15:47 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void dvoich(unsigned char x)   
{  
int mask = 128; // 1000 0000
int bit;
for(int i=0; i<8;i++)
bit = x&mask;
if(bit)
bit = 1;
mask/=2;
printf("%i",bit);
}
printf("\n");
}
marina11
1 / 1 / 0
Регистрация: 15.11.2012
Сообщений: 84
20.02.2013, 16:57  [ТС] #3
Цитата Сообщение от aLarman Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void dvoich(unsigned char x)   
{  
int mask = 128; // 1000 0000
int bit;
for(int i=0; i<8;i++)
bit = x&mask;
if(bit)
bit = 1;
mask/=2;
printf("%i",bit);
}
printf("\n");
}
Не работает..а почему int mask присваивается именно 128?
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
20.02.2013, 17:04 #4
ну в двоичном представлении 128 == 1000 0000 (как написано выше) чтобы выделить 1ый бит чара)
потом делим маску пополам и потом она будет 64 что == 0100 0000 чтобы взять следущий бит)

Добавлено через 4 минуты
а еще я скобку пропустил
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void dvoich(unsigned char x)   
{  
int mask = 128; // 1000 0000
int bit;
for(int i=0; i<8;i++) {
bit = x&mask;
if(bit)
bit = 1;
mask/=2;
printf("%i",bit);
}
printf("\n");
}
у меня работает на символ 'a' вывел 0110 0001 (=97)
marina11
1 / 1 / 0
Регистрация: 15.11.2012
Сообщений: 84
20.02.2013, 17:43  [ТС] #5
Цитата Сообщение от aLarman Посмотреть сообщение
ну в двоичном представлении 128 == 1000 0000 (как написано выше) чтобы выделить 1ый бит чара)
потом делим маску пополам и потом она будет 64 что == 0100 0000 чтобы взять следущий бит)

Добавлено через 4 минуты
а еще я скобку пропустил
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void dvoich(unsigned char x)   
{  
int mask = 128; // 1000 0000
int bit;
for(int i=0; i<8;i++) {
bit = x&mask;
if(bit)
bit = 1;
mask/=2;
printf("%i",bit);
}
printf("\n");
}
у меня работает на символ 'a' вывел 0110 0001 (=97)
Спасибо большое,очистила решение и всё заработало)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.02.2013, 17:43
Привет! Вот еще темы с ответами:

Контейнер для unsigned char * - C++
возьмем например char * для него в с++ есть стандартный контейнер и называется он std::string возьмем например Delphi там...

Сделать преобразование unsigned char в char, а затем типу int - C++
Здраствуйте, есть вопрос: Число представлено двумя полями: типа long для рублей и unsigned char - для копеек. Собственно что мне...

Std::fstream почему функция write принимает параметр char* а не unsigned char* (аля byte*) ? - C++
Ну собственно сабж... std::fstream fs; fs.write((char*)..) В случае бинарного потока я допустим пишу байты функцией write, как...

Размер для данных (int, char, long, double, short, unsigned, float) - C++
Напишите программу, которая будет определять размер для данных (int, char, long, double, short, unsigned, float) и выводить информацию (о...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.02.2013, 17:43
Ответ Создать тему
Опции темы

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