Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите решить задачу / 8 сообщений из 8, страница 1 из 1
12.06.2006, 18:26
    #33786358
Shymkent
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачу
Необходимо написать процедуру для введенного одномерного массива, которая проверяет его упорядоченность: по возрастанию или по убыванию. Результат работы должен быть равен 1- если массив упорядочен по убыванию, 2 если по возрастанию и 0 в других случаях
...
Рейтинг: 0 / 0
12.06.2006, 19:05
    #33786385
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачу
1) возбми новый массив, скопируй и упорядочи по убыванию. Сравни. По возрастанию. Сравни. Иначе.
...
Рейтинг: 0 / 0
12.06.2006, 19:15
    #33786394
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачу
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
Dim ar() As Long

Private Function Arrangement(ByRef a() As Long) As Long
   If UBound(a) >  0  Then
      If IsArrangedUp(a) Then
         Arrangement =  1 
      ElseIf IsArrangedDown(a) Then
         Arrangement =  2 
      End If
   End If
End Function

Private Function IsArrangedUp(ByRef a() As Long) As Boolean
   Dim i As Long
   For i =  1  To UBound(a)
      If Not (a(i -  1 ) >= a(i)) Then Exit Function
   Next
   IsArrangedUp = True
End Function

Private Function IsArrangedDown(ByRef a() As Long) As Boolean
   Dim i As Long
   For i =  1  To UBound(a)
      If Not (a(i -  1 ) <= a(i)) Then Exit Function
   Next
   IsArrangedDown = True
End Function

Private Sub Command1_Click()
   ReDim ar( 3 )
   Dim i As Long
   For i =  0  To  3 
      ar(i) = i
   Next
   ShowMsg ar
End Sub

Private Sub Command2_Click()
   ReDim ar( 4 )
   Dim i As Long
   For i =  0  To  4 
      ar(i) =  10  - i
   Next
   ShowMsg ar
End Sub

Private Sub Command3_Click()
   ReDim ar( 3 )
   Dim i As Long
   For i =  0  To  3 
      ar(i) = Rnd *  10 
   Next
   ShowMsg ar
End Sub

Private Sub ShowMsg(ByRef a() As Long)
   Dim s As String
   Dim i As Long
   For i =  0  To UBound(a)
      s = s & a(i) & vbCrLf
   Next
   MsgBox s & "Порядок=" & Arrangement(a)
End Sub
...
Рейтинг: 0 / 0
13.06.2006, 12:59
    #33787317
Ukntb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачу
Я попробовал воспользоваться вашим кодом, но у меня ничего не получилось. Я только начинаю писать на VB. Подскажите,пожалуйста, как правильно решить мою задачу???
...
Рейтинг: 0 / 0
13.06.2006, 13:29
    #33787429
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачу
еще можно так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
' Функция проверяет сортироваку массива и возвращает:
' 1 - если массив упорядочен по убыванию,
' 2 - если по возрастанию
' 0 - в других случаях

Public Function TestArray(ar() As Integer) As Integer
    Dim i As Integer
    Dim up_sorted As Boolean    'для определения сортировки по возрастанию
    Dim dn_sorted As Boolean    'для определения сортировки по убыванию
    Dim un_sorted As Boolean    'нет сортировки
    
        
    ' устанавливаем флаги
    up_sorted = False
    dn_sorted = False
    un_sorted = False
    
    ' бежим по массиву
    For i =  1  To UBound(ar) -  1 
        If ar(i) > ar(i +  1 ) Then       ' если элемент массива больше следующего элемента
            If up_sorted Then           ' если была другая сортировка,
                un_sorted = True        ' то массив не сортирован
                Exit For
            End If
            dn_sorted = True            ' устанавливаем флаг сортировки по убыванию
            
        ElseIf ar(i) < ar(i +  1 ) Then   ' если элемент массива меньше следующего элемента
            If dn_sorted Then           ' если была другая сортировка,
                un_sorted = True        ' то массив не сортирован
                Exit For
            End If
            up_sorted = True            ' устанавливаем флаг сортировки по возрастанию
        End If
    Next i
    
    ' выводим результат
    If un_sorted Then
        TestArray =  0 
    ElseIf dn_sorted Then
        TestArray =  1 
    Else
        TestArray =  2 
    End If
  
End Function
...
Рейтинг: 0 / 0
13.06.2006, 13:36
    #33787456
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачу
1) введи массив. (я думаю там, где дали эту задачу учили вводить числа хоть каким-нибудь образом)
#после нажатия по кнопке
2) Берем 0 элемент (имеется ввиду!!! в массиве более 2х элеметов) эл-т(0) сравниваем с эл-м(1)
If m(0)>m(1) Then
...
ElseIf m(0)<m(1) Then
...
End If

Способ простой, и для учебных целей вполне годится.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
Public Function UporadochenLiVVedenniyMassiv() As Integer
  Dim m( 1000 ) As Integer

  'Введем массив
  Dim i As Integer, j As Integer
  For i= 0  To  999 
    j=Val(InputBox("Введите "  & (i + 1 ) & " элемент массива."))
    m(i)=j
  Next i

  Dim b as Boolean

  b = True
  'Проверим.
  If m( 0 )>m( 1 ) Then
    For i= 0  To  999 
      For j= 0  To i- 1 
        'Если Следующий (i) больше предыдущего (j) то не упорядочен.
        If m(i)>m(j) Then b=False
      Next j
    Next i
    If b Then
      UporadochenLiVVedenniyMassiv= 1 
    End If
  ElseIf m( 0 )<m( 1 ) Then
    For i= 0  To  999 
      For j= 0  To i- 1 
        'Если Следующий (i) меньше предыдущего (j) то не упорядочен.
        If m(i)<m(j) Then b=False
      Next j
    Next i
    If b Then
      UporadochenLiVVedenniyMassiv= 2 
    End If
  End If
  If Not b Then 
    UporadochenLiVVedenniyMassiv= 0  
  End If
End Sub
...
Рейтинг: 0 / 0
13.06.2006, 14:16
    #33787621
Ukntb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачу
Огромное спасибо за советы!!
В том то и дело, что эту задачу мне никто не давал и не объяснял как вводить массив. VB изучаю сам и задачку взял так же сам ради пробы.
Поэтому и тормоз (не судите строго)
Растолкуйте как это сделать????
Я пытаюсь добовить предложенный код в новый проект Standard.exe через View Code/ Далее сохранить.
После этого запускаю на исполнение и у меня получается пустая форма без каких либо результатов.
Что я делаю криво???
...
Рейтинг: 0 / 0
13.06.2006, 17:16
    #33788295
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите решить задачу
Вот эти строки:
Private Sub Command1_Click()
Это - обработчики нажатий на кнопки.
Надо на форму положить три кнопки.
Имена по умолчанию будут Command1, Command2, Command3
Это все что надо сделать чтобы код заработал.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите решить задачу / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]