Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2015, 21:46   #1
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию Количество пропусков в списке

Всем привет!

Споткнулся казалось бы о простую задачу. Есть такой массив:

Код:
$smens = array("Смена 1","Смена 2","Смена 3","Смена 4","Смена 5","Смена 6","Смена 7","Смена 8","Смена 9","Смена 10","Смена 11","Смена 12");
Из этого массива выбираем произвольные значения, например, так:

Код:
$smens2 = array("Смена 2","Смена 3","Смена 6","Смена 8","Смена 9","Смена 11","Смена 12");
Нужно посчитать, сколько раз значения идут не по порядку, в соответствии с первым массивом. То есть, в данном примере результат "4". Как это посчитать программно?
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru

Последний раз редактировалось grominfo; 10.12.2015 в 22:28.
grominfo вне форума Ответить с цитированием
Старый 10.12.2015, 22:29   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от grominfo Посмотреть сообщение
Код:
$smens2 = array("Смена 2","Смена 3","Смена 6","Смена 9","Смена 10","Смена 11","Смена 12");
Нужно посчитать, сколько раз значения идут не по порядку, в соответствии с первым массивом. То есть, в данном примере результат "4"
А чего результат "4"?
Не по порядку в $smens2:
3 и 6
6 и 9
и всё, 9-10-11-12 идут по порядку.
Andkorol вне форума Ответить с цитированием
Старый 10.12.2015, 22:42   #3
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
А чего результат "4"?
Не по порядку в $smens2:
3 и 6
6 и 9
и всё, 9-10-11-12 идут по порядку.
Да это я потом увидел ошибку и исправил. Думал не заметит никто Сейчас там по другому во втором массиве

Код:
$smens2 = array("Смена 2","Смена 3","Смена 6","Смена 8","Смена 9","Смена 11","Смена 12");
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Старый 10.12.2015, 22:44   #4
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Только это в примере значения с цифрами. В реальном коде будут другие значения, поэтому по цифрам ориентироваться не нужно
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Старый 10.12.2015, 22:52   #5
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Я сделал сам

Код:
    function getSepSmens($smens){
        function getIndex($ar,$value){
            foreach ($ar as $k=>$v){
                if ($v == $value){
                    $r = $k;
                    break;
                }
            }
            return $r;
        }
        $ar = $this->getSmens();  // Получаем исходный массив
        $i = 0;
        foreach ($smens as $k=>$v){
            $in = getIndex($ar,$v);  // Получаем индекс текущего значения в исходном массиве
            $in2 = getIndex($ar,$smens[$k+1]); // Получаем индекс следующего значения в исходном массиве
            if ($in2-$in > 1){ // если разница больше единицы, то значит идут не по порядку
                $i++;
            }
        }
        return $i+1; // Прибавляем единицу для конечного значения
    }


$ar2 = array("Смена 2","Смена 3","Смена 6","Смена 8","Смена 9","Смена 11","Смена 12");
$diff = $this->getSepSmens($ar2);
var_dump($diff);
Результат:
int(4)
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
найти в односвязном списке количество элементов vova_makr Помощь студентам 6 24.10.2015 16:51
Assembler Подсчитать количество пропусков в ASCIIZ- строке Alexsandr Помощь студентам 0 03.02.2013 21:26
Найти студента который имеет среднее количество пропусков. LUKICH Фриланс 1 01.06.2010 09:15
Как подсчитать количество записей в списке Grisha248 Помощь студентам 2 23.06.2009 10:43
количество фамилий в списке Гуля Паскаль, Turbo Pascal, PascalABC.NET 8 29.04.2008 13:01