Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2014, 21:06   #1
yurkasith
Новичок
Джуниор
 
Регистрация: 03.11.2014
Сообщений: 2
По умолчанию Задача в vb6 с одномерным массивом

Буду весьма благодарен любому, кто откликнется на мою проблему.
Задача:
Дан массив целых чисел A = (ai), где i =(1,2,3,...,n). Напечатать числа, образующие возрастающую последовательность.
например: если А={2,3,4,0,-1,2,-2,0,5}, результат 2,3,4 и -1,2
Числа вводятся в отдельный текстовый блок, эту часть я сделал, а вот, как решить непосредственно задачу - понятия не имею

Вот то, что накалякал:
Код Visual Basic

Код:
Dim n, nw, min, i As Integer
Dim nws As String
Dim Msi() As Integer
Private Sub Command1_Click()
If Text2.Text <> "" Then
n = n + 1
nws = Text2.Text
Text2.Text = ""
nw = CInt(nws)
nws = CStr(nw)
If n = 1 Then Text1.Text = nws Else Text1.Text = Text1.Text + ", " + nws
ReDim Preserve Msi(n - 1)
Msi(n - 1) = nw
End If
End Sub
 
Private Sub Command2_click()
For i = 1 To n
If Msi(n) < Msi(n - 1) Then
Text3.Text = Text3.Text + ", " + Msi(n) + "," + Msi(n - 1)
End If
Next i
End Sub

Последний раз редактировалось Stilet; 17.11.2014 в 08:08.
yurkasith вне форума Ответить с цитированием
Старый 16.11.2014, 21:25   #2
igoreshka3333
Форумчанин
 
Аватар для igoreshka3333
 
Регистрация: 26.09.2014
Сообщений: 176
По умолчанию

minay - памятку в студию!!!!
igoreshka3333 вне форума Ответить с цитированием
Старый 16.11.2014, 21:47   #3
gaw4
Форумчанин
 
Регистрация: 31.05.2010
Сообщений: 407
По умолчанию

Код:
Private Sub Command1_Click()
Dim t1$, t2$, t$, i%
t1 = "2,3,4,0,-1,2,-2,0,5"        'Text1.Text

If Len(t1) > 0 Then
   t2 = ""                           'Text2.Text = ""
   a = Split(t1 + ",", ",")
   a(UBound(a)) = a(UBound(a) - 1) - 1
   t = ""
   For i = 1 To UBound(a)
       t = t & a(i - 1)
        If a(i - 1) >= a(i) Then
           t2 = t2 & t & vbNewLine
           t = ""
        End If
  Next i
  MsgBox t2                            'Text2.Text = t2
End If
End Sub
icq 584 308 611
gaw4 вне форума Ответить с цитированием
Старый 16.11.2014, 22:21   #4
yurkasith
Новичок
Джуниор
 
Регистрация: 03.11.2014
Сообщений: 2
По умолчанию

Я не совсем понимаю как это работает (честно сказать, вообще не понимаю в силу своей недальновидности в этом вопросе). Не могли бы вы чутка разъяснить, разумеется, не за спасибо ( ну денежку закину на телефон).
yurkasith вне форума Ответить с цитированием
Старый 17.11.2014, 00:39   #5
gaw4
Форумчанин
 
Регистрация: 31.05.2010
Сообщений: 407
По умолчанию

Код:
Private Sub Command1_Click()
Dim t1$, t2$, t$, i%
                     'читаем последовательность чисел как строку
t1 = "2,3,4,0,-1,-2,2,-2,0,5"        'Text1.Text

If Len(t1) > 0 Then 'дальше работаем, если длина строки больше нуля, т.е., не пустая
   t2 = ""                           'Text2.Text = ""   'чистим поле вывода
   a = Split(t1 + ",", ",")      'преобразуем строку в массив,разделитель - запятая
                                 'предварительно добавив к строке еще одну запяту , тем самим
                                 'можно будет добавить еще один элемент в массив (крайний правый)
            'добавляем савмый правый крайний элемент равный предпоследнему минус 1
            'для того, что бы в случае когда правые крайние элементы возрастают
            'введенный элемент служил прекращением возрастания т.к. он меньше предпоследнего
   a(UBound(a)) = a(UBound(a) - 1) - 1
            'тут мы имеем массив введенную последовательность  + добавленный элемент
   t = ""
   For i = 1 To UBound(a)   'в цикле от 1 до размерности массива
       t = t & a(i - 1)     'формируем строку идущих подряд элементов
        If CInt(a(i - 1)) >= CInt(a(i)) Then     'как только возрастание обрывается

           t2 = t2 & t & vbNewLine   'дописываем в строку для вывода то что записали + переход на новую строку

           t = ""           'чистим для новой возрастающей последовательности
        End If
  Next i
  MsgBox t2                            'Text2.Text = t2
End If
End Sub
icq 584 308 611
gaw4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача с одномерным массивом. Иван46 Помощь студентам 2 27.04.2012 11:19
Задача с одномерным массивом. micr0 Помощь студентам 0 08.12.2011 11:46
Работа с одномерным массивом TvYown Общие вопросы C/C++ 2 23.12.2010 17:29
Задача с одномерным массивом. Malyshka Помощь студентам 6 13.12.2010 00:23