Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 26.12.2009
Сообщений: 9
1

Сформировать число, которое будет состоять только из четных восьмеричных цифр исходного

05.05.2010, 00:40. Просмотров 2034. Ответов 4
Метки нет (Все метки)

Задание: Дано целое неотрицательное число. Сформировать другое число, которое будет состоять только из четных восьмеричных цифр исходного числа.
Заранее спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.05.2010, 00:40
Ответы с готовыми решениями:

Сформировать массив восьмеричных цифр числа А (десятичное число). Отсортировать по возрастанию
Дано целое десятичное число А. Сформировать массив восьмеричных цифр числа А. Отсортировать массив...

Определить, может ли введенное число быть восьмеричным (т. е., состоять только из цифр меньших 8)
С клавиатуры вводиться число N .Определить , может ли оно быть восьмеричным(т.е. состоять только из...

Заменить данное число на число, которое получается из исходного записью цифр в обратном порядке
Заменить данное натурально число на число, которое получается из исходного записью цифр в обратном...

Заменить данное натуральное число на число, которое получается из исходного записью его цифр в обратном порядке. Например, дано число 156, нужно получ
Вобщем,если не сложно,именно саму функцию помочь написать,ибо я просто не могу понять:) ...

4
372 / 286 / 97
Регистрация: 17.12.2009
Сообщений: 567
05.05.2010, 07:20 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
int main()
{
    int x;
    cin >> x;
    cout << "oct " << oct << x << '\n';
    int y=0;
    while (x > 0)
    {
        if (((x & 0x1) == 0) && ((x & 7)!=0))
        {
            y = y << 3;
            y= y+ (x & 7);
        }
        x=x >> 3;
    }
    // в числе-результате числа в обратном порядке тому к котором они встречаются в исходном числе
    cout << "result oct " << oct << y << '\n';
    return 0;
}
0
Эксперт С++
3206 / 1733 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
05.05.2010, 09:21 3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
//MS VS
#include "stdafx.h"
#include <iostream>
 
unsigned get_digits(unsigned x)
{
    unsigned res = 0;
    size_t count = 0;
    do
    {
        res += (x & 7) << (count++ * 3);
    }while(x >>= 6);
    return res;
}
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    unsigned num;
    for(;;)
    {
        std::cout << "input num: ";
        std::cin >> num;
        std::cout 
            << "oct num = " 
            << std::oct 
            << num
            << std::endl        
            << "result = "                 
            << get_digits(num)
            << std::endl
            << std::endl;   
    }
    return 0;
}
0
372 / 286 / 97
Регистрация: 17.12.2009
Сообщений: 567
05.05.2010, 18:46 4
Mr.X, такой тест введи: 341412.
result не верный. И зачем зацикливать?
0
Эксперт С++
3206 / 1733 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
05.05.2010, 22:32 5
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от Aye Aye Посмотреть сообщение
Mr.X, такой тест введи: 341412.
result не верный. И зачем зацикливать?
У меня получилось:
input num: 341412
oct num = 1232644
result = 1364

А что здесь неверно?

Кстати, ваша программа дает такой результат:
341412
oct 1232644
result oct 44622

По-моему это неправильно.
А цикл исключительно для удобства, чтобы каждый раз не запускать программу.

Добавлено через 2 часа 38 минут
Может я неверно задание понял. Мне показалось, что нужно вывести цифры, стоящие на четном месте в восьмеричном числе, а нужно цифры, четные по значению?

Добавлено через 19 минут
Вот программа для вывода четных по значению восьмеричных цифр:
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
//MS VS
#include "stdafx.h"
#include <iostream>
 
unsigned get_digits(unsigned x)
{
    unsigned res = 0;
    size_t count = 0;
    unsigned cur_oct_dig;
    do
    {
        cur_oct_dig = x & 7;
        if(cur_oct_dig % 2 == 0)
        {
            res += cur_oct_dig << (count++ * 3);
        }
        
    }while(x >>= 3);
    return res;
}
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    unsigned num;
    for(;;)
    {
        std::cout << "input num: ";
        std::cin >> num;
        std::cout 
            << "oct num = " 
            << std::oct 
            << num
            << std::endl        
            << "result = "                 
            << get_digits(num)
            << std::endl
            << std::endl;   
    }
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.05.2010, 22:32

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Заменить каждое число на число, которое получается из исходного записью его цифр в обратном порядке
Задано множество натуральных чисел. Заменить каждое из них на число, которое получается из...

Заменить данное число на число, которое получается из исходного записью его цифр в обратном порядке
Заменить данное натуральное число на число, которое получается из исходного записью его цифр в...

Заменить натуральное число на число, которое получается из исходного записью его цифр в обратном порядке
Заменить данное натуральное число на число, которое получается из исходного записью его цифр в...

Заменить данное натуральное число на число, которое получается из исходного записью его цифр в обратном порядке
1) Заменить данное натуральное число на число, которое получается из исходного записью его цифр в...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.