Модераторы: Akina

Поиск:

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


Новичок



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

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



Всем привет... smile ...я тута тока начинаю...вторую лабу в жизни на VB пишу)...подскажите плиз что поделать с проблемкой :нужно отсортировать одномерный массив, вписаный в TextBoxы и окрасить минимум - зеленым, а максимум красным...ну так вот...я все отсортировала, покрасила как надо...и все работает прекрасно , но тока один раз(((...еси второй раз нажимаешь - появляются уже два максимума и 2 минимума((((...я уже чего тока ни попробовала...и никак не получается smile ...вообщем ооочень прошу наставить меня на путь истинный smile ...
вот кусок моего творения:
Код

Dim md(15) As Integer

For i = 0 To 15
md(i) = Rnd * (80 - 20) + 20 
m1(i).Text = md(i) 
Next

max_d = md(0)       

max_i = 0          

For i = 1 To 15
    If md(i) > max_d Then   
        max_d = md(i)      
        max_i = i           

    End If
Next
m1(max_i).BackColor = RGB(255, 0, 0)        

min_d = md(0)          

min_i = 0         

For i = 1 To 15
    If md(i) < min_d Then   
        min_d = md(i)     
        min_i = i           

    End If
Next
m1(min_i).BackColor = RGB(0, 255, 0)        

End Sub

заранее спасибки)
PM   Вверх
Akina
Дата 5.9.2007, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



А что Вы хотите? Кто за Вас будет перед повторным запуском восстанавливать BackColor окрашенных на первом проходе текстбоксов?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Lely
Дата 5.9.2007, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Akina, извините...а как "перед повторным запуском восстанавливать BackColor окрашенных на первом проходе текстбоксов"?...я просто незнаю такой...точнее сказать вообще почти ничего не знаю smile ...единственное что мне по этому поводу в голову приходило это вставить где-то во второй строке
Код

For i = 0 To 15
m1(i).Text = чему-нить типа "  "
Next

но так естественно не работает smile  smile  smile 
может надо написать чтот типа
Код

For i = 0 To 15
m1(i).BackColor = RGB(255, 255, 255)
Next


Это сообщение отредактировал(а) Lely - 5.9.2007, 21:39
PM   Вверх
Akina
Дата 5.9.2007, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(Lely @  5.9.2007,  22:28 Найти цитируемый пост)
может надо написать чтот типа

Да, можно и так.
Но можно и проще - просто между строками 5 и 6 первого кода вставьте строку
Код

m1(i).BackColor = vbWhite


Добавлено через 1 минуту и 37 секунд
Кстати, вместо RGB(255, 0, 0) можно написАть vbRed, а вместо RGB(0, 255, 0) соответственно... сами догадаетесь?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Lely
Дата 6.9.2007, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



спасибо большое за подсказки smile ...все работает как надо  smile ... но вот тока рождается еще вопрос...вот мы очищали Backcolor текстбоксов - это понятно как сделать...а вот как надо написать чтобы при повторной генерации данных очищать текстбоксы, предназначенные для вывода отсортированных данных (ну если сортировать по возрастанию)? smile 

Код

For i = 0 To 15
m2(i).Text = 0
Next

не так? smile 
PM   Вверх
Akina
Дата 6.9.2007, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(Lely @  6.9.2007,  09:16 Найти цитируемый пост)
как надо написать чтобы при повторной генерации данных очищать текстбоксы, предназначенные для вывода отсортированных данных 

Для вывода сортированных данных заведен другой массив контролов? Ну нормально, нолики ему... только какой в том смысл, если через полсекунды поверх этих нулей лягут отсортированные данные?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
cardinal
Дата 6.9.2007, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Lely, и не забывай, что все что ты пишешь в TextBox это текст!


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Lely
Дата 6.9.2007, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Akina, смысла я тоже не вижу....просто так в задании написано "по команде «Отсортировать значения массива в порядке возрастания»  вывести на форме упорядоченные в порядке возрастания значения одномерного массива; при повторном выполнении генерации данных очищать текстовые поля, предназначенные для вывода отсортированных данных" ...а значит должно быть...а я не знаю как сделать(((
может под очисткой подразумевается возвращение им белого цвета?...хотя наврятли....потому что в задании еще есть такая фраза "при повторном выполнении генерации данных восстановить белый цвет текстовых полей и очистить текстовые поля".... smile 

Это сообщение отредактировал(а) Lely - 6.9.2007, 13:23
PM   Вверх
Akina
Дата 6.9.2007, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(Lely @  6.9.2007,  13:56 Найти цитируемый пост)
при повторном выполнении генерации данных очищать текстовые поля, предназначенные для вывода отсортированных данных


Цитата(Lely @  6.9.2007,  13:56 Найти цитируемый пост)
в задании еще есть такая фраза "при повторном выполнении генерации данных восстановить белый цвет текстовых полей и очистить текстовые поля".... 

Я бы добавил на форму кнопку "Очистить", и в ней все это забабахал. По крайней мере, это логично.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Lely
Дата 6.9.2007, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Akina, просто вопрос в том как "забабахать" очистку текстовых полей? smile 
PM   Вверх
Akina
Дата 6.9.2007, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Код, который приведен тобой в постинге от 5.9.2007, 22:28 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Lely
Дата 6.9.2007, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



а еще вопрос мона? smile ...вот условие может вот так выглядеть?
Код

If 0 <= max_i <= 3 Then a = 1: b = max_i + 1
If 4 <= max_i <= 7 Then a = 2: b = max_i - 3
If 8 <= max_i <= 11 Then a = 3: b = max_i - 7
If 12 <= max_i <= 15 Then a = 4: b = max_i - 11


или может так?
Код

If 0 <= max_i <= 3 Then
a = 1: b = max_i + 1
ElseIf 4 <= max_i <= 7 Then
a = 2: b = max_i - 3
ElseIf 8 <= max_i <= 11 Then
a = 3: b = max_i - 7
ElseIf 12 <= max_i <= 15 Then
a = 4: b = max_i - 11
End If


как надо писать? smile 

Добавлено @ 14:25
Цитата

Код, который приведен тобой в постинге от 5.9.2007, 22:28 

но там же очистка Backcolorа...а с меня требуют очистить текстовые поля smile 

Это сообщение отредактировал(а) Lely - 6.9.2007, 14:39
PM   Вверх
Lely
Дата 6.9.2007, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



уррра smile ...я поняла для чего эта очистка нужна и сделала все как надо...получилось через так
Код

For i = 0 To 15
m1(i).Text = "  "
Next

теперь вот тока разобраться надо...почему у меня вот тут
Код

Private Sub Cmd4_Click()

For i = 1 To 15
    If m3(i).Text > max_d Then  
        max_d = m3(i).Text      
        max_i = i           

    End If
Next
m3(max_i).BackColor = RGB(255, 0, 0)        


m4(2).Text = max_d    

a = max_idiv4 + 1    
b = max_imod4 + 1      

m4(0).Text = a
m4(1).Text = b

End Sub

выводит все время a=1, b=1...вместо того чтоб выводить значения a и b по формулам? smile 


Это сообщение отредактировал(а) Lely - 6.9.2007, 16:15
PM   Вверх
Akina
Дата 6.9.2007, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(Lely @  6.9.2007,  15:22 Найти цитируемый пост)
как надо писать? 

Код

Select Case max_i
    Case 0 To 3
        a = 1
        b = max_i + 1
    Case 4 To 7
        a = 2
        b = max_i - 3
' ........
End Select




--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Lely
Дата 6.9.2007, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ух ты....работает smile ...спасибо Akina...только вот мне похоже не так надо...мне наверна надо с  формулами чтоб работало...это я пока до формулы не допетрила условие написала...а в задании сказано типа формулу придумывать...там просто надо наверно чтоб у всех элементов одномерного массива, который выглядит двумерным вычислились индексы, чтоб потом по индексам без лишних действий закрасить столбец и строку максимального элемента... smile 
или может нужно тока к максимальному индексы найти, а закрашивать и без индексов удобно? smile 

PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


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

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


 




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


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

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