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

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

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

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

12.10.2011, 21:24. Просмотров 704. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программа по переводу чисел из одной системы счисления в другую (C++):

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

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

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

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

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

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.10.2011, 21:24
Привет! Вот еще темы с ответами:

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

Перевод чисел из одной системы счисления в другую - C++
0x1f, 0x20. Как такого типа числа привести в десятичную систему счисления, чему они равны в десятичной системе?? Как записать эти числа в...

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

Перевод целых чисел из одной системы счисления в другую - C++
Помогите пожалуйста написать толковый код по переводу с одной системы счисления в другую, в моем случае:С ШЕСТНАДЦАТЕРИЧНОЙ В ВОСЬМЕРИЧНУЮ....


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

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

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