powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите решить задачу
8 сообщений из 8, страница 1 из 1
Помогите решить задачу
    #33786358
Shymkent
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Необходимо написать процедуру для введенного одномерного массива, которая проверяет его упорядоченность: по возрастанию или по убыванию. Результат работы должен быть равен 1- если массив упорядочен по убыванию, 2 если по возрастанию и 0 в других случаях
...
Рейтинг: 0 / 0
Помогите решить задачу
    #33786385
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) возбми новый массив, скопируй и упорядочи по убыванию. Сравни. По возрастанию. Сравни. Иначе.
...
Рейтинг: 0 / 0
Помогите решить задачу
    #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
Помогите решить задачу
    #33787317
Ukntb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я попробовал воспользоваться вашим кодом, но у меня ничего не получилось. Я только начинаю писать на VB. Подскажите,пожалуйста, как правильно решить мою задачу???
...
Рейтинг: 0 / 0
Помогите решить задачу
    #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
Помогите решить задачу
    #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
Помогите решить задачу
    #33787621
Ukntb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Огромное спасибо за советы!!
В том то и дело, что эту задачу мне никто не давал и не объяснял как вводить массив. VB изучаю сам и задачку взял так же сам ради пробы.
Поэтому и тормоз (не судите строго)
Растолкуйте как это сделать????
Я пытаюсь добовить предложенный код в новый проект Standard.exe через View Code/ Далее сохранить.
После этого запускаю на исполнение и у меня получается пустая форма без каких либо результатов.
Что я делаю криво???
...
Рейтинг: 0 / 0
Помогите решить задачу
    #33788295
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот эти строки:
Private Sub Command1_Click()
Это - обработчики нажатий на кнопки.
Надо на форму положить три кнопки.
Имена по умолчанию будут Command1, Command2, Command3
Это все что надо сделать чтобы код заработал.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите решить задачу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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