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

Логическое задание на С++ - C++

Войти
Регистрация
Восстановить пароль
 
Dioxis
1 / 1 / 0
Регистрация: 04.03.2009
Сообщений: 83
17.06.2009, 12:06     Логическое задание на С++ #1
Помогите пож-та еще с вот такой задачкой:

В написанном выражении ((((1?2)?3)?4)?5)?6 вместо каждого знака ? вставить знак одной из 4 арифметических операций +,-,*,/ так, чтобы результат вычислений равнялся 35 (при делении дробная часть в частном отбрасывается). Достаточно найти одно решение.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16949 / 5354 / 330
Регистрация: 30.03.2009
Сообщений: 14,396
Записей в блоге: 26
17.06.2009, 12:11     Логическое задание на С++ #2
Это на бумажке надо решить или прогу сочинить?
EnzoMatrix
 Аватар для EnzoMatrix
120 / 120 / 4
Регистрация: 14.03.2009
Сообщений: 462
17.06.2009, 12:15     Логическое задание на С++ #3
на бумажке проблем нет: (1+2+3)*4+5+6
скобки лишние просто убрал
Dioxis
1 / 1 / 0
Регистрация: 04.03.2009
Сообщений: 83
17.06.2009, 12:15  [ТС]     Логическое задание на С++ #4
Желательно рабочую консольку
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16949 / 5354 / 330
Регистрация: 30.03.2009
Сообщений: 14,396
Записей в блоге: 26
17.06.2009, 12:27     Логическое задание на С++ #5
Ну грубо говоря можно сделать так. У тебя есть 5 операций, делаешь перебором все комбинации, а дальше вычисляешь выражение. Если бы задание ставилось так, что решать надо для произвольного выражения, но нужно было бы писать программу по разбору и вычислению выражения. Но здесь такой задачи не стоит, а потому делаем попросту тупо. Грубо гворя есть у тебя 5 операций, а потому пишем 5 кусков кода. Полагаем, что в массиве char op[5] мы имеем одну из комбинаций операций.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
switch (op[0])
{
  case '+': r1 = 1 + 2; break;
  case '-': r1 = 1 - 2; break;
  case '*': r1 = 1 * 2; break;
  case '/': r1 = 1 / 2; break;
  default: abort(); break;
}
 
switch (op[1])
{
  case '+': r2 = r1 + 3; break;
  case '-': r2 = r1 - 3; break;
  case '*': r2 = r1 * 3; break;
  case '/': r2 = r1 / 3; break;
  default: abort(); break;
}
 
И так далее
Dioxis
1 / 1 / 0
Регистрация: 04.03.2009
Сообщений: 83
17.06.2009, 13:14  [ТС]     Логическое задание на С++ #6
Спасибо, буду пробывать

Добавлено через 36 минут 31 секунду
Гм, можно ли ее решить без использования массива? Оказывается есть еще такое ограничение.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16949 / 5354 / 330
Регистрация: 30.03.2009
Сообщений: 14,396
Записей в блоге: 26
17.06.2009, 13:18     Логическое задание на С++ #7
Не совсем понимаю, при чём тут массив, но вместо "char op[5]" сделай "char op1, op2, op3, op4, op5". Или что ещё сие ограничение может означать?
Dioxis
1 / 1 / 0
Регистрация: 04.03.2009
Сообщений: 83
21.06.2009, 19:26  [ТС]     Логическое задание на С++ #8
Evg - даже так, я так и не понял как ее доделать, ты предлагаешь через цикл каждую комбинацию проверять? Напиши пожалуйста если не трудно..
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16949 / 5354 / 330
Регистрация: 30.03.2009
Сообщений: 14,396
Записей в блоге: 26
21.06.2009, 21:39     Логическое задание на С++ #9
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
for (a1 = 0; a1 < 3; a1++)
  for (a2 = 0; a2 < 3; a2++)
    ...
    for (a5 = 0; a5 < 3; a5++)
      {
        /* для a1, a2, a3, a4, a5 значение 0 соотвествует плюсу, 1 - минусу,
         * 2 - умножить, 3 - делать */
         ...
 
        /* Далее код из поста 5 */
        switch (a1)
        {
          case 0: r1 = 1 + 2; break;
          case 1: r1 = 1 - 2; break;
          case 2: r1 = 1 * 2; break;
          case 3: r1 = 1 / 2; break;
          default: abort(); break;
        }
        ...
      }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.06.2009, 01:03     Логическое задание на С++
Еще ссылки по теме:

Логическое выражение C++
C++ Логическое ИЛИ в условии цикла while
C++ Логическое условие И и ИЛИ цикла do while
Логическое выражение в виде дерева C++
C++ Неправильно вычисляется логическое выражение

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

Или воспользуйтесь поиском по форуму:
Dioxis
1 / 1 / 0
Регистрация: 04.03.2009
Сообщений: 83
22.06.2009, 01:03  [ТС]     Логическое задание на С++ #10
Ага, сейчас это испробую
Yandex
Объявления
22.06.2009, 01:03     Логическое задание на С++
Ответ Создать тему
Опции темы

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