Другие языки программирования и технологии

нужно составить маленькую программу на С++, пожалуйста

Составьте программу для функции HTOI(S), которая преоб-
разует строку шестнадцатеричных цифр в эквивалентное ей це-
лое значение. При этом допустимыми цифрами являются цифры от
1 до 9 и буквы от а до F.
Teymur Abushov
Teymur Abushov
176
#include < iostream >
#include < string.h >
using namespace std;
unsigned long long HTOI(char* s)
{
unsigned long long r,k=0;
int i,t=0;
for(i=strlen(s)-1; i >= 0; i--, t += 4) r=s[ i ], k += ( (r & 0x0F|((r & 0x40) >> 3))+((r & 0x40) >> 6) << t);
return k;
}
void main()
{
cout << HTOI("ABCDEFabcdef") << endl;
}
СИ
Сухроб Исамов
76 473
Лучший ответ
ну удачи тебе!
Коли уж учишься, делай сама. За тебя составлять программу не буду, но подсказку дам. Здесь все понятно объясняется, думаю, сложностей не должно вызвать.
Если Вы учитесь, то лучше самой это написать, много полезного узнаете
#include <stdio.h>
#include <string.h>
#define NL '\n'
#define MAX 24
int htoi(char *hexd);
int
main(void)
{
char str[MAX] = {0};
char hex[] = "0123456789ABCDEFabcdef\0";
int c;
int i;
int x = 0;
while((c = getchar()) != EOF) {
for(i = 0; hex != '\0'; i++) {
if(c == hex)
str[x++] = c;
}
if(c == NL) {
printf("%d\n", htoi(str));
x = 0, i = x;
}
}
return 0;
}
int
htoi(char *hexd)
{
int i;
int n = 0;
for(i = 0; isdigit(hexd); i++)
n = (16 * i) + (hexd - '0');
for(i = 0; isupper(hexd); i++) /* Let's just deal with lowercase characters */
hexd = hexd + 'a' - 'A';
for(i = 0; islower(hexd); i++) {
hexd = hexd - 'a';
n = (16 + i) + hexd + 10;
n = hexd + 10;
}
return n;
}