Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Разбить на группы и найти парные символы.
Chapollino86  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 4
Пользователь №: 43590
На форуме: 21 день
Карма:




Здравствуйте.
есть число $nomer его нужно разделить группами по три символа, но если в начале группы подряд идёт две 11 то группа из двух символов.
Подскажите как решить задачу?


<?php
$nomer = "010101010111110101010101101011010101";

$dlina = strlen($nomer); // strlen Возвращает длину строки.
for($i; $i < $dlina; $i=$i+3) {
$rez .= $nomer[$i].' ';
echo '<br>'.$rez;
}
?>


Вот код, но он вытаскивает по одному символу через три.... Совсем не то. :(

Это сообщение отредактировал Chapollino86 - 12.11.2016 - 18:36
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ron  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1042
Пользователь №: 41686
На форуме: 1 год, 3 месяца, 25 дней
Карма: 13




Чисто если в лобешник, то вот так:
<?php

$nomer = "010101010111110101010101101011010101";

if (substr($nomer, 0, 2) == 11) {
$group = 2;
} else {
$group = 3;
}

$output = str_split($nomer, $group);

print_r($output);


А, или вначале каждой группы?

Это сообщение отредактировал Ron - 12.11.2016 - 19:01


--------------------
Жду 5.11.2017
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3375
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 7 дней
Карма: 170




строка = "010011011011000110101"
слово = ""
цикл пока строка != "" :
если длина слова == 3 или слово == "11"
печать слово
слово = ""
конец если
слово = слово + первый символ строки
строка = строка без первого символа
конец цикл


Очень надеюсь, что это информатика в школе.

Ron
ответ сошелся? Для проверки:

$nomer = "010101010111110101010101101011010101";

010
101
010
11
11
101
010
101
011
010
11
010
101

Зачем вообще таким помогать готовыми решениями?
У человека сессия на носу, прогулял весь семестр, а теперь нет допуска к зачету, потому что лабораторки не сданы?
Ну так пусть в армию валит.
Написал бы честно - народ, помогите, бухал, отчисляют, горю, каюсь, обещаю....
Блин, задача - подготовительная группа детсада. У меня дочке 11 лет, она на уровне логики такие задачи сама решает.
Давай, не позорься, делай красивое решение, раз вписался. Рекурсия там или побитовые сдвиги.
Пусть препод ТС удивится :D


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ron  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1042
Пользователь №: 41686
На форуме: 1 год, 3 месяца, 25 дней
Карма: 13




AllesKlar, ну хорошо, уговорил. =)

<?php

$nomer = "010101010111110101010101101011010101";
preg_match_all('!11|\d{3}!', $nomer, $result);

print_r($result);


:D


--------------------
Жду 5.11.2017
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Chapollino86  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 4
Пользователь №: 43590
На форуме: 21 день
Карма:




Результат немного не тот. :(
необходим вывод на экран 010 101 010 11 11 смещение пошло 101 01 01 01 01 10 101 101 010 1

Array ( [0] => 010 [1] => 101 [2] => 010 [3] => 111
[4] => 110 [5] => 101 [6] => 010 [7] => 101 [8] => 101
[9] => 011 [10] => 010 [11] => 101 )

это попытка написать архиватор, с без анализа энтропии.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Chapollino86  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 4
Пользователь №: 43590
На форуме: 21 день
Карма:




Ron Спасибо, Работает.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Chapollino86  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 4
Пользователь №: 43590
На форуме: 21 день
Карма:




Подскажите. Есть два массива как сделать замену?
например г => D


$al = Array("A","B","C","D","E","F");
$beta = Array("а","б","в","г","д","е");

PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3375
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 7 дней
Карма: 170




Chapollino86
Блядь, да отсканируй уже всю методичку, да выложи. Мы тебе за выходные перерешаем, делать все равно нехрен никому.

Ну, а если следовать традициям форума, то так:
показывай, как ты делаешь замену, мы поправим, если что не так.


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ron  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1042
Пользователь №: 41686
На форуме: 1 год, 3 месяца, 25 дней
Карма: 13




Цитата (AllesKlar @ 12.11.2016 - 23:35)
да отсканируй уже всю методичку, да выложи.

Добрее надо быть. =)

Chapollino86, теебе такой результат нужен? Просто условие задачи сформулировано несовсем четко.

$string = 'REPLACE абвгде 12фывфыв33';

$al = Array("A","B","C","D","E","F");
$beta = Array("а","б","в","г","д","е");

echo str_replace($beta, $al, $string);
//REPLACE ABCDEF 12фыCфыC33

P.s. бойся множественной замены. См. официальную документацию. http://php.net/manual/ru/function.str-replace.php

Но так, между нами, ЯП, выбранный для создания архиватора мягко говоря не тот. ;)



--------------------
Жду 5.11.2017
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса