Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вывести самое короткое слово в строке (https://javascript.ru/forum/misc/2418-vyvesti-samoe-korotkoe-slovo-v-stroke.html)

troy2008 23.12.2008 12:42

Вывести самое короткое слово в строке
 
Есть текст, в котором необходимо определить
• количество слов (сделано)
• последнее слово в тексте(сделано)
• самое короткое слово в тексте

<html>
<head>
<title>10</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/ font size="4">

<script language="JavaScript">  
  function numsym(obj) {
    var h=' '  
    var s=obj.textin.value  
    var res=0
  for (var i=0; i<=s.length-1; i++)  
      {ch=s.charAt(i)  
  if (ch==h)  
     {res+=1}  
      } 
	f=res+1; 
  obj.result.value=f 
  
  var myArray = s.split(' '); 
  alert(myArray[res])
  
} 
</script>  
</head>  
<body bgcolor="#E6E6FA"> 
<form name="form1">  
	Текст:<br> 
	<textarea name="textin" rows=10 cols=100></textarea><hr>   
	<input type="button" value="Определить" 
	
	onClick="numsym(form1)"><hr>  
	Колличество слов:  
	<input type="text" name="result" size=8><hr>  
	<input type="reset" value="Сбросить">  
</form>  
</body>  
</html>



помогите сделать последнее задание, заранее спасибо

пробовал сделать так, но не работает:

myArray[0]=sm;
  for (var j=0; j<=f; j++)
  {
	if myArray[j]<sm 
	{
		sm=myArray[j];
	}  
  }
   alert(sm)

ZoNT 23.12.2008 12:46

У тебя уже есть массив слов. Тебе осталось принять первое слово как предполагаемое минимальное, а потом в цикле (начиная со второго слова) сравнивать все слова с запосненным в переменной (первоначально - с первым). Если сравниваемое слово меньше того, что в переменной, то в переменную записываем новое (текущее) слово. И так до конца массива. В итоге в переменной будет самое короткое слово.

Kolyaj 23.12.2008 13:31

Длина строки хранится в свойстве length.

troy2008 23.12.2008 18:21

<script language="JavaScript">  
  function numsym(obj) {
    var h=' '  
    var s=obj.textin.value  
    var res=0
  for (var i=0; i<=s.length-1; i++)  
      {ch=s.charAt(i)  
  if (ch==h)  
     {res+=1}  
      } 
	f=res+1; 
  obj.result.value=f 
  
  var myArray = s.split(' '); 
  myArray[0]=sm;
  for (var j=1; j<=f; j++)
  {
    if myArray[j].length<sm.length 
    {
        sm=myArray[j];
    }  
  }
   alert(sm)
} 
</script>


я так и сделал, но все равно не работает(. в чем ошибка?

ZoNT 23.12.2008 18:27

myArray[0]=sm; ???

troy2008 23.12.2008 18:39

первое слово присваивается переменной sm

Kolyaj 23.12.2008 18:40

Фигасе у вас присваивание? Вы араб?

troy2008 23.12.2008 18:43

очень смешно

Kolyaj 23.12.2008 18:44

Т.е. вы до сих пор не поняли, что в этой строчке не так?

Цитата:

Сообщение от troy2008
sm=myArray[j];

Почему здесь sm слева?

troy2008 23.12.2008 18:50

не помогло


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