Вставить между цифрами 1, 2, 3, 4, 9 знак одной из операций +-*/, так, чтобы результат 8-операций равнялся 100 - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Вставить между цифрами 1,2,3,4...9 знак одной из операций +-*/, так, чтобы результат 8-опреаций равнялся 100. Имеется 8 решений. Распечатать их со знаками. 1*2+3*4*5-6+7+8-9=10

Решение задачи: «Вставить между цифрами 1, 2, 3, 4, 9 знак одной из операций +-*/, так, чтобы результат 8-операций равнялся 100»

textual
Листинг программы
  1. #include<stdio.h>
  2.  
  3. char m[20];
  4. const int N = 100;
  5. double binop(char o, double a, double b) {
  6.     return o == '+' ? a + b : o == '-' ? a - b : o == '*' ? a*b : b == 0 ? 0 : a / b;
  7. }
  8.  
  9. void f(double a, char o, double b, char op, int n) {
  10.     m[n - 1] = op;
  11.     if (n > 9) {
  12.         double r = o == ' ' ? a : binop(o, a, b), e = 0.000001;
  13.         if (r > N - e && r < N + e && m[1] == '+') {
  14.             printf("1");
  15.             for (int i = 2; i <= 9; i++) printf("%c%d", m[i], i);
  16.             printf("=%d\n", (int)r);
  17.         }
  18.     }
  19.     else if (o == ' ') {
  20.         f(a, '+', n, '+', n + 1);
  21.         f(a, '-', n, '-', n + 1);
  22.         f(a, '*', n, '*', n + 1);
  23.         f(a, '/', n, '/', n + 1);
  24.     }
  25.     else {
  26.         f(binop(o, a, b), '+', n, '+', n + 1);
  27.         f(binop(o, a, b), '-', n, '-', n + 1);
  28.         f(a, o, b*n, '*', n + 1);
  29.         f(a, o, b / n, '/', n + 1);
  30.     }
  31. }
  32. int main(void) { f(0, ' ', 0, ' ', 1); return 0; }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы