Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 16.03.2010
Сообщений: 3
1

Работа с классом

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

Author24 — интернет-сервис помощи студентам
Необходимо написать класс который будет переводить из 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.06.2010, 21:05
Ответы с готовыми решениями:

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

работа с классом
Напсал код: #include &lt;IOSTREAM&gt; #include &lt;fstream&gt; #include &quot;rus.h&quot; #include &quot;work.h&quot; using...

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

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

5
ниначмуроФ
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
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
0 / 0 / 0
Регистрация: 16.03.2010
Сообщений: 3
15.06.2010, 17:22  [ТС] 3
У меня и было в функции, которая в классе, как теперь твою функцию в программу вделать чтобы все работало нормально?
0
ниначмуроФ
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
15.06.2010, 17:33 4
ну в смысле создавать класс для перевода числа я бы не стал.

как функцию вделать? - аналогичным методом как ты делал Htol
1
0 / 0 / 0
Регистрация: 16.03.2010
Сообщений: 3
16.06.2010, 12:32  [ТС] 5
Ага, все понял спасиба
PointsEqual
большое, я тебе плюсик поставил
0
ниначмуроФ
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
16.06.2010, 12:43 6
Цитата Сообщение от PointsEqual Посмотреть сообщение
string inttohex(int x){
так правильнее будет
C++
1
std::string inttohex(int x){
0
16.06.2010, 12:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.06.2010, 12:43
Помогаю со студенческими работами здесь

Работа с классом
Работа с классом, карточку отдела кадров(обеспечить вывод на экран в удобном виде, печать сообщения...

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

Работа с классом матрица
Напишите контейнерный класс, который содержит значения простых матриц (размером 2х2). Добавьте...

Работа с классом string в C++
Как прочитать данные из файлы в строковую переменную string?


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru