Форум программистов, компьютерный форум CyberForum.ru

Числа по основанию 8 и 4. Выполнить операцию деления - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Перевод из системы по основанию 16 в систему по основанию 10 http://www.cyberforum.ru/cpp-beginners/thread762357.html
Перевод из системы по основанию 16 в систему по основанию 10 Добавлено через 21 минуту Помогите пожалуйста написать программу
C++ Вызов функции Укажите правильный вариант вызова функции вместо пропуска …….. void func(int *p, int n, float k) { } main( ) { int A={2,1,4}, m=3; ……………………….. } http://www.cyberforum.ru/cpp-beginners/thread762348.html
C++ Есть ли какие то статьи про графику в DOS?
Есть приложения которые в консолях используют "какую то магию" например FAR там вполне себе графическая оболочка. Мне не совсем ясно как в консоли изменять элемент не перерисовывая весь экран через cls .. Например поле для крестиков ноликов: Как заполнять ячейки не очищая экран? Ну или нарисовать падающий ящик ...
C++ std::vector и деструкторы
Создаю динамический массив vector, состоящий из объектов, в которых есть конструкторы и деструкторы. как-то так: { vector<Element> vec; for(int i=0; i<10; i++) { ... t0 = func(...); vec.push_back(t0); }
C++ наследование http://www.cyberforum.ru/cpp-beginners/thread762318.html
Помогите разобраться в программе. Почему возникают такие ошибки cylindr.cpp expected `,' or `...' before '&' token cylindr.cpp `c' undeclared (first use this function) В этой функции ostream &operator<<(ostream& output, const Cylindr& c) { output<<"Center = ; Radius = "<<setiosflags(ios::showpoint) <<setprecision(2)<<c.radius <<"; Busota = "<<c.height;
C++ Составить программу, определяющую, какой банк выбрать, чтобы выгодно обменять доллары на рубли Помогите написать программу пожалуйста! Программа на массивы. У вас есть доллары. Вы хотите обменять их на рубли. Есть информация о купли-продажи в банках города. В городе N банков. Составить программу, определяющую, какой банк выбрать, чтобы выгодно обменять доллары на рубли. подробнее

Показать сообщение отдельно
ya_noob
_
200 / 144 / 9
Регистрация: 08.10.2011
Сообщений: 432
19.01.2013, 21:11     Числа по основанию 8 и 4. Выполнить операцию деления
мне удобнее лечь спать и вообще не писать код
А если по делу то конечно в десятичной, т.к. неохота писать ф-цию для перевода из 10сс в другую.

Готовую прогу щас не напишу, т.к. нет сил, но предложу следующее:
функцию из прошлого топика можно легко обобщить на любую систему счисления
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
bool toDec( char *s, int &result, int radix )
{
    char c;
    int i = 0;
 
    result = 0;
    while ( s[ i ] != '\0' )
    {
        if ( c >= '0' && c < radix + '0' )
            result = result * radix + ( c - '0' );
        else
            return false;
    }
    return true;
}
Achtung!!! код на работоспособность не проверял, но думаю, что всё путём. И она работает только для сс < 10.

теперь на выходе имеем десятичное число (radix - система счисления, из которой надо перевести число в десятичную).
Переводим таким способом оба числа в 10сс и делим. На выходе получим результат в 10сс.

Насчет дробей: целую часть дроби можно перевести этой функцией, а дробную часть надо переводить отдельно с помощью слегка модифицированной версии этой функции (код которой я тебе щас не напишу). Ну а потом соединить целую и дробную части в одно число.

Добавлено через 26 минут
Это точно работоспособно:

// для целой части
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
bool toDec( char *s, int &result, int radix )
{
    char c;
    int i = 0;
 
    result = 0;
    while ( s[ i ] != '\0' )
    {
        c = s[ i++ ];
        if ( c >= '0' && c < radix + '0' )
            result = result * radix + ( c - '0' );
        else
            return false;
    }
    return true;
}
// для дробной части. передавай функции дробную часть строки без десятичной точки
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
bool toDecFract( char *s, double &result, int radix )
{
    char c;
    int i = 0;
    double d = 1.0 / radix;
 
    result = .0;
    while ( s[ i ] != '\0' )
    {
        c = s[ i++ ];
        if ( c >= '0' && c < radix + '0' )
        { result += d * ( c - '0' ); d /= radix; }
        else
            return false;
    }
    return true;
}
 
Текущее время: 17:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru