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

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

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

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

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

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

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

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

Простейший алгоритм перевода числа из 10 системы счисления в 16 ричную систему счисления - C++
Помогите написать самый простой алгоритм перевода из 10 системы счисления в 16 ричную систему счисления! Мне нужен именно самый простенький...

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

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

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

17
CheshireCat
Эксперт С++
2907 / 1256 / 81
Регистрация: 27.05.2008
Сообщений: 3,449
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 / 10
Регистрация: 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 / 10
Регистрация: 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 / 10
Регистрация: 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 / 1
Регистрация: 10.11.2008
Сообщений: 43
10.11.2008, 19:30 #9
Помогите написать проггу (перевод из десятичной в двоичную с/с)через цикл for
0
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');
}
разбирайся...
0
XuTPbIu_MuHTAu
Эксперт С++
2234 / 749 / 10
Регистрация: 27.05.2008
Сообщений: 1,498
10.11.2008, 20:28 #11
ABTOP,блин,что ты в самом деле.... 4294967296...гыг. просто написал бы -1 и все

Добавлено через 3 минуты 31 секунду
а,нет,-1 это не тут) сорри, не ведитесь. -1 это 1....1b
0
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');
}
если ты имел в виду так, то неработает...
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();
}
Как перевернуть строку??
0
ABTOP
36 / 36 / 2
Регистрация: 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
10.11.2008, 23:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2008, 23:55
Привет! Вот еще темы с ответами:

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

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

Перевод чисел из 16 системы счисления в 2 систему счисления - C++
Помогите составить программу для перевод чисел из 16 с/c в 2 c/c при условии,что программ может переводить и дробные числа.

Системы счисления - C++
Написать программу для перевода чисел из десятичной в восьмеричную систему счисления.


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

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

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