Ryan Thomsen Ответов: 2

Почему мой вывод не корректен при utlizing cout<<hex


В этом коде вводится шестнадцатеричное число, например 1a, за которым следует восьмеричное число, например 777. Однако, когда вводятся входные данные, выходы не таковы, как ожидалось от преобразования между базами.

#include <iostream>
using namespace std;
	int main()
	{
		int hexin, octalin;
		cout << ("Please enter two space-separated positive integer numeric values. \nPleasue ensure the first is in hexadecimal and the second is in octal.\n");
		cin >> hexin >> octalin;
		cout << hex
			<< hexin		<< " hexadecimal = " 
			<< oct << hexin	<< " octal = " 
			<< dec << hexin	<< " decimal\n" 
			<<  octalin << " octal = " 
			<<hex	<< octalin  << " hexadecimal = " 
			<<dec	<< octalin	<< " decimal";
		return 0;
	}


Вход: 1a 777

Выход:
1 шестнадцатеричный = 1 восьмеричный = 1 десятичный
0 восьмеричный = 0 шестнадцатеричный = 0 десятичный

Может быть, я каким-то образом неправильно использую выходные форматеры?

Что я уже пробовал:

Я пробовал использовать шестнадцатеричное и восьмеричное число в качестве строки и целого числа. Я также пробовал использовать std::cout с std::hex, oct и т. д. Ни то, ни другое не дало точных результатов.

2 Ответов

Рейтинг:
1

Peter_in_2780

Ваш результат выглядит прекрасно. Это вход, где вы идете неправильно.
Пытаясь разобрать "1a 777" как целые числа, он получит "1", а затем ничего ("а" не разбирается как целое число).
Вы хотите что-то вроде

cin >> hex >> hexin;
cin >> oct >> octin;

Извините, что у меня нет C++ под рукой, но это должно указать вам правильное направление.

упс ошибся стрелками.


Рейтинг:
0

Patrice T

Цитата:
Почему мой вывод не корректен при utlizing cout<<hex

Какую магию вы используете, чтобы сообщить своей программе, что первый вход-шестнадцатеричный, а второй-октавный ?
В C++ hew и oct number имеют специальный синтаксис, если вы хотите, чтобы ваши входные данные были распознаны как числа в этих базах. Это документально подтверждено, если вы ищете в интернете.
Попробуйте ввести с помощью: 0x1A и 0777


CPallini

5.

Patrice T

Спасибо.