Перевести число из 16-чной системы в 10-чную - C (СИ)
Формулировка задачи:
Нужна простая прога, выполняющая следующее: вводишь 16-чное число - получаешь на выходя 10-чное. На си...
Есть такой вариант, но он чё-то не так работает:
#include "stdafx.h"
using namespace std;
#include <iostream>
#include <cmath>
#include <string>
int main()
{
int i,j,k;
setlocale(0,""); // Включаем кириллицу
double num;
string str="";
cout << "введите шестнадцатеричное число:" ;
getline(cin,str);
char etal[] = "0123456789abcdef";
num = 0;
for (i=str.length();i>0;i--) {
j=0;
while (putchar(str[i-1])!=etal[j]) {
j++;
};
k = str.length() - i;
num=j*pow((double)16, k) + num;
};
cout << "её десятичное значение:" << num;
cin >> i;
return 0;
}Решение задачи: «Перевести число из 16-чной системы в 10-чную»
textual
Листинг программы
string s;
cin>>s;
int i;
sscanf(s.c_str(),"%2X",&i);
printf("%d",i);
...
Объяснение кода листинга программы
- В начале программы объявлена переменная
sтипаstring. - Ввод строки с помощью функции
cin>>s;. - Объявлена переменная
iтипаint. - Функция
sscanf(s.c_str(),%2X,&i);используется для чтения двух символов из строкиsи преобразования их в десятичное число. - Вывод числа с помощью функции
printf(%d,i);. - Программа завершается.