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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2012, 22:02   #1
doctorvra4
Пользователь
 
Регистрация: 13.06.2011
Сообщений: 23
По умолчанию перевод чисел на си

помогите исправить хотя бы синтаксические ошибки уже сдавать через несколько часов
main.cpp
Код:
 #include<stdio.h>
#include<iostream>
#include<stdlib.h>
#include"main.h"


int main()
{
   int w,a,b1,b2,n=0,n1=0,l=0,l1=0;
   int k=0,i,i1=0,i2=0;
   double result,fractional,celie;
   char c[14];
   scanf("%d%d",&b1,&b2);
   scanf("%s",c);

   bad(b1,b2);
   bad_input(c,n,b1);

   n=schet(c);
   if (w=1)
	   {
		   l1=celiy_schet(c);
		   result=celie_v_dec_system(c,b1,l1);
		   celie=celie_v_b2(result,b2);
		   result=0;
		   result=fractional_v_dec(l1,n,b1,c);
		   fractional=result_to_b2_fractional(l1,b2,result);
		   crazy_vivod(w,celie,fractional);
   }
   else
   {
	   result=celie_v_dec_system(c,b1,n);
	   celie=celie_v_b2(result,b2);
              fractional=0;
	   crazy_vivod(w,celie,fractional);
   }
}
main.h
Код:
int powe( int a, int x);
//возведение в положительную и отрицательную степень
void bad(int b1,int b2);
//смотрим действительно ли б1 и б2 от 2 до 16
int schet(char c);
//считает кол-во символов попутно сообщая дробьное число это или нет
int celiy_schet(char c);
//считает кол-во четных символов
int bad_input(char c,int n,int b1);
//смотрит то ли введено
int celie_v_dec_system(char* c,int b1,int l1);
//берем целую часть и переводим в 10-ную систему
int celie_v_b2(double result,int b2);
//результат предыдущей деятельности в б2
int fractional_v_dec(int l1,int n,int b1,char c);
//дробину при наличии оной в десятичную
int result_to_b2_fractional(int l1,int b2,double  result);
//а потом в б2
void crazy_vivod(int w,double celie,double fractional);
//все это чудо выводим
//PROFIT
func.cpp
Код:
#include<stdlib.h>
#include"main.h"
#include<stdio.h>
int powe( int a, int x){ // а в степени х
	int result = 1;
	if (x>0){
		while(x>0){
			result = result * a;
			--x;
		}
	} else
		while(x>0){
			result = result * (1/a);
			--x;
		}
		return result;
}
void bad(int b1,int b2)
{
	if (b1>16||b2>16||b1<2||b2<2) // 2<b1 b2<16
	{printf("bad input");
	exit(0);}
}
int schet(char* c){
int i,w,n;
	for(i=0;c[i]!=0;i++)
	{if (c[i]=='.')
			w=1;
	n++;}
	return w,n;
}
int celiy_schet(char* c)
{
	int i,l1;
for(i = 0; c[i] != '.' && c[i] != 0; i++)
		l1++;
	return l1;
}
void bad_input(char* c[],int n,int b1)
{
	int i;
	for(i=0;i<n;i++)
		if (!(c[i]-'0'<b1||c[i]==','))
		{
			printf("bad input");
			exit(0);
		}
}
int celie_v_dec_system(char* c,int b1,int l1)
{
	int i;
	double celie;
	for(i=0;i<l1;i++)
		{ 
			celie=celie+c[i]*powe(b1,l1-1);
			l1--;
	}
return celie;
}
int celie_v_b2(double result,int b2)
{
	int i,a;
	double celie;
	for(i=0;celie!=0;i++)
	{	a =(int) celie % b2;
		celie = celie / b2;
		celie=celie+a*powe(10,i);
	}
	return result;
}
int fractional_v_dec(int l1,int n,int b1,char* c)
{
	int i,k=0;
	double result=0;
	for(i=l1;i<n;i++)
	{ 

		result=result+c[i]*powe(b1,-k);
		k++;
		l1--;
	}
	return result;
}
int result_to_b2_fractional(int l1,int b2,double result,double celie)
{
	double fractional;
	int i,a;

		for(i=l1;fractional!=0;i++)
	{	a =(int)fractional % b2;
		fractional = celie / b2;
		result=result+a*powe(10,i);
		}
		return fractional;
}
void crazy_vivod(int w,double celie,double fractional)
{
		
	if(w=1)
		printf("%s.%s",celie,fractional);
	else
		printf("%s",celie);
}

Последний раз редактировалось Stilet; 08.04.2012 в 22:35.
doctorvra4 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перевод чисел Настя Шелестова Помощь студентам 11 05.10.2011 08:11
перевод чисел Adeptus Stoybatus Помощь студентам 2 03.11.2010 09:05
перевод чисел с Ам тя Помощь студентам 2 01.10.2010 18:05
ПЕРЕВОД ЧИСЕЛ Nastya_19_90 Помощь студентам 0 08.04.2010 18:07
перевод чисел counter Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 05.06.2009 22:41