impressive_i

Search operands needed

Jul 12th, 2019
152
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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.
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×