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

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

Восстановить пароль Регистрация
 
Chingiz.str
Сообщений: n/a
12.10.2011, 21:24     Программа по переводу чисел из одной системы счисления в другую #1
Программа по переводу чисел(в том числе и дробных) из одной системы счисления в другую.
Помогите пожалуйста найти баг в коде.
Пишу на 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     Программа по переводу чисел из одной системы счисления в другую
Посмотрите здесь:

создание программы для обучения переводу чисел из десятичной системы счисления в двоичную,восьмеричную,шестнадцатеричную C++
C++ напишите программу ДЛЯ ОБУЧЕНИЯ ПЕРЕВОДУ чисел из десятичной системы счисления в двоичную,восьмеричную,шестнадцатеричную
C++ Программа для перевода из одной системы счисления в другую.
C++ Составить программу для обучения переводу чисел из десятичной системы счисления в 16-ричную и обратно.
Перевод чисел из одной системы счисления в другую C++
C++ Перевод чисел из одной системы счисления в другую!
C++ Программа, переводящая число из одной системы счисления в другую
Программа перевода из одной системы счисления в другую C++

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

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

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