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

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

Восстановить пароль Регистрация
 
AdVanTage
0 / 0 / 0
Регистрация: 13.10.2010
Сообщений: 3
13.10.2010, 21:47     Системы исчисления #1
Здраствуйте !! Помогите пожалуйста доделать программу,которая переводит число в любую систему исчисления...Вот код программы,все работает,но переводит только целые числа...Как сделать чтоб переводило и дробовые???

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
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
void main ()
{clrscr();
long int k,i,p,c;
long char b[50];
long int a[50];
cout<<"chislo=";
cin>>c;
nare: {cout<<"p=";
cin>>p;
if (p<2&&p>16) goto nare;
i=0;k=0;
while (c>=p)
        {
        a[i]=c%p;
        switch(a[i]){
        case 0 :b[i]='0'; break;
        case 1 :b[i]='1';break;
        case 2 :b[i]='2';break;
        case 3 :b[i]='3';break;
        case 4 :b[i]='4';break;
        case 5 :b[i]='5';break;
        case 6 :b[i]='6';break;
        case 7 :b[i]='7';break;
        case 8 :b[i]='8';break;
        case 9 :b[i]='9';break;
        case 10 :b[i]='A';break;
        case 11 :b[i]='B';break;
        case 12 :b[i]='C';break;
        case 13 :b[i]='D';break;
        case 14 :b[i]='E';break;
        case 15 :b[i]='F';break;
 
                                 }
        c=c/p;
 
        i++;
        k++;
        }
        a[i]=c;
        switch(a[i]){
        case 0 :b[i]='0'; break;
        case 1 :b[i]='1';break;
        case 2 :b[i]='2';break;
        case 3 :b[i]='3';break;
        case 4 :b[i]='4';break;
        case 5 :b[i]='5';break;
        case 6 :b[i]='6';break;
        case 7 :b[i]='7';break;
        case 8 :b[i]='8';break;
        case 9 :b[i]='9';break;
        case 10 :b[i]='A';break;
        case 11 :b[i]='B';break;
        case 12 :b[i]='C';break;
        case 13 :b[i]='D';break;
        case 14 :b[i]='E';break;
        case 15 :b[i]='F';break;
                                 }
for (i=k;i>=0;i--)cout<<b[i];
 
getch();}
}
подскажите пожалуйста!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
D@rkD@iver
110 / 110 / 3
Регистрация: 01.10.2008
Сообщений: 876
14.10.2010, 07:53     Системы исчисления #2
у дробных чисел нужно переводить отдельно целую часть и отдельно дробную
в гугле полно примеров как переводить дробные части
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
14.10.2010, 08:38     Системы исчисления #3
Целая часть переводится или умножением на исходное основание, или делением на целевое, а дробная делением на исходное. Это три разных алгоритма, поэтому перевести дробь целиком не возможно, можно только перевести отдельно целую и дробную части и конкатенировать их через разделитель.
AdVanTage
0 / 0 / 0
Регистрация: 13.10.2010
Сообщений: 3
14.10.2010, 17:05  [ТС]     Системы исчисления #4
спасибо ,но я еще вчера разобрался
выкладываю текст программы,может кому-то пригодиться

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
#include<string.h>
#include<stdlib.h>
#include<iostream.h>
#include<iomanip.h>
#include<conio.h>
int main()
{ clrscr();
  char s[32];
  float num, final;
  int l,x,i;
  int p;
  cout<<"chislo= "; cin>>num;
  cout<<"p= "; cin>>p;
  itoa((int)num,s,p);
  l=strlen(s);
  s[l]='.';
  final=num-(int)num;
  for (i=l+1; i<(l+9); i++)
    if (final == 0) break;
       else {
    int y;
    float x=final*p;
    y=(int)x;
       switch(y)
         {case 10: s[i]='a'; break;
          case 11: s[i]='b'; break;
          case 12: s[i]='c'; break;
          case 13: s[i]='d'; break;
          case 14: s[i]='e'; break;
          case 15: s[i]='f'; break;
          default: s[i]=y+'0'; break;}
    final=x-y;
    s[i+1]='\0';
        }
  cout<<s<<endl;
  getch();
  return 0;
      }
Yandex
Объявления
14.10.2010, 17:05     Системы исчисления
Ответ Создать тему
Опции темы

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