Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2009, 12:57   #1
Olya90
Форумчанин
 
Аватар для Olya90
 
Регистрация: 16.03.2009
Сообщений: 125
Смущение Помогите с написанием проги на перевод чисел (С++)

Вот такая задачка:Перевод дробных чисел с двоичной системы чисел в 10 с точностю: 0.000005.
Я даже не могу понять как это осуществить ((. Здеся кажись нужно делать программу с массивом char ?? Или может я ошибаюсь...
Если помогла нажмите на весы
Olya90 вне форума Ответить с цитированием
Старый 26.04.2009, 14:14   #2
Olya90
Форумчанин
 
Аватар для Olya90
 
Регистрация: 16.03.2009
Сообщений: 125
По умолчанию

Ну подскажите пожалуйста как это осуществить ??
Если помогла нажмите на весы
Olya90 вне форума Ответить с цитированием
Старый 26.04.2009, 15:20   #3
Goblin
Форумчанин
 
Регистрация: 24.11.2007
Сообщений: 196
По умолчанию

Вот. Не самое красивое решение но все таки работает.

Код:
#include <stdio.h>
#include <stdlib.h>
double sqrt(double i, int j)
{
	double sum = i;
	if(j==0) return 1;
	for(; j>1; j--)
		sum *= i;
	return sum;
}
int main()
{
	char bin[16];
	int i=0,flag=0,index=0;
	double dec=0.0;
	do
	{
		bin[i] = getchar();
		if((bin[i] != '1' && bin[i] != '0' && bin[i] != ',' && bin[i] != '\n')|| (flag == 1 && bin[i] == ','))
		{
			printf("ERROR!\n"); 
			return 0;
		}
		if(bin[i] == ',')
		{
			flag = 1;
			index = i;
			i--;
		}	
		i++;
	}while(bin[i-1]!='\n');
	index--;
	if(index == -1)
		index = i - 2;
	i = 0;
	do
	{
			if(index>=0)
			{
				dec+=(bin[i]-48)*(sqrt(2.0,index));
			}
			else
			{
				dec+=(bin[i]-48)*(1.0/sqrt(2.0,abs(index)));
			}
		index--;
		i++;
	}while(bin[i]!='\n');
	printf("%f\n", dec);
	return 0;
}
P.S. Возможно у тебя надо будет заменить getchar() на getch()

Последний раз редактировалось Goblin; 26.04.2009 в 15:23.
Goblin вне форума Ответить с цитированием
Старый 26.04.2009, 15:35   #4
Olya90
Форумчанин
 
Аватар для Olya90
 
Регистрация: 16.03.2009
Сообщений: 125
По умолчанию

Goblin, спасибки огромное ))
Если помогла нажмите на весы
Olya90 вне форума Ответить с цитированием
Старый 26.04.2009, 15:46   #5
Olya90
Форумчанин
 
Аватар для Olya90
 
Регистрация: 16.03.2009
Сообщений: 125
По умолчанию

А не могли бы прокоментировать где в проге перевод осуществляется с точностью 0.000005 а также сам принцип работы проги))
Если помогла нажмите на весы
Olya90 вне форума Ответить с цитированием
Старый 26.04.2009, 16:11   #6
Goblin
Форумчанин
 
Регистрация: 24.11.2007
Сообщений: 196
По умолчанию

Перевод осуществляеться во втором do{}while(), но в моем варианте не задаеться количество знаков после запятой. Просто замени последный printf на printf("%.5f\n", dec); где 5 и есть колличество знаков после запятой.(Перед точкой ставиться чило знаков до запятой.)

Принцип работы прост.
1.Считываем строку состаящую из (1 0 ,), папутно проверяя не ввел ли пользователь лишнего.

index - номер позиции запятой.
Кстати сама запятая в массив не попадает, а index есть номер позиция сивола стоящего до запятой.
flag - необходим для предотвращения повторного ввода запятой.

2. В итоге получаем массив с нулями и единицами. Который обрабатывем элементарным алгаритмом описанным здесь: VestikInc.narod.ru/AB/ni_bin.htm

3.Выводим результат на экран.
Goblin вне форума Ответить с цитированием
Старый 26.04.2009, 16:38   #7
Olya90
Форумчанин
 
Аватар для Olya90
 
Регистрация: 16.03.2009
Сообщений: 125
По умолчанию

спасибо еще раз выручили )) сама бы не додумалась
Если помогла нажмите на весы
Olya90 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с написанием маленькой проги Nightprince Помощь студентам 6 16.01.2009 00:08
Перевод чисел в строку RedWolf Помощь студентам 6 17.01.2008 00:09
Перевод чисел в различные С.С. Omedus Общие вопросы Delphi 5 05.11.2007 14:06