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

В 10-ую сс - C++

Восстановить пароль Регистрация
 
Toshik_
1 / 1 / 0
Регистрация: 17.08.2013
Сообщений: 91
29.09.2013, 12:58     В 10-ую сс #1
Помогите написать программу перевода из любой сс в 10-ую сс...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
29.09.2013, 13:14     В 10-ую сс #2
Прямо таки для любой? А как будет отображаться число "42" в 43-ичной системе, например?
Toshik_
1 / 1 / 0
Регистрация: 17.08.2013
Сообщений: 91
29.09.2013, 13:29  [ТС]     В 10-ую сс #3
Цитата Сообщение от Tulosba Посмотреть сообщение
Прямо таки для любой? А как будет отображаться число "42" в 43-ичной системе, например?
ну от 2 сс до 36сс
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
29.09.2013, 13:32     В 10-ую сс #4
Вводим основание с.с.
Вводим число в этой с.с.
Пробегаем циклом по символам, умножая значение символа на основание с.с. в степени позиции этого символа.
Складываем эти произведения.
Профит.
Toshik_
1 / 1 / 0
Регистрация: 17.08.2013
Сообщений: 91
29.09.2013, 13:37  [ТС]     В 10-ую сс #5
Цитата Сообщение от Tulosba Посмотреть сообщение
Вводим основание с.с.
Вводим число в этой с.с.
Пробегаем циклом по символам, умножая значение символа на основание с.с. в степени позиции этого символа.
Складываем эти произведения.
Профит.
Вот смотри у меня есть код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <string>
void izdes(int ss, long int num);
int main() {
   long int num;
   int ss;
   std::cin >> num >> ss;
   izdes(ss, num);
   system("pause");
   return 0;
}
 
void izdes(int ss, long int num)
{
    const char *hexStr = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
   std::string hexNum;
   
   
   while ( num ) {
      hexNum.insert( 0, 1, hexStr[ num % ss ]);
      num /= ss;
   }
   
   std::cout << hexNum << std::endl;
}

Он переводит из 10 сс в любую от 2 до 36... а теперь мне надо обратную функцию т.е. дополнение... чтобы из любой сс от 2 сс до 36 сс переводило в 10сс... и получится программа перевода из любой сс в любую сс от 2 сс до 36 сс
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
29.09.2013, 14:07     В 10-ую сс #6
Например
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
#include <string>
#include <cctype>
#include <cmath>
#include <algorithm>
 
using namespace std;
 
int main() {
    
    const char digits[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    
    int notation;
    
    cout << "notation?";
    cin >> notation;
    
    string number;
    cout << "number?";
    cin >> number;
    
    int len = number.length();
 
    for( int i=0; i<len; ++i)
        number[i] = toupper(number[i]);
    
    int value10 = 0;
    
    for( int i=len-1; i>=0; --i )
    {
        const char* pos = find( digits, digits+sizeof(digits), number[i] );
        if( pos == digits+sizeof(digits) )
        {
            cout << "invalid character: " << number[i] << endl;
            return -1;
        }
        
        value10 += (pos - digits) * pow( notation, len-1-i ); 
    }
    
    cout << value10 << endl;
    
    return 0;
}
Yandex
Объявления
29.09.2013, 14:07     В 10-ую сс
Ответ Создать тему
Опции темы

Текущее время: 20:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru