Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2014, 21:25   #1
Romalikons
Пользователь
 
Регистрация: 03.10.2013
Сообщений: 22
По умолчанию Сис. исчесление

Помогите с программой , которая из двоичной системы переводит число в восьмеричную. Очень надеюсь на вашу помощь )
Romalikons вне форума Ответить с цитированием
Старый 12.10.2014, 22:31   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
#include <iostream>
#include <stdlib.h>
using namespace std;

int main()
{
    char *s="010101";
    char a[100]={0};
    int i,n=0;
    for(i=0;s[i];i++){
        n=n + (s[i]-'0');
        n=n<<1;
    }
    itoa(n,a,8);
    cout << n << endl<<a;
    cin.get();
    return 0;
}
Подходит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.10.2014, 22:45   #3
Romalikons
Пользователь
 
Регистрация: 03.10.2013
Сообщений: 22
По умолчанию

не совсем , извиняюсь , наверное я не правильно условие сформулировал ( Надо , что бы пользователь вводил число с клавиатуры. Под рукой компилятора сейчас нет , но если я переменную s просто в виду с клавиатуры , работать будет ?
Romalikons вне форума Ответить с цитированием
Старый 12.10.2014, 23:20   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Надо , что бы пользователь вводил число с клавиатуры.
Ради бога )
scanf() тебе поможет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.10.2014, 17:59   #5
Romalikons
Пользователь
 
Регистрация: 03.10.2013
Сообщений: 22
По умолчанию

Переводит неправильно , кстати ( 010101 - в восьмеричной будет 25
Romalikons вне форума Ответить с цитированием
Старый 13.10.2014, 18:36   #6
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Romalikons Посмотреть сообщение
Переводит неправильно , кстати ( 010101 - в восьмеричной будет 25
Ах, 19-й век. Куда-же ты ушел...? http://www.biz-for.ru/books/perelman/gl4/gl4.php
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 13.10.2014, 18:53   #7
Romalikons
Пользователь
 
Регистрация: 03.10.2013
Сообщений: 22
По умолчанию

Скорее всего , я туго догоняю , но ведь там во все недесятичные системы переводят именно с десятичной , разве принцип не меняется ? если , скажем я хочу 10(двоичная) перевести в восьмеричную , мне на 8 делить надо ?
Romalikons вне форума Ответить с цитированием
Старый 13.10.2014, 19:07   #8
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Romalikons Посмотреть сообщение
Скорее всего , я туго догоняю , но ведь там во все недесятичные системы переводят именно с десятичной , разве принцип не меняется ? если , скажем я хочу 10(двоичная) перевести в восьмеричную , мне на 8 делить надо ?
Ой, опять кого-то е** (учу). С высшей системы, делаем делением. С низшей, по основанию системы. Т.е. если следующий разряд двоичной системы (системы вообще) превышает следующий по-основанию, переносим его в следующую разрядность.

Цитата:
010101 - в восьмеричной будет 25
Совершенно верно.
010 = 2
101 = 5
Результат в 8-и ричной системе = 25.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 13.10.2014 в 19:16.
Smitt&Wesson вне форума Ответить с цитированием
Старый 13.10.2014, 19:20   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Переводит неправильно
Тогда так: http://www.programmersforum.ru/showp...4&postcount=36
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.10.2014, 19:21   #10
Romalikons
Пользователь
 
Регистрация: 03.10.2013
Сообщений: 22
По умолчанию

25 я в виндовском калькуляторе перевел ) Как я понимаю , это так называемые "триады "? Если так , то как мне это реализовать , не подскажешь ? запилить массив и рассматривать каждые 3 элемента отдельно ? но как потом их пересчитать в восьмеричную ?
Romalikons вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с сис таймером Lauri Общие вопросы Delphi 7 08.11.2012 22:26
Перевод из 16 в 10 сис. счисления legendary Общие вопросы по Java, Java SE, Kotlin 2 13.04.2011 17:09
Вкл сис. динамик legendary Компьютерное железо 6 09.11.2010 17:23
для сис админов dimon142 Компьютерное железо 8 11.08.2009 12:52