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

Программа перевода числа из 10 СС в 2 СС - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ иерархия классов http://www.cyberforum.ru/cpp-beginners/thread95822.html
помогите с классами, базовый класс-ювелирное украшение производный телевизор и стиральная машина в классе не должно быть виртуальных функций
C++ Пошаговая компиляция в Borland 5.01 Всем привет. С недавнего времени при пошаговой компиляции программки(F7) начало выскакивать окно CPU и пошаговость происходит не в окне программы, а в этом долбанном CPU. До самой программы дойти... http://www.cyberforum.ru/cpp-beginners/thread95816.html
C++ Найти с заданной точностью знач. выражения
Составить функцию возвращающую значение для решения представленной ниже задачи: Найти с заданной точностью значения выражения s=сумма ряда(x^n/n!); n от 1 до бесконечн.; Точность<=10^-4;...
вывод текста, определение количество слов в тексте, у которых первый и последний символы совпадают. C++
Здравствуйте. Прошу пожалуйста мне помочь с написанием этой программы. Всем за ранее огромное спасибо! Вы спасёте мне жизнь. =) Условие: Ввод данных осуществляется из файла с расширением .DAT....
C++ Как изменить кодировку вывода? http://www.cyberforum.ru/cpp-beginners/thread95729.html
Доброе утро всем. Помогите новичку. Только начал изучать программирование на С++ (в среде Visual Studio 2008 express), и столкнулся с первой проблемой, обьяснения которой ни в каких книжках пока не...
C++ Как делать log.txt? Реализацию объяснять не надо - сам справлюсь. А что выводу в лог подлежит и где именно этот вывод лучше сделать? подробнее

Показать сообщение отдельно
fs444
6 / 10 / 0
Регистрация: 18.08.2009
Сообщений: 484
25.02.2010, 08:08  [ТС]
Написал так
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include <iostream>
#include <cmath>
#include<cstring>
#include <iomanip>
using namespace std;
 
int pow(int x, int y)
{
        int n=1;
        while(y--)
                n*=x;
        return n;
}
 
string Int_To_StrHex(int A)
{
   string S, S1, Str = "01234567890ABCDEF";
   cout << S[0] << endl;
 
   if (A == 0)
   {
      S1 = "0000";
      return S1;
   }
 
   while (A > 0)
   {
      S += Str[A % 16];
      A = A / 16;
   }
 
   if ((S.size() % 5) == 1) S += string("000");
   if ((S.size() % 5) == 2) S += string("00");
   if ((S.size() % 5) == 3) S += string("0");
 
   for (int k = 0; k < S.size(); k++)
   {
      S1 += S[S.size() - 1 - k];
   }
 
   return S1;
}
 
int main()
{
        setlocale(LC_ALL, "Russian");
        int etalonChislaV10SS; // эталон числа в 10 СС
        int chisloV10SS;//Число в десятичной СС
        int chisloV2SS = 0;//Искомое число в двоичной CC
        int razrjadChislaV2SS = 0;//Разряд двоичного числа
        int chisloV8SS = 0;  // искомое число в восьмеричной СС
        int razrjadChislaV8SS = 0; // разряд восьмеричного числа
        int chisloV16SS = 0;  // искомое число в восьмеричной СС
        int razrjadChislaV16SS = 0; // разряд восьмеричного числа
 
                cout.setf(ios::left, ios::adjustfield);//Выравнивание по левому краю
 
   cout << setw(12) << "Dec" << setw(12) <<"Bin"  << setw(12) << "Oct"  << setw(12) << "Hex" << endl;
 
   for (chisloV10SS = 1; chisloV10SS <= 256; chisloV10SS++)
   {
        cout << setw(12) << chisloV10SS;
 
        chisloV2SS = 0;
        razrjadChislaV2SS = 0;
        chisloV8SS = 0;
        razrjadChislaV8SS = 0;
        chisloV16SS = 0;
        razrjadChislaV16SS = 0;
 
        etalonChislaV10SS = chisloV10SS;
// преобразование в 2 СС
        while(chisloV10SS > 1)
        {
           chisloV2SS += (chisloV10SS%2) * pow(10, razrjadChislaV2SS);//Присваиваем i-тому разряду остаток от деления
           chisloV10SS /= 2;
           razrjadChislaV2SS++;
        }
 
        chisloV2SS += chisloV10SS * pow(10, razrjadChislaV2SS);
 
        cout << setw(12) << chisloV2SS;
// преобр. в 8 СС
 
        chisloV10SS = etalonChislaV10SS;
        while(chisloV10SS > 1)
        {
           chisloV8SS += (chisloV10SS%8) * pow(10, razrjadChislaV8SS);//Присваиваем i-тому разряду остаток от деления
           chisloV10SS /= 8;
           razrjadChislaV8SS++;
        }
 
        chisloV8SS += chisloV10SS * pow(10, razrjadChislaV8SS);
 
        cout << '0' << setw(12) << chisloV8SS;
// преобр. в 16 СС
        chisloV10SS = etalonChislaV10SS;
 
        string s = Int_To_StrHex(chisloV10SS);
        cout << setw(12) << s.c_str();
 
        chisloV10SS = etalonChislaV10SS;
   }
        system("pause");
        return 0;
}
Только почему-то после вывода числа в 8 СС происходит переход на следующую строку, хотя там нет endl; Почему?

Добавлено через 23 часа 29 минут
Вот, надеюсь, финальный вариант кода:
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include <iostream>
#include <cmath>
#include<cstring>
#include <iomanip>
using namespace std;
 
int pow(int x, int y)
{
        int n=1;
        while(y--)
                n*=x;
        return n;
}
 
string Int_To_StrHex(int A)
{
   string S, S1, Str = "01234567890ABCDEF";
   cout << "0x" << S[0];
 
   if (A == 0)
   {
      S1 = "0000";
      return S1;
   }
 
   while (A > 0)
   {
      S += Str[A % 16];
      A = A / 16;
   }
 
   if ((S.size() % 5) == 1) S += string("000");
   if ((S.size() % 5) == 2) S += string("00");
   if ((S.size() % 5) == 3) S += string("0");
 
   for (int k = 0; k < S.size(); k++)
   {
      S1 += S[S.size() - 1 - k];
   }
 
   return S1;
}
 
int main()
{
        setlocale(LC_ALL, "Russian");
        int etalonChislaV10SS; // эталон числа в 10 СС
        int chisloV10SS;//Число в десятичной СС
        int chisloV2SS = 0;//Искомое число в двоичной CC
        int razrjadChislaV2SS = 0;//Разряд двоичного числа
        int chisloV8SS = 0;  // искомое число в восьмеричной СС
        int razrjadChislaV8SS = 0; // разряд восьмеричного числа
        int chisloV16SS = 0;  // искомое число в восьмеричной СС
        int razrjadChislaV16SS = 0; // разряд восьмеричного числа
 
                cout.setf(ios::left, ios::adjustfield);//Выравнивание по левому краю
 
   cout << setw(12) << "Dec" << setw(12) <<"Bin"  << setw(12) << "Oct"  << setw(12) << "Hex" << endl;
 
   for (chisloV10SS = 1; chisloV10SS <= 256; chisloV10SS++)
   {
        cout << setw(12) << chisloV10SS;
 
        chisloV2SS = 0;
        razrjadChislaV2SS = 0;
        chisloV8SS = 0;
        razrjadChislaV8SS = 0;
        chisloV16SS = 0;
        razrjadChislaV16SS = 0;
 
        etalonChislaV10SS = chisloV10SS;
// преобразование в 2 СС
        while(chisloV10SS > 1)
        {
           chisloV2SS += (chisloV10SS%2) * pow(10, razrjadChislaV2SS);//Присваиваем i-тому разряду остаток от деления (здесь вместо i написано razrjadChislaV2SS)
           chisloV10SS /= 2;
           razrjadChislaV2SS++;
        }
 
        chisloV2SS += chisloV10SS * pow(10, razrjadChislaV2SS);
 
        cout << setw(12) << chisloV2SS;
// преобр. в 8 СС
 
        chisloV10SS = etalonChislaV10SS;
        while(chisloV10SS > 1)
        {
           chisloV8SS += (chisloV10SS%8) * pow(10, razrjadChislaV8SS);//Присваиваем i-тому разряду остаток от деления
           chisloV10SS /= 8;
           razrjadChislaV8SS++;
        }
 
        chisloV8SS += chisloV10SS * pow(10, razrjadChislaV8SS);
 
        cout << '0' << setw(12) << chisloV8SS;
// преобр. в 16 СС
        chisloV10SS = etalonChislaV10SS;
 
        string s = Int_To_StrHex(chisloV10SS);
        cout << setw(12) << s.c_str() << endl;
 
        chisloV10SS = etalonChislaV10SS;
   }
        system("pause");
        return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru