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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.09.2015, 12:01   #1
JohnBigHead
Пользователь
 
Регистрация: 01.09.2015
Сообщений: 11
По умолчанию Преобразовать массив, увеличив каждую его серию на один элемент

Преобразовать массив, увеличив каждую его серию на один элемент. (серия это подряд идущие одинаковые элементы, ) например если a=[1,1,2,3,2,2] то получится a=[1,1,1,2,2,3,3,2,2,2] (решить алгоритмически)
//вот нароботки
PHP код:
        $a=[1,1,2,3,2,2];
        
$n=count($a);
        
$temp=0;
    for (
$i=0;$i<$n;$i++){
        if (
$a[$i+1]==$a[$i]){
            
$temp++;
        }
    }
    for (
$i=$n+$temp;$i>=0;$i--){
          if(
$a[$i-1]!=$a[$i]){
             
$a[$i+1] = $a[$i];
        }
    } 
в итоге фигня получилась
JohnBigHead вне форума Ответить с цитированием
Старый 01.09.2015, 15:07   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Перебором создавать новый массив, добавляя в него необходимые элементы серии – это будет типа «алгоритмически».
Или использовать array_splice для вставки элементов серии в существующий массив (Пример #1) – это будет более практично.
Andkorol вне форума Ответить с цитированием
Старый 01.09.2015, 16:23   #3
cheburashkaRF
Пользователь
 
Регистрация: 09.11.2011
Сообщений: 22
По умолчанию

PHP код:
$a=[1,1,2,3,2,2];
$temp=$a[0];
$result=[$temp];
for (
$i=1;$i<count($a);$i++){
    if(
$a[$i]!=$temp){
        
array_push($result,$temp);
        
$temp=$a[$i];
    }
       
array_push($result,$temp);
}
 
array_push($result,$temp);
print_r($result); 

Последний раз редактировалось cheburashkaRF; 01.09.2015 в 16:25.
cheburashkaRF вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ОДномерный массив, второй по величине элемент, как его найти? Алексей_2012 Общие вопросы C/C++ 7 07.11.2014 21:42
Найти номер первой из строк, содержащих хотя бы один положительный элемент. Создать ступенчатый массив... ( на c# ) cool.lion1208 Помощь студентам 0 03.04.2014 15:10
Ввести массив с клавиатуры. В полученном массиве найти минимальный элемент. Вывести его на экран ok57 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 17.05.2013 05:07
Массив, мин элемент и его значение Sergei93 Паскаль, Turbo Pascal, PascalABC.NET 3 29.06.2010 13:17
Добавить элемент в массив увеличив его размерность Yura_n Общие вопросы C/C++ 3 05.12.2009 18:09