Страница 1 из 1

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

Добавлено: 20 фев 2013, 16:16
marina19
Подскажите пожалуйста, что нужно изменить в программе перевода числа, чтобы она правильно работала для введенного числа типа 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();  
}

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

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

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

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