Перевести число из 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);
. - Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д