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

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Нужна помощь, Visual Basic for Application 
:(
    Опции темы
Глупышка
  Дата 28.6.2006, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Народ! Я только начала осваивать программирование на языке Visual Basic for Application... Очень нужна ваша помощь! smile  Как выглядит программа "упорядочить отрицательные элементы А(10)"...? smile  Напишите, если не трудно..? =)) 
PM   Вверх
mihanik
Дата 28.6.2006, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

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



Глупышка!
Приведи, пожалуйста, весь текст задачи, которую ты решаешь.
И потом... Visual Basic for Application - это широкое понятие...
Ты в чём пишешь? В Ехеле? В Аксессе? В Ворде?
 


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
cardinal
Дата 28.6.2006, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


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

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



Модератор: Название темы должно отражать ее суть! 


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

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


Новичок



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

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



В Excele... smile 
А задача именно так и звучит: упорядочить отрицательные элементы А(10)... smile   

Это сообщение отредактировал(а) Глупышка - 28.6.2006, 16:05
PM   Вверх
mihanik
Дата 28.6.2006, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

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



Элементы массива откуда брать?
Они расположены ла листе?
Вводятся с клавиатуры?
Считываются из файла?
В каком порядке упорядочивать (возрастание/убывание)?
Задачу понимаю так...
Есть некоторый массив. В нём есть несколько отрицательных элементов.
Упорядочивать только отрицательные элементы, не трогая с места остальные...
 


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
Глупышка
  Дата 28.6.2006, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(mihanik @ 28.6.2006,  16:21)
Есть некоторый массив. В нём есть несколько отрицательных элементов.
Упорядочивать только отрицательные элементы, не трогая с места остальные...

Скорее всего так... smile 
Мне просто дали задание.. вот в такой формулировке.. и всё... smile 
Видимо, массив А(10) соержит какие-то числа (и положительные, и отрицательные) и нужно упорядочить только отрицательные... smile  
PM   Вверх
~FoX~
Дата 28.6.2006, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

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



Код

Dim a(10) As Integer ' сам массив
Dim i, j, k As Integer 'для циклов
Dim tmp As Integer 'для перестановки ячеек
Randomize Timer ' говорим генератору что он работает от таймера
  For i = 1 To 10 'заполняем массив
    a(i) = -10 + (Rnd * 20)  'числами от -10 до  10
  Next i
  
For j = 1 To 9 'сортируем методом пузырьуа
  For k = J To 10
     If (a(j) < 0) And (a(j) < a(k)) Then ' если число отрицательное (<0) и первое число меньше второго  a(j) < a(k)
       tmp = a(j)  ' то меняем их местами
       a(j) = a(k)
       a(k) = tmp
     End If
  Next k
Next j
  
  
  For i = 1 To 10
    Debug.Print a(i) ' выводим результат
  Next i



Примерно так, только писал в браузере, мог гдето на путать, но по идеи должны отсортиться только отриц. числа  

Это сообщение отредактировал(а) ~FoX~ - 28.6.2006, 16:56


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Глупышка
Дата 28.6.2006, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А что такое Randomize Timer, Rnd  и tmp..? smile  
PM   Вверх
~FoX~
Дата 28.6.2006, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

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



Я там поправил чуть
randomize timer - для генерации случайного числа от таймера - чтоб не повторялись при перезапуске
rnd - сам гениратор случайных чисел
tmp - просто для того чтоб переставить элдименты массива - называется сортировка пузыркем  - в твоем случае камушком  

Это сообщение отредактировал(а) ~FoX~ - 28.6.2006, 16:46


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
mihanik
Дата 28.6.2006, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

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



Итак...
Формулирую условие.
На первом листе в столбце A содержиться 10 чисел (в ячейках с А2 по А11)
Рядом находиться кнопка, по нажатию на которую всё и начинается...

Код

Attribute VB_Name = "Module1"

Private Sub CommandButton1_Click()
Dim intNegativeCount As Integer ' количество отрицательных элементов массива
Dim dblMassive(10) As Double    ' Массив для временного хранения отрицательных элементов
Dim dblTmp As Double            ' Временная переменная для "Пузырька"
Dim I As Integer, II As Integer ' Переменные для циклов

' Считаем сначала все отрицательные элементы во временный массив.
    intNegativeCount = 0
    For I = 1 To 10
        If Val(Sheets(1).Cells(1 + I, 1).Value) < 0 Then
            intNegativeCount = intNegativeCount + 1
            dblMassive(intNegativeCount) = Val(Sheets(1).Cells(1 + I, 1).Value)
        End If
    Next I

    MsgBox intNegativeCount

' Если intNegativeCount < 2, то сортировать смысла не имеет, и мы посто завершаем работу процедуры..
    If intNegativeCount < 2 Then Exit Sub

' Сортируем Массив "пузырьком", ну, например, по возрастанию...
    For I = 1 To intNegativeCount - 1
        For II = 1 To intNegativeCount - 1
            If dblMassive(II) > dblMassive(II + 1) Then
                dblTmp = dblMassive(II)
                dblMassive(II) = dblMassive(II + 1)
                dblMassive(II + 1) = dblTmp
            End If
        Next II
    Next I
    
' А теперь пробегаем по массиву, и если в нём находим отрицательный элемент,
' то заменяем его очередным элементом массива...

    II = 2
    For I = 1 To intNegativeCount
        While Val(Sheets(1).Cells(II, 1).Value) >= 0
            II = II + 1
        Wend
        Sheets(1).Cells(II, 1).Value = dblMassive(I)
        II = II + 1
    Next I
    
End Sub


 

Это сообщение отредактировал(а) mihanik - 28.6.2006, 16:56


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
Глупышка
Дата 28.6.2006, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Как всё сложно.. smile  А проще нельзя..? smile  Для такие как я... smile  
(С самыми элементарными операторами, переменными, без кнопок.. на 1 листе...)... 

Это сообщение отредактировал(а) Глупышка - 28.6.2006, 17:04
PM   Вверх
mihanik
Дата 28.6.2006, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

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



М-да-а-а...

Глупышка!

Тебе надо задачу решить, или показать какая ты гламурненькая?

Разбирайся уже!!!
Задача-то решена!
 


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
Глупышка
Дата 28.6.2006, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



mihanik, решена.. smile  но не так, как мы обычно на парах решали.. smile  Да и объяснить я не смогу... smile 
Так что... smile  
PM   Вверх
cardinal
Дата 28.6.2006, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


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

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



Добейся того, чтобы все заработало, как ты считаешь нужным, а потом построчно пытайся понять, что и как происходит. Если что непонятно спрашивай! 


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

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


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

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



Цитата(Глупышка @  28.6.2006,  18:40 Найти цитируемый пост)
 но не так, как мы обычно на парах решали.

Хмм....а как вы на парах решали? Примерчик приведи, а мы посмотрим.....Хотя то что тут написали элиментарно и вполне подойдет для любова учереждения. 
[off]
К стати
Цитата

' Сортируем Массив "пузырьком", ну, например, по возрастанию...
    For I = 1 To intNegativeCount - 1
        For II = 1 To intNegativeCount - 1
            If dblMassive(II) > dblMassive(II + 1) Then


Очень странный пузырек
[/off] 

Это сообщение отредактировал(а) ~FoX~ - 29.6.2006, 08:08


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Закрытая темаСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

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

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

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

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


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

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


 




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


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

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