Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/32: Рейтинг темы: голосов - 32, средняя оценка - 4.88
ElemeNT
1 / 1 / 0
Регистрация: 27.10.2008
Сообщений: 25
#1

Системы счисления

07.11.2008, 22:18. Просмотров 5705. Ответов 17
Метки нет (Все метки)

Помогите решить задачу. Перевод из 12 системы счисления в десятичную

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2008, 22:18
Ответы с готовыми решениями:

Перевод натурального числа из десятичной системы счисления в систему счисления по основанию
Здравствуйте. Я хотела бы попросить у вас помощи. Я понимаю, что это не очень...

Простейший алгоритм перевода числа из 10 системы счисления в 16 ричную систему счисления
Помогите написать самый простой алгоритм перевода из 10 системы счисления в 16...

Рекурсия: перевод целого числа из десятичной системы счисления в 9 систему счисления
Написать рекурсивную функцию перевода целого числа из десятичной системы...

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

Перевод строки из 2-ной системы счисления в 8-ную систему счисления
помогите пожалуйста как сделать перевод строки из 2 системы счисления на 8...

17
CheshireCat
Эксперт С++
2910 / 1259 / 114
Регистрация: 27.05.2008
Сообщений: 3,458
07.11.2008, 22:42 #2
Что ты уже сделал? Что вызывает трудности?
0
ElemeNT
1 / 1 / 0
Регистрация: 27.10.2008
Сообщений: 25
07.11.2008, 22:54  [ТС] #3
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
/**************************************
Перевод из 12 системы счисления в 10
 
Автор: Muslimov Ildar Fanisovich
Группа: PS-137
Дата:  14.10.08
Компилятор: Dev-C++ 4.9.9.2
**************************************/
 
#include <stdio.h>                                    
#include <stdlib.h>                                   
#include <math.h>                                     
 
int main (void)                           
{
 int a,b,g,i,y,x,d,n,m[1024];                                              // Вводим переменные целого типа
                                                                           // g-число которое вводим с клавиатуры
                                                                           // a=10 и b=11
                                                                           // i-счетчик
                                                                           // y
  float s;  
  char f;                                                         // Переменные вещественного типа
   printf ("Vvedite chislo v 12 systeme schislenia");              // Вывод на экран сообщения
   scanf ("%d",&g);                                                  // Ввод  числа
    if(g==0)                                                               
     {printf ("V 10-oy systeme schislenia chislo ravno 0\n"); 
     switch (f)
     {
           case '1':y=1; break;
           case '2':y=2; break;
           case '3':y=3; break;
           case '4':y=4; break;
           case '5':y=5; break;
           case '6':y=6; break;
           case '7':y=7; break;
           case '8':y=8; break;
           case '9':y=9; break;
           case 'a':y=10; break;
           case 'b':y=11; break;
           default:printf("neizvestnay peremennay");
           }
           }
      else                                                        
    {
    if (g<0)                                                         // Если <0
     {g=-g;                                                            
      x=1;}                                    
      for (i=0;i<100;i++)                                            // Создаем цикл
      m[i]=0;                                                        // Обнуляем массив
      i=0;
     while (g>0)                                                     // Пока g больше 0
      {
      n=g%10;                                                         // В n записывается отсаток от деления g на 10
     if (n==1)                                
       {
       s=g*10-10;                                                 // В переменную s записываем целую часть от деления числа а на 10
        m[i]=1;                                                      // Присваеваем элементу массива единицу
        i=i+1;                                                       // Увеличиваем счётчик на единицу
        g=s;
        }                                                        // Записываем в g целую часть от деления числа а на 10
     else                        
      {
      s=g/10;
      m[i]=0;
      i++;
      g=s;
      }
      }
      i=i-1;                                                          // Возвращаем счетчик на единицу назад, чтобы не выводился 0 перед числом
      printf ("chislo v 10-oy systeme schislenia =  ",g);            // Выводим число в десятичной с.с.
     if(x==1)
      { printf ("-");}
     for(i;i>=0;i--)                                                  // С помощью цикла выводим число в 10й с.с. на экран
      printf ("%d",m[i]);}                                            // Вывод ответа
       system ("pause");                                              // Ждем нажатия любой кнопки
     }
Добавлено через 54 секунды
вот в принципе написал задачу, но почему работает не верно
0
XuTPbIu_MuHTAu
Эксперт С++
2234 / 749 / 25
Регистрация: 27.05.2008
Сообщений: 1,498
07.11.2008, 23:32 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <conio.h>
int main () {
    char c;
    int result=0;
    printf("duodecimal :");
    
    while( scanf("%c",&c) ) {
        if( (c>='0') &&( c<='9') )result=result*12+c-'0';// if there is a number in input
            else if ( (c>='a') && (c <='b') ) result=result *12 + (c-'a'+10);// if there is a or b
            else break; // all other symbols cause end of counting.
    };
    printf("decimal : %d",result);
    getch();
};
мой код короче и работает. в твоем копаться не хочется,так что давай лучше ты в моем разберись.
0
ElemeNT
1 / 1 / 0
Регистрация: 27.10.2008
Сообщений: 25
08.11.2008, 22:41  [ТС] #5
XuTPbIu_MuHTAu, Конечно спасибо за написанную прогу(я разобрался кроме строки while( scanf("%c",&c) ) ) и как сделать так чтоб с минусом прога работала.
0
XuTPbIu_MuHTAu
Эксперт С++
2234 / 749 / 25
Регистрация: 27.05.2008
Сообщений: 1,498
08.11.2008, 22:48 #6
строка while(scanf("%c",&c)) - считывает символы из входного потока.По одному. Если символов нет - цикл прерывается. Внутри цикла так же проверяется,допустимые ли символы введены и соответственно обрабатываются.
Если недопустимый - цикл прерывается break'ом.
С минусом делай сам. Тут делать то почти нечего.
1
ElemeNT
1 / 1 / 0
Регистрация: 27.10.2008
Сообщений: 25
09.11.2008, 16:35  [ТС] #7
result=result*12+c-'0'; ты можешь объяснить почему мы отнимаем '0' и вот здесь result=result *12 + (c-'a'+10) почему именно отнимаем 'a' хотя если их убрать прога работает не верно
0
XuTPbIu_MuHTAu
Эксперт С++
2234 / 749 / 25
Регистрация: 27.05.2008
Сообщений: 1,498
09.11.2008, 18:00 #8
потому что символ тип 0 и '0' - разные вещи. Когда мы пишем '0',имеется в виду символ ноль,кодировка которого совсем не нулевая. Однако точно известно,что кодировки символов '0'...'9' идут именно в таком порядке,и разница между соседними 1.

т.е если есть символ '9' и символ '0', их разница - 9.Что и используется.
Аналогичные рассуждения для букв. Коды букв 'a'....'z' идут подряд.Так что
'b'-'a' это 1. а 'a'-'a' это ноль. +10 прибавляем,т.к a это 10. а b - 11.Все просто.
0
Chainik!
1 / 1 / 5
Регистрация: 10.11.2008
Сообщений: 43
10.11.2008, 19:30 #9
Помогите написать проггу (перевод из десятичной в двоичную с/с)через цикл for
0
ABTOP
36 / 36 / 4
Регистрация: 09.06.2008
Сообщений: 324
10.11.2008, 20:24 #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream.h>
#include <conio.h>
#include <math.h> 
#include <stdlib.h>
 
void bprint(int);//Функция вывода числа в бинарной форме
 
void main()
{
     int x;
     cin>>x;
     bprint(x); cout<<"\t("<<x<<")"<<endl
}
 
void bprint(int a)//Функция вывода числа в бинарной форме
{
     for(int i=1; i<((int)sizeof(int)*8);i++)
          cout<<(a & (4294967296>>i)?'1':'0');
}
разбирайся...
0
XuTPbIu_MuHTAu
Эксперт С++
2234 / 749 / 25
Регистрация: 27.05.2008
Сообщений: 1,498
10.11.2008, 20:28 #11
ABTOP,блин,что ты в самом деле.... 4294967296...гыг. просто написал бы -1 и все

Добавлено через 3 минуты 31 секунду
а,нет,-1 это не тут) сорри, не ведитесь. -1 это 1....1b
0
ABTOP
36 / 36 / 4
Регистрация: 09.06.2008
Сообщений: 324
10.11.2008, 20:33 #12
ABTOP,блин,что ты в самом деле.... 4294967296...гыг. просто написал бы -1 и все
А я так хочу

Добавлено через 3 минуты 28 секунд
C++
1
2
3
4
5
void bprint(int a)//Функция для вывода числа в бинарной форме
{
    for(int i=1; i<size;i++)
  cout<<(a & (-1>>i)?'1':'0');
}
если ты имел в виду так, то неработает...
0
Chainik!
1 / 1 / 5
Регистрация: 10.11.2008
Сообщений: 43
10.11.2008, 21:59 #13
Перевод из десятичной в двоичный код!!Не могу перевернуть строку!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include< iostream.h >
#include< conio.h >
void main()
{
    int n;
    cout <<"Vvedite chislo : ";
    cin >> n;
    while(n != 0)
    {
        cout << n % 2 << endl;
        n /= 2;
    }
    getch();
}
Как перевернуть строку??
0
ABTOP
36 / 36 / 4
Регистрация: 09.06.2008
Сообщений: 324
10.11.2008, 22:03 #14
записуй значения в массив, а потом выводи значения массива в обратном порядке...
0
ElemeNT
1 / 1 / 0
Регистрация: 27.10.2008
Сообщений: 25
10.11.2008, 23:55  [ТС] #15
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
#include <stdio.h>                                    
#include <stdlib.h>                                   
#include <math.h>                                     
 
int main (void)                           
{
 int a,i,x,d,n,m[1024];                                              // Вводим переменные целого типа
  float s;                                                           // Переменные вещественного типа
   printf ("Vvedite chislo v 10 systeme schislenia\n");              // Вывод на экран сообщения
   scanf ("%d",&a);                                                  // Ввод  числа
    if(a==0)                                                               
     printf ("V 2-oy systeme schislenia chislo ravno 0\n");          // Выводит на экран сообщение
      else                                                        
    {
    if (a<0)                                                         // Если а<0
     {a=-a;                                                            
      x=1;}                                    
      for (i=0;i<100;i++)                                            // Создаем цикл
      m[i]=0;                                                        // Обнуляем массив
      i=0;
     while (a>0)                                                     // Пока а больше 0
      {
      n=a%2;                                                         // В n записывается отсаток от деления а на 2
     if (n==1)                                
       {s=a*0.5-0.5;                                                 // В переменную s записываем целую часть от деления числа а на 2
        m[i]=1;                                                      // Присваеваем элементу массива единицу
        i=i+1;                                                       // Увеличиваем счётчик на единицу
        a=s;}                                                        // Записываем в а целую часть от деления числа а на 2
     else                        
      {
      s=a/2;
      m[i]=0;
      i++;
      a=s;
      }
      }
Добавлено через 56 секунд
вот в принципе все работает(и даже с минус)
0
Павел086
0 / 0 / 0
Регистрация: 28.11.2008
Сообщений: 6
02.12.2008, 08:21 #16
помогите решить задачу перевод тз 2-ой сс в 10-ую и обратно.Но не так сложно как здесь расписано
0
Павел086
0 / 0 / 0
Регистрация: 28.11.2008
Сообщений: 6
02.12.2008, 08:31 #17
Цитата Сообщение от Павел086 Посмотреть сообщение
помогите решить задачу перевод из 2-ой сс в 10-ую и обратно.На подобии как вверху прога,только пользователь сам должен вводить из какой сс в какую переводим(т.е например выводится на экран"в какую сс вы хотите перевести число в 2-ую или 10-ую ")
и мы вводим 2 или 10
0
Павел 086
0 / 0 / 0
Регистрация: 28.11.2008
Сообщений: 1
02.12.2008, 08:43 #18
У меня есть прога(она переводит только из 10 в 2),По задаче пользователь сам должен вводить из какой сс в какую переводим(т.е например выводится на экран"в какую сс вы хотите перевести число в 2-ую или 10-ую ") Даже есть 2 проги.Но нужно сделать в одной и наподобии как сделана задача (из 10 в 2-там просто всё понятна)
из 2-ой в 10-ую
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#include <conio.h>
int main () {
char c;
int result=0;
while(scanf("%c",&c) ) {
if( (c<'0') || (c > '1') ) break;
result<<=1;
result+=c-'0';
};
printf("\n%d",result);
getch();
};
из 10 в 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
28
29
30
31
32
33
34
35
36
#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 
 
int main (void) 
{
int a,i,x,d,n,m[1024]; // Вводим переменные целого типа
float s; // Переменные вещественного типа
printf ("Vvedite chislo v 10 systeme schislenia\n"); // Вывод на экран сообщения
scanf ("%d",&a); // Ввод числа
if(a==0) 
printf ("V 2-oy systeme schislenia chislo ravno 0\n"); // Выводит на экран сообщение
else 
{
if (a<0) // Если а<0
{a=-a; 
x=1;} 
for (i=0;i<100;i++) // Создаем цикл
m[i]=0; // Обнуляем массив
i=0;
while (a>0) // Пока а больше 0
{
n=a%2; // В n записывается отсаток от деления а на 2
if (n==1) 
{s=a*0.5-0.5; // В переменную s записываем целую часть от деления числа а на 2
m[i]=1; // Присваеваем элементу массива единицу
i=i+1; // Увеличиваем счётчик на единицу
a=s;} // Записываем в а целую часть от деления числа а на 2
else 
{
s=a/2;
m[i]=0;
i++;
a=s;
}
}
0
02.12.2008, 08:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2008, 08:43

Перевод числа из восьмеричной системы счисления в шестнадцатеричную систему счисления
Вот пример числа: 754 = 1EC 1000 = 200

Перевод чисел из двоичной системы счисления в систему счисления кратной степеням двойки и обратно
Нужно две программы, одна реализует перевод чисел из двоичной системы счисления...

Написать программу, которая переводит число из десятичной системы счисления в позиционную систему счисления
Помогите написать программу, которая переводит число из десятичной системы...


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

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

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