Advertisement
impressive_i

Search operands needed

Jul 12th, 2019
388
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.90 KB | None | 0 0
  1. {*********************************************************************************
  2. * Задача: Написанном выражении ((((1?2)?3)?4)?5)?6 вместо каждого знака ?
  3. * поставьте знак одной из арифметических операций + - * :так чтобы получилось 35
  4. * Created by impressive https://vk.com/impressive_i
  5. *********************************************************************************}
  6.  
  7. uses crt;
  8.  
  9. var    x : integer; //значение текущего подсчета
  10.        k : integer; //порядок действия
  11.      num : integer; //аргумент, который прибавляется, вычитается,
  12.                     //умножается или делится в зависимости от знака sign
  13.      sign, sign_1, sign_2, sign_3, sign_4, sign_5 : integer;
  14.  
  15. {Считает новое x на основе старого значения, аргумента num и кода операции oper}
  16. function getNewX(x : integer; num : integer; oper : integer):integer;
  17. begin
  18.     case oper of
  19.       1 : x := x + num;
  20.       2 : x := x - num;
  21.       3 : x := x * num;
  22.       4 : x := x div num;
  23.       else writeln('error');
  24.     end;
  25.     result := x;
  26. end;
  27.  
  28. {Возвращает int-код операции в зависимости от порядка действия k}
  29. function getSign(k : integer):integer;
  30. var sign : integer;
  31. begin
  32.     case k of
  33.       2 : sign := sign_1;
  34.       3 : sign := sign_2;
  35.       4 : sign := sign_3;
  36.       5 : sign := sign_4;
  37.       6 : sign := sign_5;
  38.       else writeln('error');
  39.     end;
  40.     result := sign;
  41. end;
  42.  
  43. {Возвращает символ char в зависимости от int-кода операции }
  44. function getCharBySign(oper : integer):char;
  45. var ch : char;
  46. begin
  47.     case oper of
  48.       1 : ch := '+';
  49.       2 : ch := '-';
  50.       3 : ch := '*';
  51.       4 : ch := '/';
  52.       else writeln('error');
  53.     end;
  54.     result := ch;
  55. end;
  56.  
  57. {Main}
  58. begin
  59.    {Рассматриваем все возможные комбинации}
  60.    for sign_1 := 1 to 4 do
  61.      for sign_2 := 1 to 4 do
  62.        for sign_3 := 1 to 4 do
  63.          for sign_4 := 1 to 4 do
  64.             for sign_5 := 1 to 4 do
  65.                begin
  66.                    x := 1; k := 2;
  67.                    while(k <= 6) do begin
  68.                       sign := getSign(k);
  69.                       x := getNewX(x, k , sign);
  70.                       inc(k);
  71.                    end;
  72.                    if( x = 35 ) then
  73.                       writeln('(((((1',getCharBySign(sign_1),
  74.                               '2)',getCharBySign(sign_2),
  75.                               '3)',getCharBySign(sign_3),
  76.                               '4)',getCharBySign(sign_4),
  77.                               '5)',getCharBySign(sign_5),
  78.                               '6)');
  79.                end;
  80. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement