Форум программистов, компьютерный форум CyberForum.ru

задача на подпрограммы и системы счисления - C++

Восстановить пароль Регистрация
 
ПаЗитиФкА
3 / 3 / 0
Регистрация: 16.11.2011
Сообщений: 51
17.11.2011, 00:06     задача на подпрограммы и системы счисления #1
Помогите, пожалуйста, с задачей.
Десятичное целое положительное число m переводится в двоичную систему счисления, разряды в этой записи переставляются в обратном порядке, и снова производится перевод в десятичную систему счисления. Напечатать в виде таблицы все полученные значения для m=512,513,514,...,1023.
Начало таблицы имеет вид 512 1000000000 0000000001 1
Перевод чисел из одной системы счисления в другую организовать в подпрограмме.

Для одного конкретного числа как это сделать я еще более-менее понимаю, а с целой таблицей непонятно что делать.
Да и как подпрограммы оформить тоже совсем не ясно...
Заранее спасибо!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Байт
 Аватар для Байт
13993 / 8824 / 1231
Регистрация: 24.12.2010
Сообщений: 15,989
17.11.2011, 00:25     задача на подпрограммы и системы счисления #2
C
1
2
3
for(m=512; m<1024; m++) {
  // Работа с одним числом m
}
ПаЗитиФкА
3 / 3 / 0
Регистрация: 16.11.2011
Сообщений: 51
17.11.2011, 00:26  [ТС]     задача на подпрограммы и системы счисления #3
Байт, да, я тоже так пробовала.
в итоге на экране куча непонятных чисел
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
17.11.2011, 00:32     задача на подпрограммы и системы счисления #4
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <stdio.h>
#include <limits.h>
#include <string.h>
#include <ctype.h>
 
#define FROM  512
#define TO   1023
 
int bintoi(char *s)
{
        int n, sign;
 
        for ( ; isspace(*s); s++)
                ;
        sign = (*s == '-') ? -1 : 1;
        if (*s == '+' || *s == '-')
                s++;
        n = 0;
        while (*s == '0' || *s == '1')
                n = 2 * n + ((*s++ == '1') ? 1 : 0);
        return n * sign;
}
 
void itobin(int n, char s[])
{
        static int i;
 
        if (n / 2) 
                itobin(n / 2, s);
         else {
                 i = 0;
                 if (n < 0)
                        s[i++] = '-';
         }
        s[i++] = ((n % 2 < 0) ? -(n % 2) : n % 2) + '0'; 
        s[i] = '\0';
}
 
char *reverse(char *s)
{
    int i, j, t;
 
    for (i = 0, j = strlen(s) - 1; i < j; i++, j--)
        t = s[i], s[i] = s[j], s[j] = t;
    return s;
}
 
#define MAXLEN sizeof(int) * CHAR_BIT + 2
 
int main()
{
    int n;
    char s[MAXLEN];
 
    for (n = FROM; n <= TO; n++) {
        itobin(n, s);
        printf("%4d %s ", n, s);
        printf("%s ", reverse(s));
        printf("%4d\n", bintoi(s));
    }
    return 0;
}
ПаЗитиФкА
3 / 3 / 0
Регистрация: 16.11.2011
Сообщений: 51
17.11.2011, 00:42  [ТС]     задача на подпрограммы и системы счисления #5
Net_Wanderer, спасибо большое!!!
только он почему то с 725 считает, вместо 512
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
17.11.2011, 00:46     задача на подпрограммы и системы счисления #6
Цитата Сообщение от ПаЗитиФкА Посмотреть сообщение
Net_Wanderer, спасибо большое!!!
только он почему то с 725 считает, вместо 512
это консоль windows кривая, попробуте понизить TO например до 700
ПаЗитиФкА
3 / 3 / 0
Регистрация: 16.11.2011
Сообщений: 51
17.11.2011, 00:50  [ТС]     задача на подпрограммы и системы счисления #7
странно, может у меня dev c++ как обычно глючит.
а Вы не поможете с этой же программой, но через массивы?


После понижения все нормально отображает. Благодарю!
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
17.11.2011, 00:51     задача на подпрограммы и системы счисления #8
Цитата Сообщение от ПаЗитиФкА Посмотреть сообщение
а Вы не поможете с этой же программой, но через массивы?
в моей программе нет массивов?
ПаЗитиФкА
3 / 3 / 0
Регистрация: 16.11.2011
Сообщений: 51
17.11.2011, 00:55  [ТС]     задача на подпрограммы и системы счисления #9
Net_Wanderer, я имела в виду без строк, с одними массивами.
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
17.11.2011, 00:56     задача на подпрограммы и системы счисления #10
Цитата Сообщение от ПаЗитиФкА Посмотреть сообщение
Net_Wanderer, я имела в виду без строк, с одними массивами.
строка - это массив символов
ПаЗитиФкА
3 / 3 / 0
Регистрация: 16.11.2011
Сообщений: 51
17.11.2011, 01:02  [ТС]     задача на подпрограммы и системы счисления #11
ой, точно. я с этой программой вообще туплю.
т.е. тут без строк совсем-совсем никак, да?
можно тогда какие-нибудь комментарии к коду? если не сложно?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2011, 23:22     задача на подпрограммы и системы счисления
Еще ссылки по теме:

из 16 в 10 (системы счисления) C++
Системы счисления C++
C++ С восьмеричной системы счисления в десятичную систему счисления

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ПаЗитиФкА
3 / 3 / 0
Регистрация: 16.11.2011
Сообщений: 51
28.11.2011, 23:22  [ТС]     задача на подпрограммы и системы счисления #12
проверьте, пожалуйста, кому не очень сложно. пыталась решить как препод требует, но компилятор 8 ошибок выдает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <stdio.h>
#include <limits.h>
#include <conio.h>
#include <ctype.h>
#include <iostream>
#include <iomanip>
 
int perevod (int a, int *m, int *n) // ïåðåâîä ГЁГ§ äåñÿòè÷Г*îé ñèñòåìû Гў äâîè÷Г*ГіГѕ
      { int i=0;
     int  m[100]={0};
       n=0;
       while (a!=0)
       { if (a % 2 == 1)
       m[i]=1 ;
       else  m[i]=0;
       a=a/2;
       i++;
       n++ ;
       };
       
    }
       
  int podprogramma (int *m, int *n) // ïåðåâîä ГЁГ§ äâî÷èГ*îé ñèñòåìû Гў äåñÿòè÷Г*ГіГѕ
  {
        int k=1, x=0, p;
        p=n;
        for (int i=0, i<p, i++)
      {
        k=m[i]*pow(2;(n-1));
        x=x+k;
        n--;
      };
      return x;
    } ;
    
    int main
    { 
    int z, x;
    for (c=512, c<1023, c++)
    {
        z=perevod (a, m, n);
        x=podprogramma (m,n);
        cout << z;
        for (i=n,i<>0, i--)
        cout << m[i] << " ";
        for (i=0,i<n,i++)
        cout << m[i] << " ";
        cout << x << endl;
     }
     getch ();
    
}
Yandex
Объявления
28.11.2011, 23:22     задача на подпрограммы и системы счисления
Ответ Создать тему
Опции темы

Текущее время: 20:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru