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

Обратный перевод в восьмиричную систему - C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.62
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
01.04.2010, 17:34     Обратный перевод в восьмиричную систему #1
Целое положительное число m записывается в восьмеричной системе счисления, и разряды в этой записи переставляются в обратном порядке. Получившееся число принимается за значение функции F(m). Например, m=477, F(m)=351.

Помогите зделать пожалуйста, на форуме искал, не нашёл прогу перевода в 8ю, может искал плохо...а дальше вообще не могу понять что и как. Объясните пожалуйста.

Добавлено через 3 часа 48 минут
Помощь ещё нужна.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2010, 17:34     Обратный перевод в восьмиричную систему
Посмотрите здесь:

Перевод чисел в определённую систему C++
C++ Перевод в 8-ую систему
Рекурсия.Перевод с десятичной в двоичную, восьмиричную и шестнадцатиричную системы C++
C++ перевод в шеснадцатеричную систему из 10-й
Перевод числа в двоичную систему C++
Перевод числа N из десятичной системы счисления в восьмиричную C++
C++ Перевод из десятичной системы счисления в восьмиричную с плавующей запятой
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Voron8
13 / 13 / 1
Регистрация: 28.04.2009
Сообщений: 62
01.04.2010, 19:18     Обратный перевод в восьмиричную систему #2
C++
1
2
3
4
5
6
7
8
9
10
11
cout<<"Введите число ";
int c=0;
cin>>c;
char a[5]={'\0'},b[5]={'\0'};
itoa(c,a,8);
cout<<a<<endl;
 
for(int i=0,j=strlen(a)-1;a[i];i++,j--){
    b[i]=8-(a[j]-48)+48;
}
cout<<b;
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
02.04.2010, 13:33  [ТС]     Обратный перевод в восьмиричную систему #3
Забыл указать, что мне на СИ нужно...я пока перевёл вот так, но есть ошибки, помогите пожалуйста исправить и доделать ошибки.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
main(){
int c=0;
int i,j;
printf("Введите число: ");
scanf("%d", &c);
char a[5]={'\0'},b[5]={'\0'};
itoa(c,a,8);
printf("First diget: %d",a[j]);
 
for(i=0,j=strlen(a)-1;a[i];i++,j--){
        b[i]=8-(a[j]-48)+48;
 
}
printf("Second diget: %d",b[i]);
}
Voron8
13 / 13 / 1
Регистрация: 28.04.2009
Сообщений: 62
02.04.2010, 16:50     Обратный перевод в восьмиричную систему #4
12 строка - обращение к не инициированной переменной.
18 строка тоже подозрительна.

хотя в с слабоват...
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
02.04.2010, 18:19  [ТС]     Обратный перевод в восьмиричную систему #5
Я знаю, что у меня там ошибки, потому и прошу, чтобы знающий человек помог мне привести код в рабочее состояние. Заранее спасибо!
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9384 / 5434 / 916
Регистрация: 25.07.2009
Сообщений: 10,428
03.04.2010, 21:47     Обратный перевод в восьмиричную систему #6
Цитата Сообщение от Bloodykeeper Посмотреть сообщение
...и разряды в этой записи переставляются в обратном порядке.
В смысле - цифры восьмеричного числа в обратном порядке переставляются, или всё-таки биты в числе нужно зеркально отобразить и то, что получится, вывести в восьмеричном формате?
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
04.04.2010, 16:56  [ТС]     Обратный перевод в восьмиричную систему #7
Я так понял что нужно перевести в восьмиричную, поменять местами элементы в ней, а потом перевести назад. Помогите пожалуйста, хоть как-нибудь сделать..(

Добавлено через 2 часа 46 минут
В общем вариант 2) буду рад любой помощи!!
Voron8
13 / 13 / 1
Регистрация: 28.04.2009
Сообщений: 62
04.04.2010, 17:27     Обратный перевод в восьмиричную систему #8
С алгоритмом все в порядке. Проблемы были в выводе.

попробуй это.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
 
main(){setlocale( LC_ALL,"Russian" );
int c=0;
int i,j;
printf("Введите число: ");
scanf("%d", &c);
 
char a[5],b[5];
itoa(c,a,8);
std::cout<<"First diget: "<<a<<std::endl;
 
for(i=0,j=strlen(a)-1;a[i];i++,j--){
        b[i]=8-(a[j]-48)+48;
 
}
std::cout<<"Second diget: "<<b<<std::endl;
}
Добавлено через 7 минут
Я делал так

из десятичной 477 >> в восьмеричную 735 >> отражаем 153 >> переставляем 351.
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
05.04.2010, 13:20  [ТС]     Обратный перевод в восьмиричную систему #9
В общем помогите теперь исправить синтаксис, я пробовал предыдущую смесь написать в Си, но пока вышло так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
 
main(){setlocale( LC_ALL,"Russian" );
int c=0;
int i,j;
printf("Введите число: ");
scanf("%d", &c);
 
char a[5],b[5];
itoa(c,a,8);
printf("First diget: ",a);
 
for(i=0,j=strlen(a)-1;a[i];i++,j--){
        b[i]=8-(a[j]-48)+48;
 
}
printf("Second diget: ",b);
}
Но не работает. Пожалуйста помогите!
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
05.04.2010, 13:54     Обратный перевод в восьмиричную систему #10
Цитата Сообщение от Bloodykeeper Посмотреть сообщение
F(m)=351.
по-твоему же получается 537.
Цитата Сообщение от Voron8 Посмотреть сообщение
12 строка - обращение к не инициированной переменной.
в десятой a инитится.
Цитата Сообщение от Voron8 Посмотреть сообщение
18 строка тоже подозрительна.
b делается в цикле.

Добавлено через 1 минуту
Но i и j не инитятся. И вообще, в таком веде обе строки надо в тела циклов.
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
05.04.2010, 20:36  [ТС]     Обратный перевод в восьмиричную систему #11
taras atavin, ничего не понял(( пожалуйста исправьте ошибки, чтобы я понял, 4й день бьюсь над этой задачей((

Добавлено через 3 часа 39 минут
Ещё актуально! плиз помогите...
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
07.04.2010, 15:25  [ТС]     Обратный перевод в восьмиричную систему #12
Всё ещё не исправил ошибки...пожалуйста помогите! очень прошу!
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
07.04.2010, 15:58     Обратный перевод в восьмиричную систему #13
C
1
2
printf("Second diget: ",b); //в стоку параметров передай %s чтобы сообщить о выводе строки
printf("Second diget: %s",b);
Прочитай это: http://www.cplusplus.com/reference/c...cstdio/printf/

Добавлено через 2 минуты
Bloodykeeper, почитай еще о потоках, можешь к примеру с помощью тех же параметров вывести число в десятичной записи в 8-ю в поток, потом прочечь с него строку и вывести ее реверсом..

Добавлено через 5 минут
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
 
main()
{
    int c = 0;
    printf("Введите число: ");
    scanf("%d", &c);
    char a[5] = {'\0'}, b[5] = {'\0'};
    itoa(c, a, 8);
    printf("First diget: %c\n", a[strlen(a)-1]);
    for(int i = 0, j = strlen(a)-1; a[i]; ++i, --j)
        b[i] = a[j];
    printf("Second diget: %s", b);
    getch();
}
Розберись что к чему..
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
08.04.2010, 12:46  [ТС]     Обратный перевод в восьмиричную систему #14
Я переделал вот так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
 
main()
{
    int c = 0;
    int i,j;
    printf("Введите число: ");
    scanf("%d", &c);
    char a[5] = {'\0'}, b[5] = {'\0'};
    itoa(c, a, 8);
    printf("First diget: %c\n", a[strlen(a)-1]);
    for(i = 0, j = strlen(a)-1; a[i]; ++i, --j)
        b[i] = a[j];
    printf("Second diget: %s", b);
    getch();
}
Ругается на объявление а и б пишет что мол нет таких и в цикле for тоже пишет остальные ошибки. Спасибо за ссылку, обязательно почитаю как домой с отдыха приеду, помогите исправить оставшиеся ошибки, заранее большое спасибо, outoftime, вам в особенности.

Добавлено через 20 часов 8 минут
Блин, народ, ну пожалуйста, помогите исправить! ну 6 дней не могу справится(( пожалуйста исправьте ошибки.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2010, 16:50     Обратный перевод в восьмиричную систему
Еще ссылки по теме:

Перевод в двоичную систему C++
C++ Перевод в двоичную систему счисления
Перевод двоичного числа в прямой и обратный код C++
Перевод из 10 в 2 систему C++
C++ Перевод из 2-ой в 10-ую систему счисления

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

Или воспользуйтесь поиском по форуму:
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
08.04.2010, 16:50     Обратный перевод в восьмиричную систему #15
Bloodykeeper, все что могу сказать по єтому поводу - читайте старіе стандарты, насколько я понял пишите вы на BC 3.1, поэтому и ошибки, на современных компиляторах этого нет, стандарт поменялся..
Yandex
Объявления
08.04.2010, 16:50     Обратный перевод в восьмиричную систему
Ответ Создать тему
Опции темы

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