Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

2.12 Урок №12. N-ичные системы счисления

Garik Harlamov Ученик (1), закрыт 1 год назад
Напишите программу, которая преобразует пятизначное число, записанное в троичной системе счисления в десятичный вид. Для примера:



Sample Input 1:

21021

Sample Output 1:

196

Sample Input 2:

10000

Sample Output 2:

81
Лучший ответ
WELHAYZEN Гуру (3201) 1 год назад
#include <iostream>

using namespace std;

int main()
{
int a, b, c, d, e;
int result;

cin >> a >> b >> c >> d >> e;

result = a * pow(3, 4) + b * pow(3, 3) + c * pow(3, 2) + d * pow(3, 1) + e * pow(3, 0);
cout << result;

return 0;
}
ПапаВысший разум (121730) 1 год назад
Бред. Это вообще не решает задачу.
Остальные ответы
Konstantanter Просветленный (22513) 1 год назад
https://www.cyberforum.ru/cpp-beginners/thread1854682.html
Емельян Пугачёв Мудрец (13930) 1 год назад
 #include  
#include
#include
#include

using namespace std;

#define LIMIT 20

bool is_troich(char c)
{
return c == '0' || c == '1' || c == '2';
}

void input(char * num)
{
int i = 0;
char c;
while( i < LIMIT )
{
// c = cin.getchar();
c = cin.get();
if(c == '\n' || c == '\r')
break;
else if(!is_troich(c))
{
cout << "Invalid number!" << endl;
exit(1);
}
num[i++] = c;
num[i] = '\0';
}
if(!i)
{
cout << "Wrong number!" << endl;
exit(1);
}
}

int to_dec(char * num)
{
int dec = 0;

int len = strlen(num);

for(int x = len - 1, y = 0; x >= 0; x--, y++)
dec += (num[y] - '0') * pow(3.0,x);

return dec;
}

int main()
{
char num[LIMIT + 1];

input(num);

cout << to_dec(num) << endl;

return 0;
}
ПапаВысший разум (121730) 1 год назад
Откуда вы только берётесь такие незамутнённые? Какой, пардон мон франсэ, в задницу, pow(3.0, x), для целых степеней? pow - очень дорогая операция, её целесообразно использовать только для дробных показателей, и то не для всех, квадратные и кубические корни быстрее вычислять дихотомией, чем pow. А такие полиномы, как в задании, вообще вычисляются без всяких степеней.
 ((((a₀ · x) + a₁) · x + a₂) · x + a₃) · x + ... 
где a₀ - старшая цифра, x - основание системы счисления.
Линейное количество умножений и сложений, проще некуда.
Slava Jirov. Просветленный (48346) 1 год назад
А на каком языке - нужно угадать? И что, категории "информатика" и "программирование" неподходили?
Похожие вопросы