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

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
marina19
Сообщения: 3
Зарегистрирован: 15 фев 2013, 15:27

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

Код: Выделить всё

#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();  
}
Albor
Сообщения: 491
Зарегистрирован: 06 сен 2004, 13:34
Откуда: Днепропетровск

При переходе на unsigned char есть небольшая проблема в том, что scanf не читает двух-трёхзначное число в виде одного байта, поэтому можно функцию переделать на void dvoich(unsigned char x) и поменять тип переменных в ней unsigned char i, b, а в main оставить как есть, только вызов функции сделать таким:

Код: Выделить всё

dvoich(a&255);
Ну и можно добавить проверку введенного числа - оно не должно превышать 255, иначе результат будет не верный.
Ответить