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

Существует ряд чисел. Вместо "?" вставить символы - C++

Восстановить пароль Регистрация
 
saxorok
0 / 0 / 0
Регистрация: 25.02.2013
Сообщений: 6
23.04.2013, 17:30     Существует ряд чисел. Вместо "?" вставить символы #1
Пожалуйста помогите дали задачу по циклам решить не могу.
вот условие :
существует ряд чисел ((((1?2)?3)?4)?5)?6 который равен 35 ;
надо вместо "?" вставить символы (-./.*.+);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2013, 17:30     Существует ряд чисел. Вместо "?" вставить символы
Посмотрите здесь:

Сколькими способами можно получить строку "В" из строки "А", вычеркивая некоторые символы C++
Задача "Натуральный ряд чисел" C++
Как использовать символы из русского алфавита, а так же символы типа "█" "░" и т.д.? C++
C++ разработать программу для работы со строками: найти и заменить в ней все символы "а" на "b"
Функция isspace и тип string: Не существует подходящей функции преобразования из "std::string" в "int" C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
23.04.2013, 18:57     Существует ряд чисел. Вместо "?" вставить символы #2
Лобовая атака
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
#include <iostream>
 
namespace my
{
    typedef int (*oper) (int, int );
 
    int sum( int a, int b )
    {
        return a + b;
    }
 
    int sub( int a, int b )
    {
        return a - b;
    }
 
    int mul( int a, int b )
    {
        return a * b;
    }
 
    int div( int a, int b )
    {
        return a / b;
    }
}
 
int main()
{
    my::oper opersf[] = { my::sum, my::sub, my::mul, my::div };
    char opersc[] = { '+', '-', '*', '/' };
 
    const int operCnt = 4;
    
    for( int i1 = 0; i1 < operCnt; ++i1 )
        for( int i2 = 0; i2 < operCnt; ++i2 )
            for( int i3= 0; i3 < operCnt; ++i3 )
                for( int i4 = 0; i4 < operCnt; ++i4 )
                    for( int i5 = 0; i5 < operCnt; ++i5 )
                    {
                        int value = opersf[i1](1,2);
                        value = opersf[i2]( value, 3);
                        value = opersf[i3]( value, 4);
                        value = opersf[i4]( value, 5);
                        value = opersf[i5]( value, 6);
 
                        if( value == 35 )
                        {
                            std::cout << "((((1" << opersc[i1] << "2)" << 
                                opersc[i2] << "3)" << opersc[i3] << "4)" << 
                                opersc[i4] << "5)" << opersc[i5] << "6=" << value << std::endl;
                        }
                    }
 
    system("pause");
    return 0;
}
Код
((((1+2)+3)*4)+5)+6=35
((((1+2)*3)*4)+5)-6=35
((((1*2)*3)*4)+5)+6=35
saxorok
0 / 0 / 0
Регистрация: 25.02.2013
Сообщений: 6
23.04.2013, 19:33  [ТС]     Существует ряд чисел. Вместо "?" вставить символы #3
Спасибо а можно с Коментами а то я (дно ) не чего не понимаю )
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
23.04.2013, 21:44     Существует ряд чисел. Вместо "?" вставить символы #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
#include <iostream>
 
namespace my // Добавляем пространство имен, т.к. существует уже стандартная функция div() 
{
    typedef int (*oper) (int, int ); // Заводим тип - указатель на функцию, принимающую два целых и возвращающее целое
 
    int sum( int a, int b ) // Сложение
    {
        return a + b;
    }
 
    int sub( int a, int b ) // Вычитание
    {
        return a - b;
    }
 
    int mul( int a, int b ) // Умножение
    {
        return a * b;
    }
 
    int div( int a, int b ) // Деление
    {
        return a / b;
    }
}
 
int main()
{
    my::oper opersf[] = { my::sum, my::sub, my::mul, my::div }; // Массив функций + - * /
    char opersc[] = { '+', '-', '*', '/' }; // Символы действий
 
    const int operCnt = 4;
    
    // Перебираем все возможные операции
    for( int i1 = 0; i1 < operCnt; ++i1 )
        for( int i2 = 0; i2 < operCnt; ++i2 )
            for( int i3= 0; i3 < operCnt; ++i3 )
                for( int i4 = 0; i4 < operCnt; ++i4 )
                    for( int i5 = 0; i5 < operCnt; ++i5 )
                    {
                        int value = opersf[i1](1,2); // Начинаем вычислять значение...
                        value = opersf[i2]( value, 3);
                        value = opersf[i3]( value, 4);
                        value = opersf[i4]( value, 5);
                        value = opersf[i5]( value, 6); // ... вычислили
 
                        if( value == 35 ) // Если равно 35, то выводим формулу
                        {
                            std::cout << "((((1" << opersc[i1] << "2)" << 
                                opersc[i2] << "3)" << opersc[i3] << "4)" << 
                                opersc[i4] << "5)" << opersc[i5] << "6=" << value << std::endl;
                        }
                    }
 
    system("pause");
    return 0;
}
Надеюсь, всё понятно
Yandex
Объявления
23.04.2013, 21:44     Существует ряд чисел. Вместо "?" вставить символы
Ответ Создать тему
Опции темы

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