Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сортировка строк по длине слова в строке 
:(
    Опции темы
PaZ1T1V
Дата 28.2.2008, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 169
Регистрация: 26.2.2008
Где: Багдад )

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



Здравствуйте! Помогите пожалуйста с зада4ей. У меня есть ЛистБокс, В нем на каждой стро4ке расположено по слову и мне надо ети слова отсортировать в порядке увели4ения длины слова. Помогите, пожалуйста, 4ем можете буду о4ень признателен за ето smile   
Код

 
private int LenghtCalc(string word)
        {
            return word.Length;
        }

        private void StringLenghtSorted(ListBox myLb, bool flag)
        {
            string temp, temp1, temp2;
            int n = myLb.Items.Count, tmp;
           // int[] myIntArray = new int[n];
           
            /*for (int i = 0; i < n; i++)
            {
                temp = myLb.Items.ToString();
                myIntArray[i] = temp.Length;
            }*/ 

            if (flag == true)
            {
                for (int i = 0; i < n; i++)
                {
                    for (int j = 0; j < n - 1; j++)
                    {
                        if (LenghtCalc(myLb.Items[j + 1].ToString()) < LenghtCalc(myLb.Items[j].ToString()))
                        {
                            temp1 = myLb.Items[j + 1].ToString();
                            temp2 = myLb.Items[j].ToString();
                            temp = temp1;
                            temp1 = temp2;
                            temp2 = temp;
                        }
                        myLb.Items.Add(temp2); j++;
                        myLb.Items.Add(temp1); j--;
                    }
                }
            } 
        }



ЗЫ. На делфях ето о4ень легко сделать а вот на шарпе не знаю как строки сравнивать :(( 

Это сообщение отредактировал(а) PaZ1T1V - 28.2.2008, 22:23
--------------------
[size=8]Atention please!!![/size]
[size=6]Кривые руки[/size]
PM MAIL WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
CYBERDREAM
Дата 28.2.2008, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 11
Всего: 28



Приветствую PaZ1T1V
Код

for (int i = 0; i < listBox1.Items.Count; i++)
            {
                for (int j = i; j < listBox1.Items.Count; j++)
                {
                    if (listBox1.Items[i].ToString().Length > listBox1.Items[j].ToString().Length)
                    {
                        string temp;
                        temp = listBox1.Items[i].ToString();
                        listBox1.Items[i] = listBox1.Items[j];
                        listBox1.Items[j] = temp;
                    }
                }
            }



--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
PaZ1T1V
Дата 29.2.2008, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 169
Регистрация: 26.2.2008
Где: Багдад )

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



Цитата(CYBERDREAM @ 28.2.2008,  22:43)
Приветствую PaZ1T1V
Код

for (int i = 0; i < listBox1.Items.Count; i++)
            {
                for (int j = i; j < listBox1.Items.Count; j++)
                {
                    if (listBox1.Items[i].ToString().Length > listBox1.Items[j].ToString().Length)
                    {
                        string temp;
                        temp = listBox1.Items[i].ToString();
                        listBox1.Items[i] = listBox1.Items[j];
                        listBox1.Items[j] = temp;
                    }
                }
            }

4то то  нифига не сортирует просто из листбокса удаляет все строки и все :( 
--------------------
[size=8]Atention please!!![/size]
[size=6]Кривые руки[/size]
PM MAIL WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
CYBERDREAM
Дата 29.2.2008, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 11
Всего: 28



У себя проверял, работало. 


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
ivashkanet
Дата 29.2.2008, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Код

        private void button1_Click(object sender, EventArgs e)
        {
            ArrayList items = new ArrayList(listBox1.Items);
            listBox1.Items.Clear();

            items.Sort(new ByStingLengthComparer());

            listBox1.Items.AddRange(items.ToArray());
        }

        public class ByStingLengthComparer:IComparer
        {
            public int Compare(object x, object y)
            {
                int xStringLength  = x.ToString().Length;
                int yStringLength  = y.ToString().Length;

                return xStringLength.CompareTo(yStringLength);
            }
        }


И не надо никаких велосипедов! Это .Net!

P.S. Кроме такого велосипеда, что нужно копировать все объекты в коллекцию, так как коллекция итемов, собака, не сортируется напрямую. Хотя реализует IList с помощью которого на раз можно отсортировать коллекцию, так нет, нет такого сортировщика который бы принимал IList  smile 
PM MAIL WWW ICQ   Вверх
PaZ1T1V
Дата 29.2.2008, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 169
Регистрация: 26.2.2008
Где: Багдад )

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



Цитата(ivashkanet @ 29.2.2008,  10:15)
Код

        private void button1_Click(object sender, EventArgs e)
        {
            ArrayList items = new ArrayList(listBox1.Items);
            listBox1.Items.Clear();

            items.Sort(new ByStingLengthComparer());

            listBox1.Items.AddRange(items.ToArray());
        }

        public class ByStingLengthComparer:IComparer
        {
            public int Compare(object x, object y)
            {
                int xStringLength  = x.ToString().Length;
                int yStringLength  = y.ToString().Length;

                return xStringLength.CompareTo(yStringLength);
            }
        }


И не надо никаких велосипедов! Это .Net!

P.S. Кроме такого велосипеда, что нужно копировать все объекты в коллекцию, так как коллекция итемов, собака, не сортируется напрямую. Хотя реализует IList с помощью которого на раз можно отсортировать коллекцию, так нет, нет такого сортировщика который бы принимал IList  smile

сделал все также как было написано тобой но под свою прогу то есть 
Код


public class ByStingLengthComparer : IComparer
        {
            public int Compare(object x, object y)
            {
                int xStringLength = x.ToString().Length;
                int yStringLength = y.ToString().Length;

                return xStringLength.CompareTo(yStringLength);
            }
        }


private void StringLenghtSorted(ListBox myLb)
        {
            ArrayList items = new ArrayList(myLb.Items);
            myLb.Items.Clear();

            items.Sort(new ByStingLengthComparer());

            myLb.Items.AddRange(items.ToArray());
        }


private void ListBoxSorted(ListBox myLb)
        {
            ArrayList myArray = new ArrayList();
            IComparer myComparer = new myReverserClass();
            
            FromListBoxInMyArray(myLb, myArray);

            if (comboBox1.SelectedIndex == 0)
            {
                myArray.Sort();
                AddValueInListBox(myArray, myLb);
            }
            
            if (comboBox1.SelectedIndex == 1)
            {
                myArray.Sort(myComparer);
                AddValueInListBox(myArray, myLb);
            }

            if (comboBox1.SelectedIndex == 2)
            {
                StringLenghtSorted(myLb);
               
            }

            if (comboBox1.SelectedIndex == 3)
            {
               
            } 
        }

 private void button7_Click(object sender, EventArgs e)
        {
            ListBoxSorted(listBox1);
        }




и осталась та же беда 4то и была раньше то есть листбокс о4ищается и снова не заполняется. как быть, может я 4то то не правильно деляю ( 


............ исправил. Все работает нормально ) спасибо!!!

Это сообщение отредактировал(а) PaZ1T1V - 29.2.2008, 12:05
--------------------
[size=8]Atention please!!![/size]
[size=6]Кривые руки[/size]
PM MAIL WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
ivashkanet
Дата 29.2.2008, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



PaZ1T1V, попробуй при клике выполнить StringLenghtSorted, а не ListBoxSorted. Что-то у тебя слишком запутанная логика у ListBoxSorted

Код

 private void button7_Click(object sender, EventArgs e)
        {
            StringLenghtSorted(listBox1);
        }

PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




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


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

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