1. Спонсор публикаций Marketplace codeby. Сервис, который так долго ждали. При расчетах используем биткоин. Первый товар уже в продаже: Консультация на тему ИБ от Ondrik8

    Скрыть объявление
  2. Спонсор публикаций Marketplace codeby. Сервис, который так долго ждали. При расчетах используем биткоин. Второй товар маркетплейса: Надёжная обфускация вашей программы от PingVinich

    Скрыть объявление

Задача: Перевод с десятичной Cист. исчислений в 2-ую, 8-чную и 16-ричн

Тема в разделе "C/C++/C#", создана пользователем ermackprogramis, 30 ноя 2010.

Статус темы:
Закрыта.
  1. ermackprogramis

    ermackprogramis Гость

    Репутация:
    0
    Нужно перевести с десятичной в эти 3 системы,но с рекурсией у меня не выходит. Как его сделать?Я в этом деле новенький,помогите пожалуйста
     
  2. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    Новенький в рекурсии или в системе счисления? Сам пытался что-нибудь делать? Если да - то покажи, а мы уже укажем на недостатки.
     
  3. ermackprogramis

    ermackprogramis Гость

    Репутация:
    0
    новенький почти у всём а особенно в рекурсии
     
  4. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    Как ответил - так и помогаю. Вот пример рекурсии:
    Код (C++):
    double Factorial( int N )
    {
    double F;
    if ( N <= 1 ) {
    F = 1;
    } else {
    F = Factorial( N - 1 ) * N;
    }
    return F;
    }
     
  5. ermackprogramis

    ermackprogramis Гость

    Репутация:
    0
    извини что так ответил, по програмированию знаю немного, мне на завтра нужно здать лабу, как реализовать перевов в эти 3 системы, с помощью рекурсии я не знаю, пробовал через цыкл FOR, что то получилось но сказали что через цыкл нельзя, помоги если не сложно
     
  6. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    Показывай что пробовал. Посмотрим что можно зделать.
     
  7. ermackprogramis

    ermackprogramis Гость

    Репутация:
    0
    Этот код писал не я но он пашет, как перевести в рекурсию этот код без единого цыкла я не знаю
    Код (C++):
    #include <stdio.h>
    #include <conio.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)
    {
    float 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("Enter the number: " );
    char input[32] = "";
    scanf("%s", &input);

    printf("\nEnter from what: ");
    int sinp;
    scanf("%i", &sinp);

    printf("\nEnter to where: ");
    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();
    system("pause");
    return 0;
    }



    А то мой код, но он только для двоичной
    Код (C++):
    #include <iostream>
    #include <math.h>

    using namespace std;

    int main()
    {
    int dec, bin=0, j;

    cin >> dec;
    for(j=0; dec>0; j++)
    {
    bin+=(dec%2)*pow(10.0,j);
    dec/=2;
    }

    cout <<bin<< endl;
    system("pause");
    return 0;
    }
     
  8. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    ermackprogramis
    Не уходи далеко. Я думаю над твоей задачей.
     
  9. ermackprogramis

    ermackprogramis Гость

    Репутация:
    0
    хорошо))))))) спасибо большое
     
  10. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    Вот перевод в двоичную систему:
    Код (C++):
    #include <iostream.h>

    void to_bin( char *p, int v, int c )
    {
    p[c - 1] = v & 1 ? '1' : '0';
    v >>= 1;
    if ( v > 0 ) to_bin( p, v, --c );
    }

    int main()
    {
    int     v;
    char    p[33];

    cin >> v;
    memset( p, ' ', 32 );
    p[32] = '\0';
    to_bin( p, v, 32 );
    cout << p;

    return 0;
    }
    Сегодня с ног валюсь, т.ч. в данный момент больше ни чем не помогу.. Возможно завтра, если не сильно буду занят то подумаю на счет других систем счисления.
     
  11. ermackprogramis

    ermackprogramis Гость

    Репутация:
    0
    спасибо что зделал это!!! если будет время помоги над другими)))) плиз)))) спасибо
     
  12. ermackprogramis

    ermackprogramis Гость

    Репутация:
    0
    Привет,извини что беспокою, что то вышло с теми двумя вариантами?
     
  13. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    Привет. А может ты сам попробуешь, а если что не получится то я тебе подскажу!)
     
  14. ermackprogramis

    ermackprogramis Гость

    Репутация:
    0
    Код (C++):
    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>

    using namespace std;

    const char *numset = "0123456789ABCDEF";

    void to_bin( char *p, int v, int c )
    {
    p[c - 1] = v & 1 ? '1' : '0';
    v >>= 1;
    if ( v > 0 ) to_bin( p, v, --c );
    }

    void _toOther(int dec, int m, char *str)
    {
    str[0] = numset[dec % m];
    if (dec >= 16)
    _toOther(dec / m, m, str + 1);
    else
    str[1] = 0;
    }

    void toOther(int dec, int m, char *str)
    {
    _toOther(dec, m, str);
    int l = strlen(str);
    for (int i = 0; i < l / 2; i++)
    swap(str[i], str[l - i - 1]);
    }

    int main(int argc, char argv)
    {
    int dec;
    char str[1000];
    scanf("%d", &dec);
    toOther(dec, 16, str);
    printf("%s\n", str);
    toOther(dec, 8, str);
    printf("%s\n", str);
    char    p[33];
    memset( p, ' ', 32 );
    p[32] = '\0';
    to_bin( p, dec, 32 );
    cout << p;
    system("pause");
    }
    Привет взгляни на это пожалуйста, там твой код я вклеил и еще перевод в 16 и 8 системы.Ноу восьмиричную не правильно переводит.ПОдскажи что нам надо сделать что б правильно переводило пожалуйста
     
  15. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    Пфф...
    Код (C++):
    #include <iostream.h>

    char *  up_to_hex_table = "0123456789abcdef";

    void to_x( char *p, int v, int radix, int n )
    {
    p[n - 1] = up_to_hex_table[v & (radix - 1)];
    v /= radix;
    if ( v ) to_x( p, v, radix, --n );
    }

    int main()
    {
    int     v;
    char    p[33];
    char * pp;

    cin >> v;
    memset( p, ' ', sizeof( p ) - 1 );
    p[sizeof( p ) - 1] = '\0';

    to_x( p, v, 16, sizeof( p ) - 1 );

    for ( pp = p; *pp; pp++ ) if ( *pp != ' ' ) cout << *pp;

    return 0;
    }
    Не за что. Пожалуйста.

    Добавлено: P.S.: radix - это система счисления.
     
  16. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Так чем тут вся эпопея то закончилась ? ;-)
    Вообще это не самый лучший пример для рекурсии, цикл тут куда более граммотен и актуален, но т.к. задание такое, то видно ничего не поделаешь???
    Тема актуальна еще?

    Добавлено: Если да, то какие именно ее аспекты, а то я смотрю ребята уйму работы по этому топику проделали :)
     
  17. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    Не знаю) Я его больше не видел...

    Ну почему же?) Как лучше сделать?
     
Загрузка...
Похожие Темы - Задача Перевод десятичной
  1. disub
    Ответов:
    1
    Просмотров:
    112
  2. Kazua
    Ответов:
    1
    Просмотров:
    94
  3. Rina
    Ответов:
    0
    Просмотров:
    68
  4. School_Information

    Решите Задача

    Ответов:
    2
    Просмотров:
    210
  5. KhNarg
    Ответов:
    2
    Просмотров:
    321
Статус темы:
Закрыта.

Поделиться этой страницей