Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Преобразование дробных чисел 
:(
    Опции темы
Gon
  Дата 30.4.2008, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 30.4.2008

Репутация: нет
Всего: нет



Доброе утро. Мне нужна программа которая переводила бы дробное число из 10 СС в любуду другую.
Такое задание:
Ввод: дробное число в 10 СС, конечная СС, число знаков в дробной части конечного представления.
Вывод: округленное число в конечной СС.
Вобщем я делал ее на С++ Builder 6, максимум я смог сделать чтобы она преобразовала целое число без округления.
Надеюсь на вашу помощь.

Код

#include <stdio.h>
#include <conio.h>
#include <vcl.h>
#include <math.h>
#include <string.h>
#pragma hdrstop

//------------------------------------------------
#pragma argsused

int CharToInt(char alpha)
{
  if(alpha<58 )
    return alpha - 48;
  else
    return alpha - 55;
}

int ConvertToDec(char *input , int sinp )
{
  int sum = 0;
  int pow = 1;
  for(int i = strlen(input)-1; i>=0; i--)
  {
    sum+=CharToInt(input[i]) * pow;
    pow*=sinp;
  }
  return sum ;
}

char *convertX(int input, int sout, char *out)
{
  while(input!=0)
  {
    byte j = input%sout;
    input/=sout;
    out--;
    if(j<10)
      *out = 48 + j;
    else
      *out = 55 + j;
  }
  return out;
}

int main(int argc, char* argv[])
{
  printf("Vvedite iszhodnoe chislo: " );
  char input[32] = "";
  scanf("%s", &input);

  printf("\nVvedite nachalnuiu codirovku: ");
  int sinp;
  scanf("%i", &sinp);

  printf("\nVvedite conechnuiu codirovku: ");
  int sout;
  scanf("%i", &sout);

  printf("\n\n= ");

  char output[32];
  output[31] = 0;
  printf("%s", convertX(ConvertToDec(input, sinp), sout, output+31));

  printf("\n\nNazsmite ljubuju klavisu...");
  getch();
  return 0;
}


Это сообщение отредактировал(а) Gon - 30.4.2008, 08:15
PM MAIL   Вверх
Ezik
Дата 30.4.2008, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 15.8.2007

Репутация: 2
Всего: 2



А почему тебя не устраивает обычный алгоритм перевода?
Просто отделяешь дробную часть от целой и переводишь каждую в нужную СС, одно путем деления, другое путем умножения. 
PM MAIL ICQ   Вверх
Gon
Дата 30.4.2008, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 30.4.2008

Репутация: нет
Всего: нет



В этом то и проблема что я незнаю как отделить дробную часть.
PM MAIL   Вверх
archimed7592
Дата 30.4.2008, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 6
Всего: 93



Цитата(Gon @  30.4.2008,  19:51 Найти цитируемый пост)
В этом то и проблема что я незнаю как отделить дробную часть. 

Код

double x = 3.14;
double s = floor(x); // s = 3.0
double e = fmod(x, s); // e = 0.14



--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0610 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.