Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перевод из одной СС в другую, бинарное в восьмеричное 
:(
    Опции темы
vic_vic
Дата 2.2.2008, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 2.2.2008

Репутация: нет
Всего: нет



Помогите плз! На бумаге все Ок! А дальше ...:(

Объявите основной класс с именем bin. Объявите функцию show(), которая выводит значение числа в бинарном коде. 
Объявите второстепенный класс oct  и функцию show(), функция вывода значения в восмеричном коде. 
PM MAIL   Вверх
warmonger_
Дата 2.2.2008, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.7.2007
Где: г. Киев

Репутация: 1
Всего: 3



можно так smile :
Код

#include <iostream>


class Bin
{
public:
    Bin(int val=0): m_value(val) { }
    ~Bin() { }
    virtual void show()
    {
        char buf[100];
        itoa(m_value, buf, 2);
        std::cout<<    buf<<std::endl;
    }

protected:
    int m_value;
};

class Oct: public Bin
{
public:
    Oct(int val=0): Bin(val) { }
    ~Oct() { }
    virtual void show()
    {
        char buf[10];
        itoa(m_value, buf, 8);
        std::cout<<    buf<<std::endl;
    }
};


--------------------
Make everything as simple as possible, but not simpler.Albert Einstein
PM MAIL   Вверх
Fin
Дата 2.2.2008, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


Профиль
Группа: Участник
Сообщений: 687
Регистрация: 4.1.2006

Репутация: 3
Всего: 10



Что то типа этого:
Код

#include <stdio.h>
class bin
{
protected:
   int number;
public:
   void setNumber(int num) {number=num;};

   bin() {setNumber(0);};
   bin(int num) {setNumber(num);};
   virtual ~bin() {};
   virtual void show()
   {
      unsigned int mask=1;
      int i=8*sizeof(int);
      mask <<=(i-1);
      do
      {
         if ((number & mask) != 0) printf("1");
         else printf("0");
         mask >>=1;
         i--;
      } while(i != 0);
      printf("\n");
   };
};

class oct:public bin
{
public:
   oct():bin() {};
   oct(int num):bin(num) {};
   virtual ~oct() {};
   virtual void show()
   {
      const static char buf[9]="01234567";
      unsigned int temp=(unsigned int)number;
      int len=sizeof(int)*8/3;
      if (((sizeof(int)*8) % 3) !=0) len++;
      int *li= new int[len];
      int i=0;
      while(i<len) li[i++]=0;
      i=0;
      while (temp >0)
      {
         li[i++]=temp %8;
         temp>>=3;
      }
      i=len-1;
      while(i >=0) printf("%c", buf[li[i--]]);
      delete [] li;
      printf("\n");
   };
};

int main()
{
   bin *sl=new bin(10);
   sl->show();
   
   delete sl;
   sl=new oct(10);
   sl->show();  
   delete sl; 
   return 0;
}



--------------------
Пролетал мимо.
PM MAIL   Вверх
vic_vic
Дата 2.2.2008, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 2.2.2008

Репутация: нет
Всего: нет



warmonger_ 
Попробовал твой код, при компиляции в MS Visual C++ ошибок не выдает,но в консоле у меня выводит следующее:

00000000000000000000000000001010
00000000012
Press any key to continue

А мне нужно ввести к примеру любой код(101110) а в ответе должно быть 56
PM MAIL   Вверх
Fin
Дата 2.2.2008, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


Профиль
Группа: Участник
Сообщений: 687
Регистрация: 4.1.2006

Репутация: 3
Всего: 10



vic_vic, а самому написать обратное преобразование?


--------------------
Пролетал мимо.
PM MAIL   Вверх
warmonger_
Дата 2.2.2008, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.7.2007
Где: г. Киев

Репутация: 1
Всего: 3



Цитата(vic_vic @  2.2.2008,  10:42 Найти цитируемый пост)
которая выводит значение числа в бинарном коде.


Цитата(vic_vic @  2.2.2008,  10:42 Найти цитируемый пост)
функция вывода значения в восмеричном коде.

Код

Bin b(4);
b.show(); // выводит 100



Код

Oct o(8);
o.show(); // выводит 10


все правильно. 



--------------------
Make everything as simple as possible, but not simpler.Albert Einstein
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0708 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.