Задачки

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
SeT
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 362
Зарегистрирован: 29.12.2004 (Ср) 13:11

Задачки

Сообщение SeT » 02.02.2006 (Чт) 15:09

Чё-то я не могу решить задачку по бейсику, хотя уже третий день бьюсь... Помогите пожалуйста с решением!
Задача:
Напечатать только те числа из массива, которые образуют растущую последовательность. Н.р. если A={2,4,-3,4,2,-2,5}, результат 2,4 и -3,4 и -2,5
01000100
Причиняет боль 0010
Виртуальная любовь 00100
Индустрия снов 0010

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 02.02.2006 (Чт) 15:20

"Те числа ..." или "те пары чисел... "?

Add Постеснялся бы хоть в основной форум класть.
Последний раз редактировалось GAGArin 02.02.2006 (Чт) 15:25, всего редактировалось 1 раз.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 02.02.2006 (Чт) 15:21

Я не думаю, что кто-то кроме тебя должен делать эту исключительно примитивную домашнюю работу.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 02.02.2006 (Чт) 15:29

Переношу.
Lasciate ogni speranza, voi ch'entrate.

Faust
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 649
Зарегистрирован: 29.12.2003 (Пн) 13:38
Откуда: лаборатория

Сообщение Faust » 02.02.2006 (Чт) 16:52

Опустили человека... Если тебе нужно найти все монотонно возрастающие подпоследовательности данной последовательности, то рекурсия тебе поможет, ежели все дайствительно так тупо, как можно понять из твоего примера (что нужно найти все пары A(i)<A(i+1)), то с такими вопросами тебе поможет только Бог.
Листинги не горят!

SeT
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 362
Зарегистрирован: 29.12.2004 (Ср) 13:11

Сообщение SeT » 02.02.2006 (Чт) 17:39

Я написал её в главном разделе потому, что все мои вопросы остаются без ответа, т.е. никто не может или не хочет мне помочь => вопрос мой для вас трудный
Если так и делал, он прога число 2 тоже считает последовательностью, что не должно быть!
01000100
Причиняет боль 0010
Виртуальная любовь 00100
Индустрия снов 0010

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 02.02.2006 (Чт) 17:41

SeT писал(а):т.е. никто не может или не хочет мне помочь => вопрос мой для вас трудный

Странные выводы.
Lasciate ogni speranza, voi ch'entrate.

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 02.02.2006 (Чт) 17:42

SeT писал(а):Я написал её в главном разделе потому, что все мои вопросы остаются без ответа, т.е. никто не может или не хочет мне помочь => вопрос мой для вас трудный или неинтересный (прим. редактора)

Странный вывод из своих же слов.

Если так и делал, он прога число 2 тоже считает последовательностью, что не должно быть!

А по-русски?

SeT
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 362
Зарегистрирован: 29.12.2004 (Ср) 13:11

Сообщение SeT » 02.02.2006 (Чт) 17:51

Ну ты напиши программу и проверь результат!
должно быть 2,4 и -3,4 и -2,5
А будет 2,4 и -3,4 и 2 и -2,5
ДВОЙКА ЛИШНЯЯЯЯЯЯЯ
SeT писал(а):
Я написал её в главном разделе потому, что все мои вопросы остаются без ответа, т.е. никто не может или не хочет мне помочь => вопрос мой для вас трудный или неинтересный (прим. редактора)

Странный вывод из своих же слов.

Тогда найди мою последнюю тему про терминалку... Я сильно сомневаюсь, что тема не интересная
01000100
Причиняет боль 0010
Виртуальная любовь 00100
Индустрия снов 0010

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 02.02.2006 (Чт) 17:54

SeT писал(а):Тогда найди мою последнюю тему про терминалку... Я сильно сомневаюсь, что тема не интересная

Напрасно сомневаешься.
Lasciate ogni speranza, voi ch'entrate.

SeT
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 362
Зарегистрирован: 29.12.2004 (Ср) 13:11

Сообщение SeT » 02.02.2006 (Чт) 17:58

Чтоже для тебя тогда интересное? Прога для вычисления примера 2+2+2?
Когда спрашивал про обои, то сам нашёл кусок кода быстрее чем дали ответ на форуме (с разницей в неделю или типа того)
Когда спрашивал как сделать прозрачный GIF, среди флуда ничё путного не нашёл, опять сам нашёл полностью собранный исходник...
И чем дальше в лес, тем злее дятлы...
Спасибо млин за помощь, тогда уж как-нибудь сам сделаю!
01000100
Причиняет боль 0010
Виртуальная любовь 00100
Индустрия снов 0010

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 02.02.2006 (Чт) 18:15

Ну ты напиши программу и проверь результат!

Написал, двойку не выводит, решения выдает. Блин, а я надеялся...

Faust
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 649
Зарегистрирован: 29.12.2003 (Пн) 13:38
Откуда: лаборатория

Сообщение Faust » 02.02.2006 (Чт) 20:17

Мужики! Я, кажется понял, что требовалось в задаче! :shock: Нужно было вывести только те подряд идущие элементы массива, которые образуют возрастающую последовательность. Так, SeT? Если да, то вот код:
Код: Выделить всё
Const N = 99
Private Sub Form_Load()
Dim A(0 To N) As Long, i As Long
Randomize
For i = 0 To N
    A(i) = Int(Rnd * 100)
Next i
If A(1) > A(0) Then Debug.Print A(0);
i = 1
Do
While (A(i + 1) > A(i))
    Debug.Print A(i);
    i = i + 1
    If i = N Then GoTo m1
Wend
m1:
If A(i - 1) < A(i) Then Debug.Print A(i)
i = i + 1
Loop Until i >= N
End Sub

Корявый, но рабочий.
ЗЫ. В следущий раз постарайся получше формулировать условия задач. Тогда и ответ на них получишь быстрее.
Листинги не горят!

SeT
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 362
Зарегистрирован: 29.12.2004 (Ср) 13:11

Сообщение SeT » 03.02.2006 (Пт) 14:15

Я написал слово в слово как написано а задаче.
01000100
Причиняет боль 0010
Виртуальная любовь 00100
Индустрия снов 0010

Faust
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 649
Зарегистрирован: 29.12.2003 (Пн) 13:38
Откуда: лаборатория

Сообщение Faust » 03.02.2006 (Пт) 15:41

SeT писал(а):Я написал слово в слово как написано а задаче.

Тогда сочувствую... Если тебе по таким материалам приходится учится, то могу только пожелать удачи и терпения!
Листинги не горят!

CORBA
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 179
Зарегистрирован: 22.11.2003 (Сб) 13:41
Откуда: Ukraine-Crimea-Feodosia

Сообщение CORBA » 04.02.2006 (Сб) 2:37

2 Set
мдас программирование это те не цацки-пецки, тут думать приходится

Код: Выделить всё

Dim a() As Integer = {2, 4, -3, 4, 2, -2, 5}
Dim i As Integer
    For i = LBound(a) To UBound(a) - 1
       If a(i) < a(i + 1) Then Debug.Print(CStr(a(i)) + "," + CStr(a(i + 1)))
    Next i
У каждой сложной задачи есть множество простых для понимания, но неправильных решений.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 04.02.2006 (Сб) 7:51

CORBA писал(а):2 Set
Код: Выделить всё
Dim a() As Integer = {2, 4, -3, 4, 2, -2, 5}


в VB массив так нельзя инициализировать, только поэлементно.

2 Set

Если я правильно понял и необходима последовательность состоящая из произвольного количества чисел, а не попарно, то код должен быть такой:
Код: Выделить всё
Public Sub PrintSequence(ar() As Integer)
Dim i As Integer
    Dim bPrint As Boolean   ' указывает на то, что условие выполняется
    ' цикл от первого до предпоследнего элемента массива
    For i = LBound(ar) To UBound(ar) - 1
        If ar(i) < ar(i + 1) Then
            ' условие выполняется - печатаем текущий элемент
            Debug.Print ar(i);
            bPrint = True   ' устанавливаем флаг
        ElseIf bPrint Then
            Debug.Print ar(i) ' печатаем текущий элемент как последний в последовательности
            bPrint = False    ' снимаем флаг
        Else
            bPrint = False    ' снимаем флаг
        End If
    Next i
    If bPrint Then
        ' при установленном флаге печатем последний элемент массива
        Debug.Print ar(i)
    End If
End Sub


А если попарно, то подойдет код от CORBA. Ошибку инициализации массива конечно надо исправить
Весь мир матрица, а мы в нем потоки байтов!

SeT
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 362
Зарегистрирован: 29.12.2004 (Ср) 13:11

Сообщение SeT » 05.02.2006 (Вс) 8:34

В целом спасибо за помощь. Первый код подошёл лучше...
Ещё раз спасибо!
01000100
Причиняет боль 0010
Виртуальная любовь 00100
Индустрия снов 0010

CORBA
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 179
Зарегистрирован: 22.11.2003 (Сб) 13:41
Откуда: Ukraine-Crimea-Feodosia

Сообщение CORBA » 07.02.2006 (Вт) 0:52

!Viper! писал(а): Ошибку инициализации массива конечно надо исправить


Вовсе это не ошибка просто синтаксис VB 2005. :D
У каждой сложной задачи есть множество простых для понимания, но неправильных решений.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 07.02.2006 (Вт) 12:32

CORBA писал(а):
!Viper! писал(а): Ошибку инициализации массива конечно надо исправить


Вовсе это не ошибка просто синтаксис VB 2005. :D


...а дальнейнший код почему то в синтаксисе VB а не VB.NET так где ж ошибка: в инициализации массива или в Debug.Print ибо в VB.NET следовало бы написать Debug.WriteLine? :D
Весь мир матрица, а мы в нем потоки байтов!

CORBA
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 179
Зарегистрирован: 22.11.2003 (Сб) 13:41
Откуда: Ukraine-Crimea-Feodosia

Сообщение CORBA » 09.02.2006 (Чт) 1:51

2 Viper

Да нету там ошибок. И без WriteLine всё прекрасно работает - разве это не показатель, что в коде нет ошибок. :)
У каждой сложной задачи есть множество простых для понимания, но неправильных решений.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot, Yandex-бот и гости: 120

    TopList