Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите пожалуйста с программой на Visual Basic for Application... =(((  (Прочитано 11193 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Студенточка
Гость
« : 28-06-2006 12:26 » 

Народ! Скромно так... Я только начала осваивать программирование на языке Visual Basic for Application... Краснею Очень нужна ваша помощь! С ума сойти... Как выглядит программа "упорядочить отрицательные элементы А(10)"...? Не понял А черт его знает... Напишите, если не трудно..? =))
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #1 : 29-06-2006 05:46 » 

Метод "пузырьковой сортировки"
Код:
Public Sub Sort()
    Dim i As Integer    'счетчик
    Dim j As Integer    'счетчик
    Dim A() As Integer  'массив
   
    Dim x As Integer    'вспомогательная переменная
   
    ReDim A(10)      'массив из 10 элементов
   
    'заполняем массив
    For i = 1 To UBound(A)
        A(i) = -10 * Rnd() + 1
    Next i
   
    WriteMas A
   
    'Метод пузырьковой сортировки
    For i = 1 To UBound(A) - 1          'бежим по всем э-там массива
        For j = 1 To UBound(A) - 1      'бежим по всем э-там массива
            If A(j) > A(j + 1) Then     'если элемент массива больше следующего
                x = A(j + 1)            'то меняем их местами
                A(j + 1) = A(j)
                A(j) = x
            End If
        Next j
    Next i
   
    WriteMas A
   
End Sub

Private Sub WriteMas(M() As Integer)
    Dim i As Integer
    Dim s As String
   
    s = ""
    For i = 1 To UBound(M)
        s = s + Str(M(i)) + vbTab
    Next i
   
    Debug.Print s
End Sub

и, кстати, что значит
Цитата
"упорядочить отрицательные элементы А(10)".
« Последнее редактирование: 17-12-2007 17:02 от Алексей1153++ » Записан

I Have Nine Lives You Have One Only
THINK!
Студенточка
Гость
« Ответ #2 : 29-06-2006 06:33 » 

и, кстати, что значит
Цитата
"упорядочить отрицательные элементы А(10)".
Это такая задача.. Дан массив А(10).. в нем самые различные числа.. А упорядочить нужно только отрицательные.. Как это делать..?
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #3 : 29-06-2006 13:55 » 

ну тогда пример приведите, что есть, что должно быть

Записан

I Have Nine Lives You Have One Only
THINK!
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #4 : 29-06-2006 14:47 » 

я так полагаю, что сначала надо запомнить индексы всех отрицательных чисел, затем сложить их в отдельный массив, отсортировать их там, затем расставить по сохранённым индексам в отсортированном уже порядке
//исходный массив
1,2,-6,4,-3,-2,7

->

//дополнительный массив
-6,-3,-2

->

//сортируем
-2,-3,-6

->

//ставим числа взад
1,2,-2,4,-3,-6,7
Записан

HandKot
Молодой специалист

ru
Offline Offline

« Ответ #5 : 30-06-2006 05:47 » 

Код:
Public Sub Sort()
    Dim i As Integer    'счетчик
    Dim j As Integer    'счетчик
    Dim z As Integer    'позиция отрицательного э-та
    Dim A() As Integer  'массив
   
    Dim x As Integer    'вспомогательная переменная
   
    ReDim A(10)      'массив из 10 элементов
   
    'заполняем массив
    For i = 1 To UBound(A)
        A(i) = (10 * Rnd() + 1) * (-1 * Rnd() + 0.5)
    Next i
   
    WriteMas A
   
    'Метод пузырьковой сортировки
    For i = 1 To UBound(A) - 1          'бежим по всем э-там массива
        z = 0
        For j = 1 To UBound(A) - 1      'бежим по всем э-там массива
            If A(j) < 0 Then
                If z <> 0 Then
                    If A(z) > A(j) Then     'если элемент массива больше следующего
                        x = A(j)            'то меняем их местами
                        A(j) = A(z)
                        A(z) = x
                        z = j
                    End If
                Else
                    z = j                   'запоминаем позицию отритцательного э-та
                End If
            End If
        Next j
    Next i
   
    WriteMas A
               
End Sub

Private Sub WriteMas(M() As Integer)
    Dim i As Integer
    Dim s As String
   
    s = ""
    For i = 1 To UBound(M)
        s = s + Str(M(i)) + vbTab
    Next i
   
    Debug.Print s
End Sub


исходный массив: 0   1  -1   0  -2   0  -3  -2   4   1 
результат            0   1  -3   0  -2   0  -2  -1   4   1 
« Последнее редактирование: 17-12-2007 17:08 от Алексей1153++ » Записан

I Have Nine Lives You Have One Only
THINK!
Студенточка
Гость
« Ответ #6 : 01-07-2006 13:59 » 

А можно сделать что-то типа вот этого.. только через массив, а не ячейку...

Sub прим()
Dim i, j, r, a As Integer
For i = 1 To 10
If Cells(i, 1) < 0 Then
r = r + 1
Cells(r, 13) = Cells(i, 1)
End If
Next i
For i = 2 To r
If Cells(i - 1, 13) > Cells(i, 13) Then
a = Cells(i - 1, 13)
Cells(i - 1, 13) = Cells(i, 13)
Cells(i, 13) = a
i = 1
End If
Next i
End Sub

Очень нужна ваша помощь!! Завтра послений день сдачи зачетов..! =(((((
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines