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

перевод из десятичной в двоичную - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
Vergil
42 / 36 / 14
Регистрация: 11.11.2009
Сообщений: 238
11.02.2010, 16:15     перевод из десятичной в двоичную #1
Помогите пожалуйста.
Перевод из десятичной в систему счисления по основанию k
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
//---------------------------------------------------------------------------
#include <stdio.h>
#include <iostream.h>
#include <windows.h>
#include <winuser.h>
#include <stdlib.h>
#include <time.h>
#include <iomanip.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
char* rus(const char* text)
{
 char *bufRus=new char[strlen(text)];
 CharToOem(text, bufRus);
 return bufRus;
}
int main(int argc, char* argv[])
{int n, k, i, t, r, p, y;
char m[200];
char b[20];
int m1[200];
cout<<rus("Введите число в десятичной системе счисления: ");
cin>>n;
p=n;
cout<<rus("Введите основание системы счисления, в которую программа будет переводить: ");
cin>>k;
if (k>=2 && k<=36) {
for (i=0; i < 199; i++) {y++;
if (n<k) {m1[i]=n; break;}
else{m1[i]=n%k; }n=n/k;}
for (t=0; t<i+1; t++) {
switch (m1[t])
    { case 0: m[t] = '0'; cout<<m[i-t]; break;
      case 1: m[t] = '1';cout<<m[i-t]; break;
      case 2: m[t] = '2';cout<<m[i-t]; break;
      case 3: m[t] = '3';cout<<m[i-t]; break;
      case 4: m[t] = '4';cout<<m[i-t]; break;
      case 5: m[t] = '5';cout<<m[i-t]; break;
      case 6: m[t] = '6';cout<<m[i-t]; break;
      case 7: m[t] = '7';cout<<m[i-t]; break;
      case 8: m[t] = '8';cout<<m[i-t]; break;
      case 9: m[t] = '9';cout<<m[i-t]; break;
      case 10: m[t] = 'A';cout<<m[i-t]; break;
      case 11: m[t] = 'B'; cout<<m[i-t];break;
      case 12: m[t] = 'C';cout<<m[i-t]; break;
      case 13: m[t] = 'D'; cout<<m[i-t];break;
      case 14: m[t] = 'E';cout<<m[i-t]; break;
      case 15: m[t] = 'F';cout<<m[i-t]; break;
      case 16: m[t] = 'G';cout<<m[i-t]; break;
      case 17: m[t] = 'H';cout<<m[i-t]; break;
      case 18: m[t] = 'I';cout<<m[i-t]; break;
      case 19: m[t] = 'J';cout<<m[i-t]; break;
      case 20: m[t] = 'K';cout<<m[i-t]; break;
      case 21: m[t] = 'L';cout<<m[i-t]; break;
      case 22: m[t] = 'M';cout<<m[i-t]; break;
      case 23: m[t] = 'N';cout<<m[i-t]; break;
      case 24: m[t] = 'O';cout<<m[i-t]; break;
      case 25: m[t] = 'P';cout<<m[i-t]; break;
      case 26: m[t] = 'Q';cout<<m[i-t]; break;
      case 27: m[t] = 'R';cout<<m[i-t]; break;
      case 28: m[t] = 'S'; cout<<m[i-t];break;
      case 29: m[t] = 'T'; cout<<m[i-t];break;
      case 30: m[t] = 'U';cout<<m[i-t]; break;
      case 31: m[t] = 'V'; cout<<m[i-t];break;
      case 32: m[t] = 'W'; cout<<m[i-t];break;
      case 33: m[t] = 'X'; cout<<m[i-t];break;
      case 34: m[t] = 'Y'; cout<<m[i-t];break;
      case 35: m[t] = 'Z';cout<<m[i-t]; break;}
}
cout<<endl;   }
else {cout<<endl;
cout<<rus("Критическая ошибка.");}
delete [] m;
delete [] m1;
system("pause");
    return 0;}
//---------------------------------------------------------------------------
Прога делает не серьезные ошибки. Раньше она считала правильно, но не показывала буквы точнее вместо В ставила 11. Теперь теряет или неправильно отображает. Например, при переводи из десятичной числа 120 в двоичную теряет 3 первых единицы, за место них пробелы.

Добавлено через 16 минут
Хм. Забавно. Но проблема решилась сама. Я написал строчку одну и все пошло как надо. Удалил ее и все равно правильно идет. Наверное, я что-то лишнее удалил.

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
//---------------------------------------------------------------------------
#include <stdio.h>
#include <iostream.h>
#include <windows.h>
#include <winuser.h>
#include <stdlib.h>
#include <time.h>
#include <iomanip.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
char* rus(const char* text)
{
 char *bufRus=new char[strlen(text)];
 CharToOem(text, bufRus);
 return bufRus;
}
int main(int argc, char* argv[])
{int n, k, i, t, r, p, y;
char m[200];
char b[200];
int m1[200];
cout<<rus("Введите число в десятичной системе счисления: ");
cin>>n;
p=n;
cout<<rus("Введите основание системы счисления, в которую программа будет переводить: ");
cin>>k;
if (k>=2 && k<=36) {
for (i=0; i < 199; i++) {y++;
if (n<k) {m1[i]=n; cout<<m1[i]<<endl;; break;}
else{m1[i]=n%k; cout<<m1[i]<<endl;}n=n/k;}
 
 
 
for (t=0; t<y+1; t++) {
switch (m1[i-t])
    { case 0: m[t] = '0'; cout<<m[t]; break;
      case 1: m[t] = '1';cout<<m[t]; break;
      case 2: m[t] = '2';cout<<m[t]; break;
      case 3: m[t] = '3';cout<<m[t]; break;
      case 4: m[t] = '4';cout<<m[t]; break;
      case 5: m[t] = '5';cout<<m[t]; break;
      case 6: m[t] = '6';cout<<m[t]; break;
      case 7: m[t] = '7';cout<<m[t]; break;
      case 8: m[t] = '8';cout<<m[t]; break;
      case 9: m[t] = '9';cout<<m[t]; break;
      case 10: m[t] = 'A';cout<<m[t]; break;
      case 11: m[t] = 'B'; cout<<m[t];break;
      case 12: m[t] = 'C';cout<<m[t]; break;
      case 13: m[t] = 'D'; cout<<m[t];break;
      case 14: m[t] = 'E';cout<<m[t]; break;
      case 15: m[t] = 'F';cout<<m[t]; break;
      case 16: m[t] = 'G';cout<<m[t]; break;
      case 17: m[t] = 'H';cout<<m[t]; break;
      case 18: m[t] = 'I';cout<<m[t]; break;
      case 19: m[t] = 'J';cout<<m[t]; break;
      case 20: m[t] = 'K';cout<<m[t]; break;
      case 21: m[t] = 'L';cout<<m[t]; break;
      case 22: m[t] = 'M';cout<<m[t]; break;
      case 23: m[t] = 'N';cout<<m[t]; break;
      case 24: m[t] = 'O';cout<<m[t]; break;
      case 25: m[t] = 'P';cout<<m[t]; break;
      case 26: m[t] = 'Q';cout<<m[t]; break;
      case 27: m[t] = 'R';cout<<m[t]; break;
      case 28: m[t] = 'S'; cout<<m[t];break;
      case 29: m[t] = 'T'; cout<<m[t];break;
      case 30: m[t] = 'U';cout<<m[t]; break;
      case 31: m[t] = 'V'; cout<<m[t];break;
      case 32: m[t] = 'W'; cout<<m[t];break;
      case 33: m[t] = 'X'; cout<<m[t];break;
      case 34: m[t] = 'Y'; cout<<m[t];break;
      case 35: m[t] = 'Z';cout<<m[t]; break;
      default: 'h';}
 
 
 
      }}
else {cout<<rus("Критическая ошибка.");}
delete [] m;
delete [] m1;
system("pause");
    return 0;}
//---------------------------------------------------------------------------
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2010, 16:15     перевод из десятичной в двоичную
Посмотрите здесь:

Перевод числа из десятичной системы в двоичную C++
перевод из десятичной в двоичную C++
Перевод с десятичной в двоичную систему C++
C++ Перевод из десятичной в двоичную СС
Перевод из десятичной в двоичную C++
Перевод из десятичной системы в двоичную C++
Перевод из десятичной в двоичную систему C++
Перевод из десятичной в двоичную систему счисления C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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