Почему не могу перевести в другие системы счисления?
#include <iostream>
#include <cstdlib>
#include <locale>
#include <iomanip>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
char ss;
do {
cout << "Введите арифметическое действие и число" << endl;
float x, y, r;
char o;
cin >> x;
cin >> o;
cin >> y;
switch (o)
{
case '+':
r = x + y;
break;
case '-':
r = x - y;
break;
case '/':
y = x / y;
break;
case '*':
y = x * y;
break;
}
"cout.unsetf(ios::dec);"
"cout.setf(ios::oct); "
cout << x << o << y << " = " << r << endl;
cout << " Продолжаем считать? y/n" << endl;
cin >> ss;
} while (ss == 'y');
Через "cout << hex << r << endl;" тоже не переводит в другую любую систему счисления, хотя если создать новый код, без моего "калькулятора", то эти способы прекрасно переводят в другие СС.
Через флаги тоже не получается.
Что я делаю не так?
Ответы (1 шт):
Автор решения: AlexGlebe
→ Ссылка
Вы команды вложили в кавычки. А это ничего не выполнит. Это будут просто строчки. Вывод в другой системе исчисления для типа float не работает. Переведите число в тип int. Не до конца дописали операции '*' , '/'. Результат храните в переменной r.
#include <iostream>
#include <cstdlib>
#include <locale>
#include <iomanip>
using namespace std;
int main()
{ setlocale(LC_ALL, "Russian");
char ss;
do {
cout << "Введите арифметическое действие и число" << endl;
float x, y, r;
char o;
cin >> x;
cin >> o;
cin >> y;
switch (o)
{
case '+':
r = x + y;
break;
case '-':
r = x - y;
break;
case '/':
r = x / y;
break;
case '*':
r = x * y;
break;
}
cout.unsetf(ios::dec);
cout.setf(ios::oct);
cout << x << o << y << " = " << r << endl;
cout << int(x) << o << int(y) << " = " << int(r) << endl;
cout << " Продолжаем считать? y/n" << endl;
cin >> ss;
} while (ss == 'y');}