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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 42, средняя оценка - 4.95
ElemeNT
1 / 1 / 0
Регистрация: 27.10.2008
Сообщений: 25
#1

Системы счисления - C++

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

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

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

Системы счисления - C++
Здравствуйте. Помогите, пожалуйста, написать программу для деления чисел. Первое число в пятеричной системе счисления, второе - в...

Системы счисления - C++
Программа переводит из десятично системы счисления в двоичную, восьмеричную и шестнадцатиричну, но выводит ответ задом на перед надо это...

Системы счисления - C++
Есть какаянибуть ф-я которая может перевести символ в 16-ю систему счисления, или чтоб перевести с 10-й в 16-ю СС. Я пишу на С++ а не на...

Системы счисления - C++
Здравствуйте. Есть задание. Оно состоит в том, чтобы написать функцию, которая сможет переводить числа из десятичной системы счисления в...

Системы счисления!!!! - C++
Мне надо перевести число с 8-ричной в 10-тичную систему и обратно, и меня интересуют такие вопросы!!! 1 - как сделать число , больше...

Системы счисления. C++ - C++
Привет всем. Я тут взялся делать задачку: В представлении десятичного целого числа в n-ой системе счисления (2<=n<=9) найти количество...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,353
07.11.2008, 22:42     Системы счисления #2
Что ты уже сделал? Что вызывает трудности?
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 секунды
вот в принципе написал задачу, но почему работает не верно
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
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();
};
мой код короче и работает. в твоем копаться не хочется,так что давай лучше ты в моем разберись.
ElemeNT
1 / 1 / 0
Регистрация: 27.10.2008
Сообщений: 25
08.11.2008, 22:41  [ТС]     Системы счисления #5
XuTPbIu_MuHTAu, Конечно спасибо за написанную прогу(я разобрался кроме строки while( scanf("%c",&c) ) ) и как сделать так чтоб с минусом прога работала.
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
08.11.2008, 22:48     Системы счисления #6
строка while(scanf("%c",&c)) - считывает символы из входного потока.По одному. Если символов нет - цикл прерывается. Внутри цикла так же проверяется,допустимые ли символы введены и соответственно обрабатываются.
Если недопустимый - цикл прерывается break'ом.
С минусом делай сам. Тут делать то почти нечего.
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' хотя если их убрать прога работает не верно
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
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.Все просто.
Chainik!
1 / 1 / 1
Регистрация: 10.11.2008
Сообщений: 43
10.11.2008, 19:30     Системы счисления #9
Помогите написать проггу (перевод из десятичной в двоичную с/с)через цикл for
ABTOP
36 / 36 / 2
Регистрация: 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');
}
разбирайся...
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
10.11.2008, 20:28     Системы счисления #11
ABTOP,блин,что ты в самом деле.... 4294967296...гыг. просто написал бы -1 и все

Добавлено через 3 минуты 31 секунду
а,нет,-1 это не тут) сорри, не ведитесь. -1 это 1....1b
ABTOP
36 / 36 / 2
Регистрация: 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');
}
если ты имел в виду так, то неработает...
Chainik!
1 / 1 / 1
Регистрация: 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();
}
Как перевернуть строку??
ABTOP
36 / 36 / 2
Регистрация: 09.06.2008
Сообщений: 324
10.11.2008, 22:03     Системы счисления #14
записуй значения в массив, а потом выводи значения массива в обратном порядке...
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 секунд
вот в принципе все работает(и даже с минус)
Павел086
Сообщений: n/a
02.12.2008, 08:21     Системы счисления #16
помогите решить задачу перевод тз 2-ой сс в 10-ую и обратно.Но не так сложно как здесь расписано
Павел086
Сообщений: n/a
02.12.2008, 08:31     Системы счисления #17
Цитата Сообщение от Павел086 Посмотреть сообщение
помогите решить задачу перевод из 2-ой сс в 10-ую и обратно.На подобии как вверху прога,только пользователь сам должен вводить из какой сс в какую переводим(т.е например выводится на экран"в какую сс вы хотите перевести число в 2-ую или 10-ую ")
и мы вводим 2 или 10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2008, 08:43     Системы счисления
Еще ссылки по теме:

Системы счисления - C++
Задано натуральное число n. Необходимо перевести его в k-ичную систему счисления и найти разность между произведением и суммой его цифр в...

Системы счисления - C++
Реализовать модуль, обеспечивающий преобразование десятичных чисел в двоичные и наоборот. Двоичные числа хранить в виде массива целых...

Системы счисления - C++
Умные люди помогите пожалуста написать програму на С++ для превода целого двуичного числа в шестнадчетиричное. Желательно посредством...

системы счисления - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &quot;math.h&quot; using namespace std; int main(void) {char a; int...

Системы счисления - C++
Нужно перевести 16 систему в 4,2.Нужно вводить число с клавиатуры.Не могу считать.Подскажите плс))))


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

Или воспользуйтесь поиском по форуму:
Павел 086
Сообщений: n/a
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;
}
}
Yandex
Объявления
02.12.2008, 08:43     Системы счисления
Ответ Создать тему
Опции темы

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