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

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

Войти
Регистрация
Восстановить пароль
 
Chingiz.str
Сообщений: n/a
#1

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

12.10.2011, 21:24. Просмотров 693. Ответов 0
Метки нет (Все метки)

Программа по переводу чисел(в том числе и дробных) из одной системы счисления в другую.
Помогите пожалуйста найти баг в коде.
Пишу на Borland C++ 5.02

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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
char *perevod(char *input, int ssinput, int ssoutput, int t=5)
{
   const char *a="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
   char output[255], tempcelstr[255]={'0','\0'}, tempdrobstr[255]={'0','\0'}, temp[255]={'0','\0'};
   int dlina, tempcel, j, n, d, dl, sumc, st=1;
   float sumd, tempdrob;
   bool check;
   dlina=strlen(input);
 
   for(int i=0; i<dlina; )//otdelyaem celuyu i dejstvitel'nuyu chasti
   {
    if((input[i]=='.') || (input[i]==',')) {check=true; continue;}
      else
      {
         if(check==false)
        {
            if(ssinput==10)tempcel=tempcel*10+input[i]-'0';
            else {tempcelstr[i]=input[i]; tempcelstr[i]='\0';}
        }
         else
         {
            if(ssinput==10)tempdrob=(float)tempdrob+((input[i]-'0')*(pow(0.1,st)));
                else {tempdrobstr[st-1]=input[i]; tempdrobstr[st]='\0';}
            ++st;
         }
      }
      ++i;
   }
 
   if (ssinput==10)//esli vhodnaya sistema schisleniya s osnovaniem 10
   {
      //perevodim celuyu chast'
    for (j=0; tempcel!=0; )
    {
        temp[j]=a[tempcel % ssoutput];
        tempcel=tempcel/ssoutput;
         ++j;
    }
      for (n=0, j=j-1; j>=0; j--, n++) tempcelstr[n]=temp[j];
    tempcelstr[n]='\0';
 
      //perevodim drobnuyu chast'
      if(t!=0)//esli ne 0 znakov posle zapyatoj
    {
         for(j=0; j<t; j++)
        {
            d=floor(tempdrob*ssoutput);
            tempdrobstr[j]=a[d];
            tempdrob=(float)tempdrob*ssoutput-d;
         }
         tempdrobstr[j]='\0';
      }
 
   }
   else
   {
      if (ssoutput==10)
         //perevodim celuyu chast'
        dl=strlen(tempcelstr)-1;
       sumc=0;
          for(int i=0; dl>=0; dl--, i++)
       {
           for(j=0; j<ssinput;) {if (a[j]==tempcelstr[i]) break; ++j;}
            cout<<"j="<<j<<endl;
            sumc=sumc+(j)*pow(ssinput,dl);
       }
         for(j=0; sumc>0;j++) {temp[j]=sumc % 10; sumc=sumc/10;}
         for(n=0, j=j-1; j>=0; j--, n++) tempcelstr[n]=temp[j];
         tempcelstr[n]='\0';
 
         //perevodim drobnuyu chast'
        dl=strlen(tempdrobstr)-1;
          sumd=0;
       for(int i=0; dl>=0; dl--, i++)
        {
             for(j=0; j<ssinput;) {if (a[j]==tempdrobstr[i]) break; ++j;}
        sumd=(float)sumd+(j)*pow(ssinput,(-i-1));
        }
         for(j=0; sumd>0;j++)
         {
            temp[j]=floor(sumd*10);
            sumd=(float)sumd-(floor(sumd*10)/10);
         }
         for(n=0, j=j-1; j>=0; j--, n++) tempdrobstr[n]=temp[j];
         tempdrobstr[n]='\0';
   }
   strcat(output, tempcelstr);
   strcat(output, ",");
   strcat(output, tempdrobstr);
   return output;
}
 
void main()
{
   puts(perevod("123,15", 10, 16, 6));
   getch();
}
Добавлено через 39 минут
Я понимаю что может подобные программы были, но мне бы хотелось узнать почему моя не работает... за исключением того, что руки у меня явно не из того места))) заранее спасибо =)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2011, 21:24     Программа по переводу чисел из одной системы счисления в другую
Посмотрите здесь:

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

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

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

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

Перевод чисел из десятичной системы счисления в 2, 8 и 16 - C++
Всем привет,нужна помощь. Помогите,пожалуйста. Нужно перевести из десятичной системы счисления в другую(2,8 и 16). Основание и число...

Сложение чисел 11-ричной системы счисления - C++
Всем привет, нужно произвести операции сложения и вычитания чисел в одиннадцатиричной системе счисления. Допустим есть массив...

Перевод действительный чисел в разные системы счисления - C++
Написал класс для перевода целых чисел из любой СС в любую СС, но с действительными числами не могу разобраться ! Может кnj-то покажет...

Перевод чисел из 10очной системы счисления в 3ую - C++
Это схема: http://s60.***********/i168/1211/6f/70dd775c9ead.jpg Суть программы пользователь вводит число она считает и выводит...

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

Перевод знаковых 4-х байтовых чисел в различные системы счисления - C++
Пример программы: // Программа преобразует однобайтовое целое число из десятичной // или шестнадцатеричной системы счисления в...


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

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

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