1055108810861075 - Posted on February Sun 21st 8:49 AM (Never Expires) - Format: java
  1.     /**
  2.      * Точка входа в нашу программу. Главная функция, которая исполняется (вызывается) при запуске программы.
  3.      *
  4.      * Все, что внутри фигурных ('{}') скобок после названия функции ('найтиКомбинацииШаров')
  5.      * выполняется в рамках этой функции.
  6.      */
  7.     void найтиКомбинацииШаров() { // Здесь после названия функции 'найтиКомбинацииШаров'
  8.                                   // "открываются" фигурные скобки ({) и здесь начало функции 'найтиКомбинацииШаров'
  9.  
  10.         // Здесь массив (список) шаров записывается в переменную 'массивШаров1'
  11.         int[] массивШаров1 = {
  12.                 1,
  13.                 3,
  14.                 5,
  15.                 7,
  16.                 6,
  17.                 11,
  18.                 13,
  19.                 15,
  20.         };
  21.         // При объявлении переменной перед ее названием указывается тип этой переменной (тут это 'int[]'),
  22.         // который говорит о том, какие данные хранятся в этой переменной.
  23.         //
  24.         // В данном случае ('int[]') - значит что в переменную записан массив ('[]') целых чисел ('int').
  25.         // Т.е. тип данных 'int' - это значит что внутри целое число, символы [] указывают на то, что это массив.
  26.         // (Бывают еще, например, дробные числа (1.42), строки (текст) и другие типы данных).
  27.         //
  28.         // К примеру, числа можно делить, умножать, складывать, вычитать и т.д., а вот со строками так делать нельзя,
  29.         // поэтому для них отдельный тип данных
  30.  
  31.         // Здесь вызывается функция 'найтиКомбинациюШаровДляСуммы',
  32.         // в которую передаются наш массив шаров (который записан в переменной 'массивШаров1') и требуемая сумма (30)
  33.         // При вызове этой функции будет выполнен программный код,
  34.         // который написан ниже в рамках функции 'найтиКомбинациюШаровДляСуммы'
  35.         // См. ('void найтиКомбинациюШаровДляСуммы(int[] массивШаров, int требуемаяСумма)')
  36.         найтиКомбинациюШаровДляСуммы(массивШаров1, 30);
  37.  
  38.         // Еще один набор шаров записываем в другую переменную 'массивШаров2'
  39.         int[] массивШаров2 = {
  40.                 1,
  41.                 3,
  42.                 5,
  43.                 7,
  44.                 9, // 6 заменили на 9
  45.                 11,
  46.                 13,
  47.                 15,
  48.         };
  49.  
  50.         // Еще раз вызываем нашу функцию, с новым набором шаров
  51.         найтиКомбинациюШаровДляСуммы(массивШаров2, 30);
  52.  
  53.     } // Здесь "закрываются" фигурные скобки функции (}) и здесь конец этой функции 'найтиКомбинацииШаров'
  54.  
  55.     /**
  56.      * Функция, которая принимает на вход массив шаров, в котором все варианты шаров и требуемую сумму.
  57.      * Перебирает все возможные комбинации шаров, сравнивая сумму каждой комбинации с требуемой.
  58.      * Если сумма совпадает с требуемой, выводит совпавшую комбинацию на экран.
  59.      */
  60.     void найтиКомбинациюШаровДляСуммы(int[] массивШаров, int требуемаяСумма) {
  61.  
  62.         // Проход по массиву шаров в цикле.
  63.         // Блок программного кода, заключенный в фигурные скобки {} сразу после оператора 'for'
  64.         // будет выполняться столько раз, сколько шаров в массиве.
  65.         // При этом на каждом шаге значение текущего шара из массива шаров ('массивШаров')
  66.         // будет записано в переменную 'шар1' (с типом данных 'int' - целое число)
  67.         // и это значение будет использовано внутри тела этого цикла
  68.         for (int шар1 : массивШаров) {
  69.  
  70.             // Вложенный в первый цикл, еще один такой же проход по массиву шаров в цикле.
  71.             // Для каждого шара из первого цикла, перебираются еще раз все шары внутри этого, вложенного цикла.
  72.             // Т.е. тут можно сравнить каждый шар с еще один шаром.
  73.             // Внутри этого цикла значение текущего шара будет записано в переменную 'шар2' (в первом цикле - 'шар1').
  74.             for (int шар2 : массивШаров) {
  75.  
  76.                 // Еще один вложенный цикл, тут значение для каждого шага будет записано в переменную 'шар3'.
  77.                 for (int шар3 : массивШаров) {
  78.  
  79.                     // Внутри цикла 3го уровня мы уже можем сравнить все 3 варианта, т.е. все возможные комбинации:
  80.  
  81.                     // Вызываем функцию 'проверитьСуммуШаров', передаем в нее значения шаров и требуемой суммы.
  82.                     // Функция посчитает сумму текущей комбинации и сравнит ее с требуемой.
  83.                     // На основе сравнения, вернет ответ ДА/НЕТ
  84.                     // и этот ответ будет записан в переменную 'совпадаетЛиСумма'
  85.                     boolean совпадаетЛиСумма = проверитьСуммуШаров(шар1, шар2, шар3, требуемаяСумма);
  86.                     // 'boolean' перед именем переменной -
  87.                     //  это значит что в такой переменной может быть записано либо ДА, либо НЕТ
  88.  
  89.                     // если в переменной 'совпадаетЛиСумма' записано ДА,
  90.                     // вызывается функция 'вывестиСовпавшуюКомбинациюШаровНаЭкран', в нее передаются те же значения:
  91.                     if (совпадаетЛиСумма) {
  92.  
  93.                         // Вызываем функцию, которая выводит на экран совпавшую комбинацию
  94.                         вывестиСовпавшуюКомбинациюШаровНаЭкран(шар1, шар2, шар3, требуемаяСумма);
  95.  
  96.                     }
  97.  
  98.                 }
  99.             }
  100.         }
  101.  
  102.     }
  103.  
  104.     /**
  105.      * Функция, которая считает сумму шаров и сравнивает ее с требуемой.
  106.      * В ответ присылает ДА/НЕТ (совпадает или нет)
  107.      */
  108.     boolean проверитьСуммуШаров(int шар1, int шар2, int шар3, int требуемаяСумма) {
  109.         // перед названием функции указывается тип возвращаемых данных. В данном случае 'boolean' - логическое ДА/НЕТ
  110.  
  111.         int сумма = посчитатьСуммуШаров(шар1, шар2, шар3);
  112.  
  113.         return сумма == требуемаяСумма;
  114.  
  115.     }
  116.  
  117.  
  118.     /**
  119.      * Функция, которая складывает все шары и возвращает полученный результат
  120.      */
  121.     int посчитатьСуммуШаров(int шар1, int шар2, int шар3) {
  122.  
  123.         return шар1 + шар2 + шар3;
  124.  
  125.     }
  126.  
  127.     /**
  128.      * Функция, которая выводит совпавший результат на экран
  129.      */
  130.     void вывестиСовпавшуюКомбинациюШаровНаЭкран(int шар1, int шар2, int шар3, int требуемаяСумма) {
  131.  
  132.         // Формируем текст для вывода на экран и записываем в переменную 'текстДляВыводаНаЭкран'.
  133.         // 'String.format(...)' - вызов системной функции,
  134.         // которая формирует текст на основе шаблона-формата ("%d + %d + %d = %d") и переменных,
  135.         // которые нужно вставить в этот формат ('шар1', 'шар2', 'шар3', 'требуемаяСумма').
  136.         // Вместо %d будут подставляться переданные значения по порядку: 'шар1', 'шар2', 'шар3', 'требуемаяСумма'.
  137.         // В итоге получится: "11 + 13 + 6 = 30"
  138.         String текстДляВыводаНаЭкран = String.format(
  139.                 "%d + %d + %d = %d",
  140.                 шар1,
  141.                 шар2,
  142.                 шар3,
  143.                 требуемаяСумма
  144.         );
  145.         // 'String' перед именем переменной 'текстДляВыводаНаЭкран' - значит что эта переменная внутри себя хранит текст
  146.  
  147.         System.out.println(текстДляВыводаНаЭкран); // Вызов системной функции, которая выводит на экран переданный текст
  148.  
  149.     }

New Paste

Paste Options

Recent Pastes

10 days ago

Deltarune OT3

14 days ago

Untitled

18 days ago

Untitled

33 days ago

Untitled

37 days ago

Untitled

37 days ago

Untitled

39 days ago

Untitled

39 days ago

Untitled

39 days ago

Untitled

46 days ago

Untitled