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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Файлы и работа с ними http://www.cyberforum.ru/cpp-beginners/thread365374.html
Пытаюсь написать программу записывающую в файл строку "123123а" Но вместо этого программа записывает строку "1Н2Н3Н1Н2Н3НaН" В чем причина? Вот код: Код: #include <iostream> #include <stdio.h> #define SIZE 8 using namespace std;
C++ Как вывести адресс на который указывает указатель типа char*. Эта программа : #include <iostream> using namespace std; int main() { int a={1, 2, 3, 4}; int* g=a; cout<<g<<endl; g++; http://www.cyberforum.ru/cpp-beginners/thread365362.html
C++ Программа, выполняющая какие-либо действия каждую секунду.
Есть бинарные часы, консольный вариант. Как осуществить сабж? Есть вариант сделать это через бесконечный цикл. В каждом цикле: задержка на 1 секунду-> проверка времени-> изменяем бинарное время. Может есть ещё какой-либо вариант? Например, чтобы программа без задержек и проверки времени, принимала сигнал, что время изменилось, а затем уже изменяла бинарные часы. Если последний вариант есть,...
Задача на пересечение C++
Всем доброго вечера. Помогите пожалуйста решить задачу. Я не могу понять саму структуру как должно быть. Написать программу, определяющую результат пересечения двух прямоугольников, стороны которых параллельны координатным осям.
C++ Проверить, делятся ли числа нацело http://www.cyberforum.ru/cpp-beginners/thread365352.html
Если a делится на b нацело выводим 1. Если с остатком то любое другое число. if использовать нельзя. Нужно вывести какую-то формулу, используя знаки (+ -). Помогите!
C++ Задача Ход конем - 2. день добрый. задача: http://informatics.mccme.ru/moodle/mod/statements/view3.php?id=656&chapterid=2962#1 как видите, задача на тему дп, но я смог решить только с помощью рекурсии. Система решение приняло, но всеравно оно мне не особо нравится, долго работает на данных побольше. Хотел узнать, как решить ее с помощью дп. #include <fstream> #include <iostream> bool possible (const int,... подробнее

Показать сообщение отдельно
Chingiz.str
Сообщений: n/a
12.10.2011, 21:24     Программа по переводу чисел из одной системы счисления в другую
Программа по переводу чисел(в том числе и дробных) из одной системы счисления в другую.
Помогите пожалуйста найти баг в коде.
Пишу на 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 минут
Я понимаю что может подобные программы были, но мне бы хотелось узнать почему моя не работает... за исключением того, что руки у меня явно не из того места))) заранее спасибо =)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 06:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru