За последние 24 часа нас посетили 17385 программистов и 1216 роботов. Сейчас ищут 1515 программистов ...

Поменять местами

Тема в разделе "Сделайте за меня", создана пользователем rulabeluy, 28 июн 2016.

  1. rulabeluy

    rulabeluy Новичок

    С нами с:
    28 июн 2016
    Сообщения:
    9
    Симпатии:
    0
    Задача
    Вывести на экран строку “Hello World!” так чтоб в каждой паре символов они поменялись местами.
    В итоге должно получиться “eHll ooWlr!d”

    Помогите сделать ( [хорошо б с коментами) буду благодарен
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Есть несколько алгоритмов. Ты сам что думаешь по этому поводу? Как бы ты это делал?
     
  3. rulabeluy

    rulabeluy Новичок

    С нами с:
    28 июн 2016
    Сообщения:
    9
    Симпатии:
    0
    PHP:
    1. $string = 'Hello World';
    2. for($i=0;$i<strlen($string);$i++){
    3. for($i=0;$i<strlen($string);$i++){
    4. if(вот тут не знаю какое условие){
    5.  
    6. }
    7. }
    8. }
     
    #3 rulabeluy, 28 июн 2016
    Последнее редактирование модератором: 28 июн 2016
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    а зачем там условие? алгоритм словами объясни
     
  5. rulabeluy

    rulabeluy Новичок

    С нами с:
    28 июн 2016
    Сообщения:
    9
    Симпатии:
    0

    ну чтоб %i менялось на $i+1
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    нет, это не объяснение. берем то-то, подставляем туда-то за тем-то, ожидаем вот сё-то.
     
  7. rulabeluy

    rulabeluy Новичок

    С нами с:
    28 июн 2016
    Сообщения:
    9
    Симпатии:
    0
    знал то написал би и тут не спрашивал
     
  8. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    А, ну понятно. Основы алгоритмизации программирования проходят в школьном курсе. Мы все в этой жизни делаем алгоритмами. Я очень люблю приводить пример с приготовлением чая. Налил воды, поставил на огонь, дождался закипания, налил в чашку, размешал сахар. Что я пропустил? Заварку. Ошибка выполнения программы.

    Программирование лишь реализация алгоритма лексемами какого-то языка. Можно открыть мануал, ознакомиться со списком всех доступных функций и подумать как их можно применить. Все эти функции - кирпичики. Здание из них строить тебе - программисту.

    Вот тебе для примера три простеньких варианта решения твоей задачи:

    Вариант1. Через разворот подстроки.
    PHP:
    1. <?php
    2. // готовим входные строки четной и нечетной длины
    3. $str0 = "Hello World!";
    4. $str1 = "Hello World";
    5.  
    6. // объявляем функцию
    7. function WhileSubstrStrrev ($str)
    8. {
    9.     // пустая временная строка
    10.     $out = '';
    11.    
    12.     // текущий отступ итерации
    13.     $offset = 0;
    14.    
    15.     // лимит отступа итерации (не более длины строки)
    16.     $limit = strlen($str);
    17.    
    18.     // пока отступ не более лимита
    19.     while ($offset < $limit)
    20.     {
    21.         // хватаем из строки два символа начиная с отступа
    22.         // полученную строку из двух символов разворачиваем
    23.         // и конкатенируем к временной переменной
    24.         $out .= strrev(substr($str, $offset, 2));
    25.        
    26.         // увеличиваем отступ на два символа
    27.         $offset += 2;
    28.     }
    29.    
    30.     // возвращаем результат
    31.     return $out;
    32. }
    33.  
    34. // выполняем для строки четной длины
    35. var_dump(WhileSubstrStrrev($str0));
    36.  
    37. // выполняем для строки нечетной длины
    38. var_dump(WhileSubstrStrrev($str1));
    Код (Text):
    1. string(12) "eHll ooWlr!d"
    2. string(11) "eHll ooWlrd"
    Вариант2. Через разбивку строки в посимвольный массив.
    PHP:
    1. <?php
    2. // готовим входные строки четной и нечетной длины
    3. $str0 = "Hello World!";
    4. $str1 = "Hello World";
    5.  
    6. // объявляем функцию
    7. function ArrayShift ($str)
    8. {
    9.     // пустая временная строка
    10.     $out = '';
    11.    
    12.     // разбиваем строку в массив по одному символу
    13.     $tmp = str_split($str);
    14.    
    15.     // пока шифт возвращает значения
    16.     while (null !== $char = array_shift($tmp))
    17.     {
    18.         // конкатенируем к временной строке результат выполнения
    19.         // еще одного шифта и потом конкатенируем значение
    20.         // из условия входа в итерацию цикла
    21.         $out .= array_shift($tmp) . $char;
    22.     }
    23.    
    24.     // возвращаем результат
    25.     return $out;
    26. }
    27.  
    28. // выполняем для строки четной длины
    29. var_dump(ArrayShift($str0));
    30.  
    31. // выполняем для строки нечетной длины
    32. var_dump(ArrayShift($str1));
    Код (Text):
    1. string(12) "eHll ooWlr!d"
    2. string(11) "eHll ooWlrd"
    Вариант3. Через замену по регулярному выражению.
    PHP:
    1. <?php
    2. // готовим входные строки четной и нечетной длины
    3. $str0 = "Hello World!";
    4. $str1 = "Hello World";
    5.  
    6. // объявляем функцию
    7. function Regex ($str)
    8. {
    9.     // выполняем регулярное выражение "первый символ рядом со вторым символом" и
    10.     // заменяем по правилу "второе совпадение первое совпадение"
    11.     // полученую строку возвращаем как результат выполнения функции
    12.     return preg_replace('~(.)(.)~', '\2\1', $str);
    13. }
    14.  
    15. // выполняем для строки четной длины
    16. var_dump(Regex($str0));
    17.  
    18. // выполняем для строки нечетной длины
    19. var_dump(Regex($str1));
    Код (Text):
    1. string(12) "eHll ooWlr!d"
    2. string(11) "eHll ooWlrd"
    Есть и еще различные варианты, но мне так же лениво, как тебе ознакомиться с основами.

    ЗЫ. Уношу тему в "за меня"
     
  9. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    а у меня после бессонных ночей на строке "выпить чай" походу собачка появляется :D
     
  10. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    @mr.akv а где там у меня "выпить чай"? Алгоритм же приготовления чая, а не его потребления. Внимательнее :cool:
     
  11. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    @Ganzal, собачка уже тут...
     
  12. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
  13. rulabeluy

    rulabeluy Новичок

    С нами с:
    28 июн 2016
    Сообщения:
    9
    Симпатии:
    0