Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Число М по основанию Н, C++

13K
22 ноября 2006 года
siili
35 / / 14.10.2006
Вводятся число М и Число Н=<10;

написать программу которая переводит число М из десятичной системы в систему с базой Н

Ц++
547
22 ноября 2006 года
Hydra
488 / / 20.06.2006
Чисо переводится в любую систему счисления последовательным делением M на Н и записью остатков в обратном порядке. Посмотри перевод в двоичную и напиши по аналогии, заменив 2 на Н.
13K
22 ноября 2006 года
siili
35 / / 14.10.2006
Вроде сделал, но закралась какая-то ошибка, помогите найти ошибку в проге....
Код:
#include<iostream>
 
using namespace std;
 
int main()
{
int n, m, power, number=0, digit;
 
cin >> m;
cin >> n;
 
power = n;
 
while(m<power) power *= n;
 
do {
power /= n;
digit = 0;
 
do{
digit ++;
m -= power;
}while(power <= m);
 
number += digit;
number *= 10;
}while(power > 0);
 
cout << number << endl;
system("pause");
return(0);
}
242
22 ноября 2006 года
Оlga
2.2K / / 04.02.2006
для оформления кода. пользуйся поиском, прежде чем создаешь тему.
С++, а не Ц++ плиз.

в посте #19 данной темы вполне нормальное решение твоей задачи, постарайся его понять:
http://forum.codenet.ru/showthread.php?t=24199
13K
22 ноября 2006 года
siili
35 / / 14.10.2006
а как без перевода данных записать эту прогу математической функцией? Вся соль в том, что надо сделать прогу имея М и Н-интегер.

Логика: Програма получает натуральное число М и Н, где М исходное число, а Н основание. Основание Н вводится в такую степень(предельная степень) при которой уже степень + 1 будет больше М. От этого числа М, отнимают столько раз предельную степень пока справедливо, что предельная степень > М. Полученое число раз умножаем на 10 в степени (преедльной степень) и таким образом формируем число....
13K
22 ноября 2006 года
siili
35 / / 14.10.2006
сделал!!!!!!
Только правда цифры в обратном порядке выдаёт

Код:
#include<iostream>

using namespace std;

int main()
    {
    int n, m, x, y, num;
    num = 0;
   
    cin >> m;
    cin >> n;
   
    do  { x = m/n;
          y = m%n;
          m = x;
          num += y;
          num *= 10;    
        }while(m > n);
    y = m%n;  
    num += y;
   
    cout << num << endl;
   
    system ("pause");
    return 0;
    }
13K
22 ноября 2006 года
siili
35 / / 14.10.2006
Цитата:
Чтобы из десятичной СС перевести в любую другую нужно это число делить на Q до тех пор пока не получим целую часть равной 0:
Пример: нужно перевести число (156d) в СС 8(oct, т.е. Q = ( 8 )):
156 / 8 = 19 (4) <- в скобках остаток
19 / 8 = 2 (3)
2 / 8 = 0 (2)

Получили что (156d) = (234o) - читаем числа в скобках с низу вверх.

(c)


Это я использовал за основу!
242
22 ноября 2006 года
Оlga
2.2K / / 04.02.2006
поправила твою прогу, но предупреждаю - работать она будет только при переводе в систему не больше десятиричной, т.к. в СС16 например вместо обычных цифр начинаются буквы(А == 10, B == 11 ...) и в integer ты это не запихнешь, только в строку.

Код:
#include<iostream>
using namespace std;
int main()
{
    int n, m, y, num, pow = 1;
    num = 0;
 
    cin >> m;   //number
    cin >> n;  //base
 
    do{
        y = m%n;
        m /= n;
        num +=  (y * pow);  
        pow *= 10;
    }while(m > 0);
 
    cout << endl << num << endl;
 
 system ("pause");
    return 0;
}
13K
24 ноября 2006 года
siili
35 / / 14.10.2006
Так и должно бвло быть М -натуральное десятичное число десятичное число, Н натуральное числo, где Н<10
Вот как я решил эту проблему с помощью массива:
Код:
#include<iostream>

using namespace std;

int main()                                                              
    {
    int n, m, x, y, i;
    int num[16]={0};
   // num = 0;
   
    cout << "Vvedite m" << endl;
    cin >> m;
    cout << "Vvedite n, gde n<10"<<endl;
    cin >> n;
    if ((n>10)||(n<2)||(m<0)){abort();}
    else{
    i = 15;
       
    do  { x = m/n;
          y = m%n;
          m = x;
          num = y;
          //num /= 10;
          i--;      
        }while(m > n);
    y = m%n;  
    num = y;
   
    i =0;
    cout << "\nOtvet="<< endl;
    do{
    cout << num;
    i++;} while(i != 16);
   
    return 0;
    }
    }
242
24 ноября 2006 года
Оlga
2.2K / / 04.02.2006
a зачем массив? я же подправила твой вариант проги без массива. смотри мой предыдущий пост, или хочешь сказать что она неработает у тебя?
13K
24 ноября 2006 года
siili
35 / / 14.10.2006
я хотел только похвастаться!С массивом написал, т.к это был один из вариантор упорядлчить число. Прогу с массивом написал в тот-же вечер, просто сразу не разместил.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог