Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Троичная система счисления  (Прочитано 1053 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн tro9an

  • Автор темы
  • Любитель
  • *
  • Сообщений: 55
    • Просмотр профиля
Троичная система счисления
« : 21 Октябрь 2011, 21:44:43 »
Вот что я написал:
#include <iostream>
using namespace std;

int main (  )
 {
   int a;
   int j = 0;
   int numb [ ] = {0, 0, 0, 0, 0, 0, 0, 0, 0 };
 
   
   cin >> a;

   
   while ( a != 0 )
    {
      numb [ j++ ] = a % 3;
      a /= 3;
    } 

   while ( j != 0 )
    cout << numb [ j-- ];
   cout << endl; 

   return 0;
 }
ввожу 48, выдаёт 0121, должно выдавать 1210
ввожу 2, выдаёт 0, должно выдавать 2
Почему?

Оффлайн tro9an

  • Автор темы
  • Любитель
  • *
  • Сообщений: 55
    • Просмотр профиля
Re: Троичная система счисления
« Ответ #1 : 21 Октябрь 2011, 22:08:52 »
Я же его перевернул:
while ( j != 0 )
  cout << numb [ j-- ];

Axa-Ru

  • Гость
Re: Троичная система счисления
« Ответ #2 : 21 Октябрь 2011, 22:42:45 »
С индексом массива j разберитесь.
После первого цикла он на единицу больше индекса последней записанной в массив цифры.
Естественно и выдает 0.

Занесите в массив при инициализации цифры не из троичной системы для проверки. Ну например 6.
Или пронумеруйте  int numb [ ] = {0, 1, 2, 3, 4, 5, 6, 7, 8 };
На втором цикле увидите откуда ничинается счет.
« Последнее редактирование: 21 Октябрь 2011, 22:46:11 от Axa-Ru »

Оффлайн tro9an

  • Автор темы
  • Любитель
  • *
  • Сообщений: 55
    • Просмотр профиля
Re: Троичная система счисления
« Ответ #3 : 21 Октябрь 2011, 22:50:07 »
Axa-Ru, багодарю.

 

Страница сгенерирована за 0.073 секунд. Запросов: 25.