Задача 12 Примечания -- "Сравните каждый 3-ий элемент 1-ого массива с каждым 2-ым элементом 2-ого массива"

Даны два массива по 20 элементов каждый (заполните случайными числами, так чтобы среди элементов массива при очередном запуске программы могли встретиться и отрицательные и положительные числа).
Сравните каждый 3-ий элемент 1-ого массива с каждым 2-ым элементом 2-ого массива - сравнение проводите пока не закончится та выборка, которая короче.

то есть третий сравнивается с со вторым из второго, шестой с 4-ым из второго и т.д.

-- из этого списка.

foreach для перебора обоих массивов -- обход двух массивов одним циклом

Для перебора массива и скравнения их элементом можно использовать цикл while (например, как здесь), но в то же время ничто не мешает использовать foreach (что лучше).

Идея проста:
если у вас есть два массива равной длины и с одниковыми индексами, то вполне можно применять такую конструкцию

foreach ($arr1 as $key => $value) {
    $arr2[$key] = $value;
}

-- в этом примере мы записали во второй массив элементы первого массива (каждой по своему адресу -- т.е. ключу), то есть было показано, как можно использовать ключ очередного элемента первого массива для работы со вторым массивом.

Key Words for FKN + antitotal forum (CS VSU):

Это вариант, где каждый с каждым сравнивается. Здесь я писал об этом.

<?php
function rand_array($chislo)
{
    for($i = 0; $i < $chislo; $i++) {
       $mas[$i] = rand(-30, 15);
    }
    return $mas;
}
 
function poluchaem_znachenie($arr)
{
    foreach($arr as $v) {
           echo $v, ', ';
    }
    echo "\n\n";
}

function sravnenie_m1_vs_m2($mama, $papa, $doch, $sin)
{
    $m = 0;
    foreach($mama as $value_m) {
        $m++;
        $n = 0;
        foreach($papa as $value_n) {
            $n++;
            if( $m % $doch == 0 && $n % $sin == 0) {
                echo "Сравнивается \$m[$m]=$value_m с \$n[$n]=$value_n.\n";
            }
        }
    }
    echo "\n";
}

$m1 = rand_array(20);
$m2 = rand_array(45);

poluchaem_znachenie($m1);
poluchaem_znachenie($m2);
$m = 2; // Каждый m-ый элемент из массива $m1
$n = 3; // И каждый n-ый элемент из массива $m2
sravnenie_m1_vs_m2($m1, $m2, $m, $n);
vedro-compota's picture

Это вариант, где каждый с каждым сравнивается. Здесь я писал об этом

в оригинале подразумевается попарное сравнение. В тесте заметки речь о нём же. Впрочем, и такое решение полезно разобрать для упражнения.

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

можно посмотреть тут и тут и ещё одно совсем "низкоуровневое решение" которое вообще не обращается к индексам, сдвигая внутренний указатель массива.

_____________
матфак вгу и остальная классика =)