Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сортировка по длине строки, Даже String непашет :( 
:(
    Опции темы
GIK
Дата 2.10.2006, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 6
Всего: 14



Всем доброго времиени суток.
Мне надо написать алгоритм сортировки имен людей по алфавиту, но у меня пока даже не получается сортировать их по длине.
Переобразовал строки в String объект, но и это не помогло. Подскажите в чем глюк.
Код

<html> 
<head>
<style type=text/css>
</style>
<script language="javascript" type="text/javascript">
//                   ***   As it is pleasant to feel heat of your soul ***

 function SortName(){
 var Len=3;
 var StringArray=new Array();
 for(var i=0; i<Len; i++){ //Забиваем массив
 StringArray[i]=new String(document.f1.elements[i].value);
 } 
 for(var i=0; i<Len; i++){
  for(var k=i+1; k<Len; k++){
   if(StringArray[i].lenght>StringArray[k].lenght) {
     var ran=StringArray[i]; 
     StringArray[i]=StringArray[k];
     StringArray[k]=ran; 
   }
  }
 } 
for(var i=0; i<Len; i++){ //Выводим итог
 document.f1.elements[i].value=StringArray[i];
 }
}
</script>
</head>
<body bgcolor="#ffffff">
 <TABLE width="50%" height=10% valign=top><TR><TD width=100% valign=top>
  <form name="f1">
   <Input type="text" name='n1' value="Лена" size=12>
   <Input type="text" name='n2' value="Олеся" size=12>
   <Input type="text" name='n3' value="Катя" size=12>
   <Input type="button" onClick="SortName()" value="Сортировать"> 
  </form>
 </TD></TR></TABLE>
</body>
</html>



--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
skyboy
Дата 2.10.2006, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 10
Всего: 260



по длине не получилось, потому что "lenght" - неправильно. надо "length"
PM MAIL   Вверх
AKS
Дата 2.10.2006, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



GIK, 
Для сортировки массивов используйте метод sort.
PM MAIL   Вверх
GIK
Дата 2.10.2006, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 6
Всего: 14



Цитата

по длине не получилось, потому что "lenght" - неправильно. надо "length" 

Инвиняюсь, сглючило...

А что за метод sort? А то уже начал писать алгоритм сам. Блин, сложно....

Это сообщение отредактировал(а) GIK - 2.10.2006, 17:27


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
pythonwin
Дата 2.10.2006, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 1
Всего: 36



Цитата(GIK @  3.10.2006,  00:26 Найти цитируемый пост)

А что за метод sort, а то уже начал писать алгоритм сам? 

Код

l=[11,5,1,78,68,21,99,73,11,0,2,7,3,4,6,5,8,7,9,1]
l.sort()
[0, 1, 1, 11, 11, 2, 21, 3, 4, 5, 5, 6, 68, 7, 7, 73, 78, 8, 9, 99]

PM WWW GTalk Jabber   Вверх
GIK
Дата 2.10.2006, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 6
Всего: 14



Написал таки я алгоритм, но не доконца. Глючит если сортировать слова с большими буквами, я даже алфавит написал с разными символами, и  со строчными и прописными, но все равно глючит. Кстати длина строки совсем не нужна, это я поторопился...
Еще нехватает проверки на корректность ввода, но это мелочи быстро решаемы, и решаемы в конце,  а пока вот такой код:
Код

<html> 
<head>
<style type=text/css>
</style>
<script language="javascript" type="text/javascript">
//                   ***   As it is pleasant to feel heat of your soul ***
var alfAvit=new String("АаБбВвГгДдЖжЗзИиКкЛлМмНнОоПпРрСсТтУуФфХхЧЧ");
var MiniStr=new String();
var CharString_I; 
var CharString_K; 
var numFor_I;
var numFor_K;
 function SortName(){
 var Len=3;
 var StringArray=new Array();
 for(var i=0; i<Len; i++){ //Забиваем массив
 StringArray[i]=new String(document.f1.elements[i].value);
 } 
 for(var i=0; i<Len; i++){ //Для прЕдИдущих слов
  for(var k=i+1; k<Len; k++){ 
   if(StringArray[i].length<StringArray[k].length) {MiniStr=StringArray[i];} //Если первое слово меньше, то используем его длину
   else{ MiniStr=StringArray[k];}
    for(var m=0; m<MiniStr.length; m++){//Берем меньшее слово для длины
     CharString_I=StringArray[i].charAt(m); //Символ строки I (прЕдИдущие)
     CharString_K=StringArray[k].charAt(m); //Символ строки K 
     numFor_I= parseInt(alfAvit.indexOf(CharString_I)); //Ищем символ первого слова в строке alfAvit
     numFor_K= parseInt(alfAvit.indexOf(CharString_K));
     if(numFor_I>numFor_K){//Если больше, т.е. символ стоит правее!!!, то меняем местами слова
        var ran=StringArray[i]; 
        StringArray[i]=StringArray[k]; 
        StringArray[k]=ran; 
          break;     
      }   
    }
  }
 }
for(var i=0; i<Len; i++){ //Выводим итог
 document.f1.elements[i].value=StringArray[i];
 }
}
</script>
</head>
<body bgcolor="#ffffff">
 <TABLE width="50%" height=10% valign=top><TR><TD width=100% valign=top>
  <form name="f1">
   <Input type="text" name='n1' value="вввввввв" size=12>
   <Input type="text" name='n2' value="ллл" size=12>
   <Input type="text" name='n3' value="ааааа" size=12>
   <Input type="button" onClick="SortName()" value="Сортировать"> 
  </form>
 </TD></TR></TABLE>
</body>
</html>



--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
AKS
Дата 3.10.2006, 07:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



Цитата(GIK @ 2.10.2006,  21:16)
Написал таки я алгоритм

Видимо алгоритмы Вам мешает писать ваш же лозунг, точнее "пиво" из этого лозунга. ;)
Код

function sort_fn(x, y) { 
  x = x.toUpperCase(), y = y.toUpperCase(); 
  return((x > y) ? 1 : ((x < y) ? -1 : 0));
} 
function sort_names(){
  var a = [], b = [], e = document.forms['f1'].elements;
  for(var i = 0, l = e.length; i < l; i++) {
    if(e[i].name && /n\d/.test(e[i].name)) {
      b.push(e[i]);
      a.push(e[i].value);
    }
  }
  a.sort(sort_fn);
  for(var i = 0, l = b.length; i < l; i++) b[i].value = a[i];
}


Это сообщение отредактировал(а) AKS - 3.10.2006, 07:48
PM MAIL   Вверх
GIK
Дата 3.10.2006, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 6
Всего: 14



Спасибо. ++ 
Я вообщето как раз без пива писал smile 


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
Sardar
Дата 4.10.2006, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Вопрос решён, в довесок может ещё эта тема будет интересна: пример сортировки обьектов по полю и вообще как лучше "сортировать"


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
GIK
Дата 5.10.2006, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 6
Всего: 14



Sardar, спасибо smile  хороший и полезный топ.


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0575 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.