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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2007, 10:42   #1
Panterka
Пользователь
 
Аватар для Panterka
 
Регистрация: 10.12.2007
Сообщений: 28
По умолчанию C++. Перевод десятичного числа в двоичное

Необходимо было создать прогу (в виде функции) по переводу десятичного числа в двоичное. Вот собственно что получилась, проблема в том, что при вводе любого десятичного числа прога выдаёт ответ "0". Подскажите пожалуйста в чём проблема!

Код:
//Vuchislenie fynkcii

#include <stdio.h>
#include <conio.h>
#include <math.h>

void dvoich(int x1)
{FILE*L5;
 int i,b;
 long c=0;
 L5=fopen("C:\L5.txt","at");

 for(i=0;x1<2;i++)
 {b=fmod(x1,2);
 x1/=2;
 c+=b*pow(10,i);}
 printf("\n Dvoichnoe chislo: %d",c);
 fprintf(L5,"\n Dvoichnoe chislo: %d",c);
 fclose(L5);}

void main()
{int a;
 clrscr();
 FILE*L5;
 L5=fopen("C:\L5.txt","at");
 printf("\n Vvedite desyatichnoe chislo:");
 scanf("\n %d",&a);
 fprintf(L5,"Desyatichnoe chislo a=%d",a);
 dvoich(a);
 fclose(L5);
 getch();
 }

Последний раз редактировалось AlDelta; 10.12.2007 в 11:41. Причина: [CODE]
Panterka вне форума Ответить с цитированием
Старый 10.12.2007, 12:58   #2
theos
Форумчанин
 
Аватар для theos
 
Регистрация: 10.12.2007
Сообщений: 158
По умолчанию

Код:
//Vuchislenie fynkcii   
  
#include <stdio.h>   
#include <conio.h>   
#include <math.h>   
  
void dvoich(int x1)   
{  
	int i, b;  
	long c = 0;  
 	for(i=0;x1 > 0;i++)  
 	{
		b = x1 % 2;  
		x1 = (x1-b)/2;
		c += b * pow(10,i);
	}

	printf("\nDvoichnoe chislo: %d",c);   
}   
  
void main()   
{
	int a;  
	printf("Vvedite desyatichnoe chislo:");  
	scanf("%d",&a);  
 	dvoich(a);  
	getch();  
}
У тебя цикл был развёрнут в неправильную сторону, x1 изначально с большой вероятностью >= 2

И работа с файлами у тебя сделана плохо. Открывать один и тот же файл 2 раза - зло. Угадай почему.

Вообще если тебе нужно вывести результаты в файл, лучше просто перенаправь поток вывода. (вызвав программу так - prog.exe >out.txt)
theos вне форума Ответить с цитированием
Старый 10.12.2007, 13:43   #3
Panterka
Пользователь
 
Аватар для Panterka
 
Регистрация: 10.12.2007
Сообщений: 28
По умолчанию

Цитата:
Сообщение от theos Посмотреть сообщение
Вообще если тебе нужно вывести результаты в файл, лучше просто перенаправь поток вывода. (вызвав программу так - prog.exe >out.txt)
Большое спасибо, прога работает! Но одно НО, подскажи пожалуйста как сделать вывод информации в *.txt, что-то никак не получается.
Panterka вне форума Ответить с цитированием
Старый 10.12.2007, 19:36   #4
1ntro
Пользователь
 
Регистрация: 10.12.2007
Сообщений: 28
По умолчанию

Вариантов уйма... Вариант может быть таким, но код надо исправлять...
Например:
ofstream oFile("o.txt", ios:ut);
for (int i = 0; i < n; i++)
printLine(oFile, dis[i]);
oFile.close();
return 0;
}

void printLine(ostream &output, TDis d)
{
output << setiosflags(ios::left) << setw(15) << d.Name << setw(3) << d.L << setw(3) << d.P << setw(15) << d.tName << endl;
}

Или, например, fopen и иже с ним
1ntro вне форума Ответить с цитированием
Старый 11.12.2007, 10:16   #5
Panterka
Пользователь
 
Аватар для Panterka
 
Регистрация: 10.12.2007
Сообщений: 28
По умолчанию

Цитата:
Сообщение от 1ntro Посмотреть сообщение
Вариантов уйма... Вариант может быть таким, но код надо исправлять... Или, например, fopen и иже с ним
Покажите пожалуйста, как эта программа должна выглядеть в конечном итоге (с выводом информации через fopen).
Panterka вне форума Ответить с цитированием
Старый 11.12.2007, 16:49   #6
1ntro
Пользователь
 
Регистрация: 10.12.2007
Сообщений: 28
По умолчанию

Код:
#include <cstdlib>
#include <iostream>
#include <conio>     
#include <math> 

using namespace std;

long dvoich(int x1)     
 {   
     int i, b;   
     long c = 0;   
     for(i=0;x1 > 0;i++)   
     {          
        b = x1 % 2;   
         x1 = (x1-b)/2; 
         c += b * pow(10,i); 
     }  
   
     return c;     
 };
     

int main(int argc, char *argv[])
{
    long t;
    FILE * pFile;
    pFile = fopen ("mylog.txt","w");
    int a;   
    cout<< "Vvedite desyatichnoe chislo:\n";   
    cin>> a;   
    t = dvoich(a);   
    fputc ((long) t,pFile);
    fclose (pFile); 
    system("PAUSE");
    return EXIT_SUCCESS;
}
Проверить не могу, шас нету с собой ЦПП, но в теории все верно х_Х
1ntro вне форума Ответить с цитированием
Старый 12.12.2007, 09:38   #7
Panterka
Пользователь
 
Аватар для Panterka
 
Регистрация: 10.12.2007
Сообщений: 28
По умолчанию

Цитата:
Сообщение от 1ntro Посмотреть сообщение
Проверить не могу, шас нету с собой ЦПП, но в теории все верно х_Х
Спасибо конечно за помощь, но там столько ошибок вылазиет...
Panterka вне форума Ответить с цитированием
Старый 12.12.2007, 13:32   #8
1ntro
Пользователь
 
Регистрация: 10.12.2007
Сообщений: 28
По умолчанию

Ога, например функцию pow не знает )
1ntro вне форума Ответить с цитированием
Старый 12.12.2007, 13:34   #9
Panterka
Пользователь
 
Аватар для Panterka
 
Регистрация: 10.12.2007
Сообщений: 28
По умолчанию

Цитата:
Сообщение от 1ntro Посмотреть сообщение
Ога, например функцию pow не знает )
да нет не pow
Panterka вне форума Ответить с цитированием
Старый 12.12.2007, 13:37   #10
1ntro
Пользователь
 
Регистрация: 10.12.2007
Сообщений: 28
По умолчанию

у кого какой компилятор ) у меня поу )
Код:
int * B(int k, int t)
{
int *s;
int i;
s=(int*)calloc(t,sizeof(int));
for(i=0;i<t;i++){
s[i]=k%2;
k/=2;
}
return s;
}
Еще могут быть устаревшие хедеры, ты бы хоть ошибки выложил, я не телепат все-таки )
1ntro вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод из римских в арабские числа winnix Помощь студентам 23 31.05.2010 15:40
Перевод вещественного числа в двоичный код shepelin Свободное общение 9 06.07.2008 10:00
Преобразование десятичного числа в двоичное. Quize Паскаль, Turbo Pascal, PascalABC.NET 4 12.04.2008 16:09
информатика-дополнительный код десятичного числа Artem1987 Помощь студентам 3 18.11.2007 14:32
перевод числа kommunist Помощь студентам 5 15.10.2007 22:58