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

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

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

Операции с восьмеричными системами счисления - C++

31.05.2014, 11:11. Просмотров 553. Ответов 9
Метки нет (Все метки)

Создать класс Oct1, который будет содержать число в 8-ричной системе (в отдельном поле – целая часть, в другом поле – дробная часть).
Разработайте методы для ввода 8-ричных чисел (с дробной частью!), вывода 8-ричных чисел, методы для вычисления суммы и произведения 8-ричных чисел.

Помогите с реализацией суммы и произведения! Желательно с помощью массива.

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
#include <iostream>
using namespace std;
 
class Oct1
{
public:
    int per, per2;
    double vtor, vtor2, sum, sum2, proiz, proiz2;
void setDATA()
{
    cout <<"Введите целую часть первого восьмеричного числа: ";
    cin >>per;
    cout << "Введите дробную часть первого восьмеричного числа: ";
    cin >>vtor;
    cout <<endl<<"Введите целую часть второго восьмеричного числа: ";
    cin >>per2;
    cout << "Введите дробную часть второго восьмеричного числа: ";
    cin >>vtor2;
}
 
void Summa()
{
    sum=vtor+vtor2;
    sum2=per+per2;
}
 
void Proiz()
{
    proiz2=vtor*vtor2;
    proiz2=per*per2;
}
 
void showDATA()
{
    cout <<endl<< "Сумма восьмеричных чисел = " <<sum2<<","<<sum<<endl;
    cout << "Произведение восьмеричных чисел = " <<proiz2<<","<<proiz<<endl;
}
};
 
int main()
{
    int per, per2;
    double vtor, vtor2, sum, sum2, proiz, proiz2;
    setlocale (LC_ALL, ".1251");
    Oct1 Obj1, Obj2, Obj3, Obj4;
    Obj1.setDATA();
    Obj2.Summa();
    Obj3.Proiz();
    Obj4.showDATA();
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2014, 11:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Операции с восьмеричными системами счисления (C++):

работа с системами счисления - C++
У меня в файле число: 0x00000000 Мне нужно его прочиатать да ещё и занести в переменную. Пожно с помошью char или std::string, а как ещё?...

Переводы между системами счисления - C++
Доброго времени суток. Есть такой код, для перевода из одной системы счисления в другой. В некоторых моментах действую не рационально,...

Алгоритм перевода между системами счисления - C++
Привет. Есть две функции на Delphi которые позволяют переводить числа из любых систем счисления. Из-за низнание языка С++ (я Дельфин), не...

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

Перевод из двоичной системы счисления в шестнадцатиричную, используя битовые операции - C++
Формулировка задачи: &quot;Разработать программу, которая переводит число из двоичной системы счисления (из внутреннего представления) в...

Создать класс для работы с восьмеричными числами - C++
Создать класс Octal для работы с беззнаковыми целыми восьмеричными числами, используя для представления числа массив из 100 элементов типа...

9
zss
Модератор
Эксперт С++
6569 / 6131 / 2021
Регистрация: 18.12.2011
Сообщений: 15,982
Завершенные тесты: 1
31.05.2014, 11:47 #2
Все неправильно
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
class Oct
{
private:
   char IntPart[20],FraqPart[20];
public:
    Oct(){IntPart[0]=0;FraqPart[0]=0;}
    Oct(char* a,char *b){strcpy(IntPart,a);strcpy(FraqPart,b);}// конструктор из текстовых строк. Желательно дописать проверку на допустимость символов.
    Oct(const Oct &t){strcpy(IntPart,t.IntPart);strcpy(FraqPart,t.FraqPart);}// копиконструктор
    Oct& operator=(const Oct &t)
   {
          strcpy(IntPart,t.IntPart);
          strcpy(FraqPart,t.FraqPart);
          return *this;
    }
    void setDATA(); // Ввод данных в целую и дробную часть
    Oct Summa(const Oct &t); // складываем *this с t. Результат типа Oct возвращаем
    Oct Proizv(const Oct &t); // умножаем *this на t. Результат типа Oct возвращаем
    void showDATA();
};
int main()
{
   Oct a("123","456"); // 123 - целая часть 456 - дробная
   Oct b(a); // и - копия a
   Oct c=a.Summa(b);
   c.Show();
   return 0; 
}

Вот примерный код суммирования целой части.
Дробную сделаете по аналогии
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Oct Oct::Summa(const Oct &t)
{
    Oct res;
    int perenos=0;
    for(int i=strlen(IntPar)-1;i>=0;i--)
    {
      res.IntPar[i]=(this->IntPat[i]-'0')+(t.IntPar[i]-'0')+perenos;
      if(res.IntPar[i]>7)
      {
          res.IntPar[i]%=8;
          perenos=res.IntPar[i]/8;
      }
      res.IntPar[i]+='0';
    }
    return res;
}
0
Lom1
1 / 1 / 0
Регистрация: 09.05.2014
Сообщений: 79
31.05.2014, 11:59  [ТС] #3
zss, А методы setDATA и showDATA самому описывать? Или так оставить?
Там не указано просто в этих методах что вводится и выводится. Ошибки выдает
0
zss
Модератор
Эксперт С++
6569 / 6131 / 2021
Регистрация: 18.12.2011
Сообщений: 15,982
Завершенные тесты: 1
31.05.2014, 12:01 #4
Цитата Сообщение от Lom1 Посмотреть сообщение
самому описывать?
Они похожи на то, что было. Только учтите, что вводятся и выводятся строки, а не числа.
0
Lom1
1 / 1 / 0
Регистрация: 09.05.2014
Сообщений: 79
31.05.2014, 12:23  [ТС] #5
zss, Вывод почему неправильный?

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
66
67
68
69
70
71
72
73
74
#include <iostream>
using namespace std;
 
class Oct
{
private:
   char IntPart[20],FraqPart[20];
public:
    Oct(){IntPart[0]=0;FraqPart[0]=0;}
    Oct(char* a,char *b){strcpy(IntPart,a);strcpy(FraqPart,b);}// конструктор из текстовых строк. Желательно дописать проверку на допустимость символов.
    Oct(const Oct &t){strcpy(IntPart,t.IntPart);strcpy(FraqPart,t.FraqPart);}// копиконструктор
    Oct& operator=(const Oct &t)
   {
          strcpy(IntPart,t.IntPart);
          strcpy(FraqPart,t.FraqPart);
          return *this;
    }
 
 
 
 
    void setDATA()
    {
    cout <<"Введите целую часть первого восьмеричного числа: ";
    cin >>IntPart;
    cout << "Введите дробную часть первого восьмеричного числа: ";
    cin >>FraqPart;
    cout <<endl<<"Введите целую часть второго восьмеричного числа: ";
    cin >>IntPart;
    cout << "Введите дробную часть второго восьмеричного числа: ";
    cin >>FraqPart;
}
    
    // Ввод данных в целую и дробную часть
    Oct Summa(const Oct &t); // складываем *this с t. Результат типа Oct возвращаем
    Oct Proizv(const Oct &t); // умножаем *this на t. Результат типа Oct возвращаем
 
 
 
    
 
 
    void showDATA();
};
int main()
{
    setlocale (LC_ALL, ".1251");
   Oct a("123","456"); // 123 - целая часть 456 - дробная
   Oct b(a); // и - копия a
   Oct Obj1, Obj2;
   Obj1.setDATA();
   Oct c=a.Summa(b);
   Obj2.showDATA();
   system("pause");
   return 0; 
}
 
Oct Oct::Summa(const Oct &t)
{
    Oct res;
    int perenos=0;
    for(int i=strlen(IntPart)-1;i>=0;i--)
    {
      res.IntPart[i]=(this->IntPart[i]-'0')+(t.IntPart[i]-'0')+perenos;
      if(res.IntPart[i]>7)
      {
          res.IntPart[i]%=8;
          perenos=res.IntPart[i]/8;
      }
      res.IntPart[i]+='0';
      cout <<""<<res.IntPart<<endl;
    }
    return res;
}
0
zss
Модератор
Эксперт С++
6569 / 6131 / 2021
Регистрация: 18.12.2011
Сообщений: 15,982
Завершенные тесты: 1
31.05.2014, 12:36 #6
C++
1
2
3
4
5
6
7
8
9
10
11
void Oct::setDATA()
    {
    cout <<"Введите целую часть восьмеричного числа: ";
    cin >>IntPart;
    cout << "Введите дробную часть восьмеричного числа: ";
    cin >>FraqPart;
}
void Oct::showDATA()
{
    cout <<IntPart<<'.'<<FraqPart;
}
0
Lom1
1 / 1 / 0
Регистрация: 09.05.2014
Сообщений: 79
31.05.2014, 12:58  [ТС] #7
zss, Почему результат выходит один и тот же? Ты написал что целые числа 123 складываются и ответ выводится 246. Зачем? Мы же свои вводим
0
zss
Модератор
Эксперт С++
6569 / 6131 / 2021
Регистрация: 18.12.2011
Сообщений: 15,982
Завершенные тесты: 1
31.05.2014, 13:20 #8
Цитата Сообщение от Lom1 Посмотреть сообщение
целые числа 123 складываются и ответ выводится 246
123+123=246. Что не так?
Может Вы имели ввиду
C++
1
2
3
4
5
6
7
8
9
10
11
int main()
{
    setlocale (LC_ALL, ".1251");
   Oct a("123","456"); // 123 - целая часть 456 - дробная
   Oct b;
   b.setDATA();
   Oct c=a.Summa(b);
   c.showDATA();
   system("pause");
   return 0; 
}
0
Lom1
1 / 1 / 0
Регистрация: 09.05.2014
Сообщений: 79
31.05.2014, 13:21  [ТС] #9
zss, А нужно самим вводить и считать.
0
zss
Модератор
Эксперт С++
6569 / 6131 / 2021
Регистрация: 18.12.2011
Сообщений: 15,982
Завершенные тесты: 1
31.05.2014, 13:25 #10
Можете вводить оба числа
C++
1
2
3
4
5
6
7
8
9
10
11
int main()
{
   setlocale (LC_ALL, ".1251");
   Oct a,b;
   a.setDATA();
   b.setDATA();
   Oct c=a.Summa(b);
   c.showDATA();
   system("pause");
   return 0; 
}
0
31.05.2014, 13:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2014, 13:25
Привет! Вот еще темы с ответами:

Класс Octal для работы с восьмеричными числами (через массив) - C++
Есть ли у кого реализация класса Octal для работы с восьмеричными числами? Через массив. Если исходник реализации через вектор. А нужно...

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

Программа с системами массового обслуживания - C++
Здравствуйте. Нужна помощь с программой. Не хочет запускаться #include &lt;stdio.h&gt; #include &quot;stdafx.h&quot; #include &lt;iostream&gt; ...

Программа обучения переводу чисел из десятичной системы счисления в 2 10 и 16 систем счисления - C++
дали задание составить программу нужно чтобы на экран выводилось это: Программа обучение переводу чисел из десятичной систем...


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

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

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