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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2008, 17:32   #1
kupulau
Пользователь
 
Аватар для kupulau
 
Регистрация: 12.01.2008
Сообщений: 13
По умолчанию Задачка

Добрый день. У меня вознила маленькя проблема с С.
Никак не могу написать в нём перевод из одной числовой системы в другую.
Мне нужно из восьмеричной в деситичную и наоборот. учитывая целые и десятые.
Может кто может помоч...
kupulau вне форума Ответить с цитированием
Старый 13.01.2008, 15:15   #2
4kir
 
Регистрация: 12.01.2008
Сообщений: 3
По умолчанию

гм. алгоритм перевода вроде не сложный. В чем конкретно проблема?
4kir вне форума Ответить с цитированием
Старый 13.01.2008, 23:47   #3
kupulau
Пользователь
 
Аватар для kupulau
 
Регистрация: 12.01.2008
Сообщений: 13
По умолчанию

Проблема в том, что увы - я не могу его выдумать. то есть - я понимаю как это всё можно проиграть. Но увы с написанием того что рождается у меня в голове - проблемно.
kupulau вне форума Ответить с цитированием
Старый 16.01.2008, 15:03   #4
kupulau
Пользователь
 
Аватар для kupulau
 
Регистрация: 12.01.2008
Сообщений: 13
По умолчанию

никто не может помочь с задачей?
kupulau вне форума Ответить с цитированием
Старый 16.01.2008, 15:16   #5
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

А Вы наверное думали, что вам тут сразу же исходник выложат??? Даже не потрудились показать нам, что Вы патались делать и описать, что конкретно не получаеться.
Вот разбирайтесь, составляйте алгоритм решения, а мы поможем !!!

З.Ы. Могу помочь тем, что перенесу тему во "Фриланс", а там уже за деньги !
merax вне форума Ответить с цитированием
Старый 16.01.2008, 16:07   #6
kommunist
C# developer
Форумчанин
 
Аватар для kommunist
 
Регистрация: 03.10.2007
Сообщений: 393
По умолчанию

Цитата:
Сообщение от kupulau Посмотреть сообщение
никто не может помочь с задачей?
Фриланс вам поможет.
I like WPF
kommunist вне форума Ответить с цитированием
Старый 16.01.2008, 18:05   #7
itisiam
аккаунт недоступен
Форумчанин
 
Регистрация: 23.01.2007
Сообщений: 107
По умолчанию

Для того что бы просто вывести число в 16- и 8-ми ричных системах существуют специальные модификаторы потоковых классов
Код:
	
    const int num = 155;
    cout.setf(ios::showbase);

    cout << num << endl;
    cout << oct << num << endl;    // восьмиричная система
    cout << hex << num << endl;    // 16тиричная
Если же необходимы числа в других системах отсчета как таковые, то надо писать свой класс; алгоритм перевода чисел в другие системы действительно несложный и описан в базовом курсе информатики
ввел пароль, который мне не известен
itisiam вне форума Ответить с цитированием
Старый 27.01.2008, 18:32   #8
<vlad>
Пользователь
 
Аватар для <vlad>
 
Регистрация: 27.01.2008
Сообщений: 29
По умолчанию

Всем доброго времени суток.

kupulau, если еще надо, то вот перевод из одной системы в другую:

//-----------------------------
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#define M 100

int main()
{
char str[M];
int a[M],i,coun,xl,xn,dest,t;


for(i=0;i<M;i++)
str[i]=' ';
printf("source number: ");
gets(str);
printf("source system of the numeration: ");
scanf("%d",&xl);
if(xl<1 ||xl>16)
{
printf("error");
getch();
exit (0);
}
printf("new system of the numeration: ");
scanf("%d",&xn);
if(xn<1 ||xn>16)
{
printf("error");
getch();
exit (0);
}
coun=0;
for(i=0;i<M;i++)
{
if(str[i]=='0') {a[i]=0;coun++;}
if(str[i]=='1') {a[i]=1;coun++;}
if(str[i]=='2') {a[i]=2;coun++;}
if(str[i]=='3') {a[i]=3;coun++;}
if(str[i]=='4') {a[i]=4;coun++;}
if(str[i]=='5') {a[i]=5;coun++;}
if(str[i]=='6') {a[i]=6;coun++;}
if(str[i]=='7') {a[i]=7;coun++;}
if(str[i]=='8') {a[i]=8;coun++;}
if(str[i]=='9') {a[i]=9;coun++;}
if(str[i]=='A')
{a[i]=10; coun++;}
if(str[i]=='B')
{a[i]=11; coun++;}
if(str[i]=='C')
{a[i]=12; coun++;}
if(str[i]=='D')
{a[i]=13 ;coun++;}
if(str[i]=='E')
{a[i]=14; coun++;}
if(str[i]=='F')
{a[i]=15; coun++;}
if(str[i]=='\0') break;
}


coun=coun-1;
i=0;
dest=0;
while(coun>=0)
{
dest=dest+a[i]*pow(xl,coun);
coun--;
i++;
}

printf("\n");
printf("decimal type of the number: %d",dest);
printf("\n");

t=dest;
coun=0;
for(i=0;xn<=t;i++)
{
str[i]=t%xn;
t=t/xn;
coun++;
}
str[i]=t;
printf("\n");
printf("result: ");
for(i=coun;i>=0;i--)
{
if(str[i]==10) printf("A");
else if(str[i]==11) printf("B");
else if(str[i]==12) printf("C");
else if(str[i]==13) printf("D");
else if(str[i]==14) printf("E");
else if(str[i]==15) printf("F");
else printf("%d",str[i]);
}
getch();
return 0;
}
//-------------------------------------------------

тут сначала переводиться из базовой системы с десятичную, а потом из десятичной-в нужную. Написано все криво(очень давно писал), но все работает.
<vlad> вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вот это задачка!!! Лёха Паскаль, Turbo Pascal, PascalABC.NET 2 29.04.2008 10:54
Задачка для ума 3 ZORRO2005 Microsoft Office Excel 14 23.04.2008 12:35
Задачка для ума ZORRO2005 Microsoft Office Excel 7 17.04.2008 14:42