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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 5.00
nikin94
1 / 1 / 0
Регистрация: 30.05.2011
Сообщений: 7
#1

Вставить между цифрами 1, 2,..., 8, 9 в данном порядке, знак одной из 4-х арифметических операций так, чтобы результат восьми послед-х операций =100 - C++

30.05.2011, 15:59. Просмотров 2334. Ответов 4
Метки нет (Все метки)

Вычисления проводятся слева-направо, ни одна операция не имеет приоритета.

Добавлено через 2 минуты
задача вынесла моск, прошу помочь
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2011, 15:59     Вставить между цифрами 1, 2,..., 8, 9 в данном порядке, знак одной из 4-х арифметических операций так, чтобы результат восьми послед-х операций =100
Посмотрите здесь:

Перегрузка арифметических операций C++
C++ Расставить знаки арифметических операций так, чтобы сошелся результат
Класс арифметических операций матрицы как на другую матрицу так и на число C++
C++ Калькулятор логических/арифметических операций(подробности внутри)
Реализация арифметических операций над вещественными числами C++
C++ Программа с рекурсивной функцией (расставляет между заданными шестью цифрами знаки операций)
C++ Класс длинная арифметика с поддержкой арифметических операций
Перевод числа из одной системы счисления в другую и выполнение арифметических операций C++
Расставить среди цифр знаки арифметических операций и скобки, чтобы получить необходимый результат C++
C++ В выражении вместо каждого знака вопрос записать знак одной из арифметических операций
C++ В выражении расставить знаки арифметических операций, чтобы получилось заданное число
C++ Расставить знаки между цифрами так, чтобы получилось заданное число

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DVJ
1 / 1 / 0
Регистрация: 30.05.2011
Сообщений: 14
30.05.2011, 16:20     Вставить между цифрами 1, 2,..., 8, 9 в данном порядке, знак одной из 4-х арифметических операций так, чтобы результат восьми послед-х операций =100 #2
Числа участвуют все?
как само задание звучит, полностью?
nikin94
1 / 1 / 0
Регистрация: 30.05.2011
Сообщений: 7
30.05.2011, 18:34  [ТС]     Вставить между цифрами 1, 2,..., 8, 9 в данном порядке, знак одной из 4-х арифметических операций так, чтобы результат восьми послед-х операций =100 #3
Вставить между цифрами 1, 2, 3, 4, 5, 6, 7, 8 и 9, записанными именно в таком порядке, знак одной из четырех арифметических операций так, чтобы результат восьми последовательных операций равнялся 100. Вычисления проводятся шаг за шагом слева на право, причем ни одна операция не имеет приоритета.

Добавлено через 15 секунд
это полный текст
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,989
30.05.2011, 19:27     Вставить между цифрами 1, 2,..., 8, 9 в данном порядке, знак одной из 4-х арифметических операций так, чтобы результат восьми послед-х операций =100 #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
63
64
65
66
#include <iostream>
 
using namespace std;
 
enum { op_plus=0, op_minus, op_mul, op_div };
char op_sym[4] = { '+', '-', '*', '/' };
 
float func(int opcode, int a, int b)
{
    float result = a;
    switch(opcode)
    {
        case op_minus:
            result -= b;
            break;
        case op_mul:
            result *= b;
            break;
        case op_div:
            result /= b;
            break;
        case op_plus:
        default:
            result += b;
    }
    return result;
}
 
float get_result(int nums[9], int opcodes[8])
{
    float result = nums[0];
    for (int i = 0; i < 8; ++i)
        result = func(opcodes[i], result, nums[i+1]);
    return result;
}
 
void print_formula(int nums[9], int opcodes[8])
{
    for (int i = 0; i < 8; ++i)
        cout << nums[i] << " " <<op_sym[opcodes[i]] << " ";
    cout << nums[8] << " = " << get_result(nums, opcodes) << endl;
}
 
bool next_combination(int opcodes[8])
{
    int i = 0;
    while (i < 8 && opcodes[i] == op_div)
    {
        opcodes[i++] = op_plus;
    }
    if (8 == i)
        return false;
    ++opcodes[i];
    return true;
}
 
int main()
{
    int opcodes[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };
    int nums[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    do {
        if ( get_result(nums, opcodes) == 100 )
            print_formula(nums, opcodes);
    } while (next_combination(opcodes));
    return 0;
}
nikin94
1 / 1 / 0
Регистрация: 30.05.2011
Сообщений: 7
30.05.2011, 23:52  [ТС]     Вставить между цифрами 1, 2,..., 8, 9 в данном порядке, знак одной из 4-х арифметических операций так, чтобы результат восьми послед-х операций =100 #5
благодарю, сейчас гляну

Добавлено через 7 минут
Фунциклирует. Еще раз спасибо
Yandex
Объявления
30.05.2011, 23:52     Вставить между цифрами 1, 2,..., 8, 9 в данном порядке, знак одной из 4-х арифметических операций так, чтобы результат восьми послед-х операций =100
Ответ Создать тему
Опции темы

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