Консультация № 188975
17.03.2016, 18:12
0.00 руб.
0 1 1
Здравствуйте! Прошу помощи в следующем вопросе:
Помогите, пожалуйста, переделать функцию char *bintodec(char* , char* ) так, чтобы не использовать стандартные функции. Заранее благодарен за помощь!

Код:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <strings.h>
#include <assert.h>
#include <ctype.h>
#include <wchar.h>
char *bintodec(char* , char* );
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
char *bin, *dec;
bin=(char*)malloc(100*sizeof(char));///выделяем память в куче
dec=(char*)malloc(100*sizeof(char));
printf("Введите двоичную запись числа: ");
gets(bin);
printf("Результат: ");
puts(bintodec(bin, dec));
system("pause");
return 0;
}
char *bintodec(char* bin, char* dec){
int b=0, c=1, i, length=strlen(bin); ///длина строки


for(i=length-1; i>=0; i--)
{
b+=c*(bin[i]-'0'); ///символ в число
c*=2;
}
sprintf (dec, "%d", b);
return dec;
}

Обсуждение

давно
Посетитель
7438
7205
17.03.2016, 21:30
общий
это ответ
Здравствуйте, YarLam125!
Можно, например, заменить bintodec на две следующие:
[code h=200]
uitos(unsigned int val, char* buf)
{
int i, count;
char temp;
//сначала запишем в обратном порядке
for(count=0; val; count++)
{
buf[count] = (val % 10) + '0';
val /= 10;
}
buf[count] = 0;
//перевернем
for(i=0, count--; i<count; i++,count--)
{
temp = buf[i];
buf[i] = buf[count];;
buf[count] = temp;
}
}

char *bintodec(char* bin, char* dec)
{
int b;
for(b=0; *bin; bin++)
b = (b<<1)+(*bin)-'0';
uitos((unsigned int)b, dec);
return dec;
}
[/code]
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа