Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.06.2013, 09:13
Новичок на форуме
Отправить личное сообщение для MSiUzaQ Посмотреть профиль Найти все сообщения от MSiUzaQ
 
Регистрация: 04.06.2013
Сообщений: 4

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

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

Пожалуйста помогите...
Ответить с цитированием
  #2 (permalink)  
Старый 04.06.2013, 09:22
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Интересно как не использовать массив, если строка - это массив символов?
Ответить с цитированием
  #3 (permalink)  
Старый 04.06.2013, 12:27
Новичок на форуме
Отправить личное сообщение для MSiUzaQ Посмотреть профиль Найти все сообщения от MSiUzaQ
 
Регистрация: 04.06.2013
Сообщений: 4

Вот это-то меня и сбивает с толку... Из задания: "... в задании Вы не можете использовать ни каких других функций, ни массивы, ни ваши собственные функции..."
Ответить с цитированием
  #4 (permalink)  
Старый 04.06.2013, 12:41
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

MSiUzaQ,
в принципе строка букв - автомассив , особенно с учетом
"(и так же attribut.length)"
http://javascript.ru/String/charAt
Ответить с цитированием
  #5 (permalink)  
Старый 04.06.2013, 16:14
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

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>

Последний раз редактировалось рони, 04.06.2013 в 16:22.
Ответить с цитированием
  #6 (permalink)  
Старый 04.06.2013, 17:39
Аспирант
Отправить личное сообщение для vashurin Посмотреть профиль Найти все сообщения от vashurin
 
Регистрация: 01.04.2008
Сообщений: 52

Сообщение от MSiUzaQ Посмотреть сообщение
Вот это-то меня и сбивает с толку... Из задания: "... в задании Вы не можете использовать ни каких других функций, ни массивы, ни ваши собственные функции..."
Странное задание. Перевернуть всю строку без циклов и ветвлений можно легко:
Код:
var str = prompt("Ваше предложение", "мама мыла раму мылом?");
alert(str.split('').reverse().join(''));
Но переворачивать не всю строку, а только четные элементы без циклов и ветвлений, это интересно. Сразу и не придумаешь... А в задании нет ошибки?
Ответить с цитированием
  #7 (permalink)  
Старый 04.06.2013, 18:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от 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>
Ответить с цитированием
  #8 (permalink)  
Старый 04.06.2013, 18:45
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Ну вобще-то цилкы и ветвления использовать можно)
Проитайте задание внимательно )
Ответить с цитированием
  #9 (permalink)  
Старый 04.06.2013, 21:02
Новичок на форуме
Отправить личное сообщение для MSiUzaQ Посмотреть профиль Найти все сообщения от MSiUzaQ
 
Регистрация: 04.06.2013
Сообщений: 4

Сообщение от рони Посмотреть сообщение
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 уменьшить смогу) СПАСИБО ОГРОМНОЕ
Ответить с цитированием
  #10 (permalink)  
Старый 04.06.2013, 21:03
Новичок на форуме
Отправить личное сообщение для MSiUzaQ Посмотреть профиль Найти все сообщения от MSiUzaQ
 
Регистрация: 04.06.2013
Сообщений: 4

Всем большое спасибо за соучастие)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск