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

12 hours ago

Untitled

12 hours ago

Untitled

12 hours ago

Untitled

2 days ago

Untitled

7 days ago

Untitled

9 days ago

la forme de leau

10 days ago

1055108810861075

15 days ago

Untitled

16 days ago

Untitled

16 days ago

Untitled