Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
SEMBER
0 / 0 / 0
Регистрация: 16.03.2010
Сообщений: 3
#1

Работа с классом - C++

14.06.2010, 21:05. Просмотров 517. Ответов 5
Метки нет (Все метки)

Необходимо написать класс который будет переводить из 16-ой системы счисления числа в 10-ю систему счисления, классы только неделю назад изучать начал, поэтому еще не все понимаю, помогите люди добрые...

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <iostream.h>
#include <math.h>
#include <string.h>
#include <conio.h>
//Obiavlenie klassa
class Hex{
    char *s; int len;
    public:
    void HexInit(int);
    void HexInput(void);
    void Htol();
    };
//Opisanie funkciy - chlenov klassa
    void Hex::HexInput(void)
    {cout<<"Chislo:"; cin>>s;
 
    }
    void Hex::Htol(void)
     {
              //clrscr();
            char s[5]; //16-chislo
             unsigned int dec; //10-chislo
             int v; // ves razrada
             int err=0; // err==1 - v stroke nedopustimiy simvol
             int i;
            // strupr(s);
             dec=0;
             v=1; //ves mladshego razrada 16-chisla
             for (i=strlen(s)-1; i >=0; i--)
        {
 
    if (s[i]>='0' && s[i]<='9')
    dec+=v*(s[i]-48); // (int)'0'=48, (int)'1'=49 i t.d.
    else
        if (s[i]>='A' && s[i]<='F')
        //(int)'A'=65, (int)'B'=66 i t.d.
        // A oboznachaet 10, B - 11 i t.d.
        dec+=v*(s[i]-55);
        else // nedopustimiy simvol
        { err=1;
        break; }
    v*=16; // ves sleduysego razrada
    }
    if  (!err) {
            cout<<"Shestnadcatirichnomy chisly %s " << s;
            cout<<"sootvetstvuet desatichnoe %u\n"<<dec;
}
    else {
cout<<"stroke %s ne avlaetsa "<<s;
cout<<"shestnadcatirichnim chislom";
 
}
cout<<"Dla zavershenia nazmite <Enter>";
//Osnovnay funkcia
 
    }
    void main(void)
    { char s;
      Hex Y; //Obiavlenie obiekta
     cout<<"Vvodite luboe chislo!"<<"\n";
     cin>>s;
     Y.HexInput();
     Y.Htol();
     cin.get();
}
Какие ошибки в коде? почему функция непереводит?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2010, 21:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с классом (C++):

Работа с классом - C++
Работа с классом, карточку отдела кадров(обеспечить вывод на экран в удобном виде, печать сообщения при достижении пенсионного возраста)....

работа с классом - C++
Напсал код: #include &lt;IOSTREAM&gt; #include &lt;fstream&gt; #include &quot;rus.h&quot; #include &quot;work.h&quot; using namespace std; class Temperatura ...

Работа с классом - C++
Приветствую.Начал изучать с++ , возникла вот такая программка : в классе целых чисел между соседними отрицательными вставить нолик ) Буду...

работа с классом - C++
пишу класс быстрой математики (знаю что многие делали в инете дофига всего, но всё же) сделал таблицу корней в общем то всё работает...

работа с классом - C++
Разработайте класс, моделирующий рациональные числа как несократимые дроби, включающий числитель Num и знаменатель Den. Предусмотрите...

Работа с классом vector - C++
Программа, которая считывает строку и распечатывает её в обратной последовательности. Используя класс vector. Заранее спасибо. ...

5
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
14.06.2010, 22:21 #2
перевод было бы лучше оформить в виде обычной функции:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
string inttohex(int x){
            char mas[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
            int i,j,k;
            std::string res,s;
            k=x;
            while (j){
                 j=k/16;
                 i=k%16;
                 res=res+mas[i];
                 k=j;
             }
            s=res;
            for (int i=0; i<res.size(); ++i)
            s[s.size()-i+1]=res[i];
            return s;
}
Добавлено через 1 минуту
вместо hexInit можно было инициализировать в конструкторе, и на 1 метод стало бы меньше
1
SEMBER
0 / 0 / 0
Регистрация: 16.03.2010
Сообщений: 3
15.06.2010, 17:22  [ТС] #3
У меня и было в функции, которая в классе, как теперь твою функцию в программу вделать чтобы все работало нормально?
0
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
15.06.2010, 17:33 #4
ну в смысле создавать класс для перевода числа я бы не стал.

как функцию вделать? - аналогичным методом как ты делал Htol
1
SEMBER
0 / 0 / 0
Регистрация: 16.03.2010
Сообщений: 3
16.06.2010, 12:32  [ТС] #5
Ага, все понял спасиба
PointsEqual
большое, я тебе плюсик поставил
0
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
16.06.2010, 12:43 #6
Цитата Сообщение от PointsEqual Посмотреть сообщение
string inttohex(int x){
так правильнее будет
C++
1
std::string inttohex(int x){
0
16.06.2010, 12:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2010, 12:43
Привет! Вот еще темы с ответами:

работа с классом string - C++
у меня есть переменная типа string key(из 16 символов),мне нужно получить из нее 8 отдельных переменных (k) каждый по 2 байта,как это...

Работа с абстрактным классом - C++
Доброго времени суток! Имеется небольшой класс: #include &lt;irrlicht.h&gt; class EngineInit { public: IrrlichtDevice* device...

Работа с классом fstream.h - C++
Всем добрый день. Возникла небольшая проблемка. Открываю файл с помощью класса fstream читаю данные, а перевести курсор на начало файла...

Работа с классом <thread> - C++
Как выполнить параллельно итерации цикла с помощью класса &lt;thread&gt;? Если использовать другие библиотеки (например OpenMP), то все просто....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.