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

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

Восстановить пароль Регистрация
 
SEMBER
0 / 0 / 0
Регистрация: 16.03.2010
Сообщений: 3
14.06.2010, 21:05     Работа с классом #1
Необходимо написать класс который будет переводить из 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();
}
Какие ошибки в коде? почему функция непереводит?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2010, 21:05     Работа с классом
Посмотрите здесь:

C++ Работа с классом fstream.h
C++ Работа с классом
работа с классом C++
C++ Работа с классом string в C++
работа с классом C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 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 метод стало бы меньше
SEMBER
0 / 0 / 0
Регистрация: 16.03.2010
Сообщений: 3
15.06.2010, 17:22  [ТС]     Работа с классом #3
У меня и было в функции, которая в классе, как теперь твою функцию в программу вделать чтобы все работало нормально?
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
15.06.2010, 17:33     Работа с классом #4
ну в смысле создавать класс для перевода числа я бы не стал.

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

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