Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Обратный порядок букв в каждом втором слове (https://javascript.ru/forum/misc/38488-obratnyjj-poryadok-bukv-v-kazhdom-vtorom-slove.html)

MSiUzaQ 04.06.2013 09:13

Обратный порядок букв в каждом втором слове
 
Доброго времени суток уважаемые,

В универе задали задачку написать сценарий, который будет высчитывать количество слов в веденном предложении, а потом менять порядок букв в каждом втором слове на обратный.(к примеру: "мама мыла раму мылом", должно получится: "мама алым раму молым" Причем можно использовать только: prompt, alert, charAt (и так же attribut.length), операторы if/else и циклы(т.е. функции, массивы и прочее использовать низя). С подсчетом слов вроде бы проблем нету, а вот как обратить буквы... даже не знаю с чего начать.

Пожалуйста помогите...

tsigel 04.06.2013 09:22

Интересно как не использовать массив, если строка - это массив символов?

MSiUzaQ 04.06.2013 12:27

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

Deff 04.06.2013 12:41

MSiUzaQ,
в принципе строка букв - автомассив , особенно с учетом
"(и так же attribut.length)"
http://javascript.ru/String/charAt

рони 04.06.2013 16:14

MSiUzaQ,
Вариант ...
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
<script>
var str = prompt("Ваше предложение", "мама мыла раму мылом"), out = "", str2 ="", n = 0;
for (var i=0; i<str.length; i++)  {
if(str.charAt(i)==" ") {str2+=" "+out;out="",n++}
else if(n%2)out= str.charAt(i)+out;
else out+= str.charAt(i)
}
alert(str2+" "+out + "\nСлов "+ ++n)
</script>
</body>

</html>

vashurin 04.06.2013 17:39

Цитата:

Сообщение от MSiUzaQ (Сообщение 254391)
Вот это-то меня и сбивает с толку... Из задания: "... в задании Вы не можете использовать ни каких других функций, ни массивы, ни ваши собственные функции..." :(

Странное задание. Перевернуть всю строку без циклов и ветвлений можно легко:
Код:

var str = prompt("Ваше предложение", "мама мыла раму мылом?");
alert(str.split('').reverse().join(''));

Но переворачивать не всю строку, а только четные элементы без циклов и ветвлений, это интересно. Сразу и не придумаешь... А в задании нет ошибки?

рони 04.06.2013 18:36

Цитата:

Сообщение от vashurin
только четные элементы без циклов и ветвлений, это интересно

Вариант ...
<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>
<body>
<script>
var str = prompt("Ваше предложение", "мама мыла раму мылом");
alert([str.replace(/(\S+\s+)(\S+)/g , function (a,b,c )
{
   return b + c.split('').reverse().join('')
}), str.split(' ').length]);
</script>
</body>
</html>

danik.js 04.06.2013 18:45

Ну вобще-то цилкы и ветвления использовать можно)
Проитайте задание внимательно )

MSiUzaQ 04.06.2013 21:02

Цитата:

Сообщение от рони (Сообщение 254431)
MSiUzaQ,
Вариант ...
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
<script>
var str = prompt("Ваше предложение", "мама мыла раму мылом"), out = "", str2 ="", n = 0;
for (var i=0; i<str.length; i++)  {
if(str.charAt(i)==" ") {str2+=" "+out;out="",n++}
else if(n%2)out= str.charAt(i)+out;
else out+= str.charAt(i)
}
alert(str2+" "+out + "\nСлов "+ ++n)
</script>
</body>

</html>

Это просто шедевр) спасибо большое) Благодаря Вашему скрипту я теперь еще первую часть раза в 3 уменьшить смогу) СПАСИБО ОГРОМНОЕ:dance: :dance: :dance:

MSiUzaQ 04.06.2013 21:03

Всем большое спасибо за соучастие):thanks:


Часовой пояс GMT +3, время: 10:40.