Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Заблокирован

Что в голове у Visual Basic 6.0?

16.06.2016, 10:03. Показов 2525. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Прошу помощи. Не понимаю, что в голове у Visual Basic 6.0?
Пусть дан массив двузначных чисел через пробел:
23 76 12 98 67 82 15 16 61 58

"Мудрствование" через генератор и перебор — уже набило оскомину своей тривиальностью.
Упрощаем:
Visual Basic
1
2
s = Split(InputBox("Введите  10  чисел, разделённых пробелами", , "23 76 12 98 67 82 15 16 61 58
"))
Суть вопроса (проблемы):
1) Как мне указать VB6 — только коротко, сложи три крайние справа числа?
2) Или так, сложи три числа под индексами: 3, 7 и 8 (по смыслу: 12 + 15 + 16 = 43 — как сумма минимальных).


Вижу по Интернету, вопрос всё чаще встаёт ребром — а люди стесняются спросить напрямую.

Мне не нравятся долгие и утомительные алгоритмы, например как в теме Массив: Найти сумму трех минимальных из массива двузначных чисел — по-моему, схоластика чистой воды. Нет красивой и оригинальной идеи.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.06.2016, 10:03
Ответы с готовыми решениями:

Где бесплатно скачать учебник по Visual Basic 6 и Visual Basic .Net ?
Где бесплатно скачать учебник по Visual Basic 6 и Visual Basic .Net

Вычисление значений функции двух переменных в Visual Basic - Visual Basic
Помогите пожалуйста! В среде VB написать программу вычисления значений функции двух переменных. Ориентировочный вид окна программы и...

Что можно сделать на Visual Basic?
Мне интересно что можно сделать на Visual Basic .net.

40
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
16.06.2016, 14:19
Студворк — интернет-сервис помощи студентам
Чтобы далеко не уходить от VB-6 и не заблудиться в VB-Net
Цитата Сообщение от Infinity20_5 Посмотреть сообщение
Или так, сложи три числа под индексами: 3, 7 и 8
Visual Basic
1
2
3
4
Sub Сложение()
    a = Split(InputBox("Введите  10  чисел, разделённых пробелами", , "23 76 12 98 67 82 15 16 61 58"))
    MsgBox CLng(a(3)) + CLng(a(7)) + CLng(a(8))
End Sub
Миниатюры
Что в голове у Visual Basic 6.0?  
Изображения
 
1
Заблокирован
16.06.2016, 14:29  [ТС]
Цитата Сообщение от Hikari Посмотреть сообщение
Вот я ж и говорю что с помощью LINQ в VB.NET можно решить твою задачу в практически одну строчку без видимых циклов. Да в случае второй задачи нужно указать индексы, но это можно сделать и рамках запроса. Не верю я что VB.NET такое не сможет
Hikari, опять прошу продемонстрировать эту возможность с помощью кода и скринов, для зрительного восприятия и проверки.
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
16.06.2016, 14:34
вот еще вариантик

Visual Basic
1
2
3
4
Sub Сложение(ParamArray Введите_сюда_3_числа_через_Запятую())
    i = Введите_сюда_3_числа_через_Запятую
    MsgBox i(1) + i(2) + i(3)
End Sub
1
Заблокирован
16.06.2016, 14:47  [ТС]
Цитата Сообщение от fever brain Посмотреть сообщение
Чтобы далеко не уходить от VB-6 и не заблудиться в VB-Net
Цитата Сообщение от Infinity20_5 Посмотреть сообщение
Или так, сложи три числа под индексами: 3, 7 и 8
Visual Basic
Выделить код

Sub Сложение()
a = Split(InputBox("Введите 10 чисел, разделённых пробелами", , "23 76 12 98 67 82 15 16 61 58"))
MsgBox CLng(a(3)) + CLng(a(7)) + CLng(a(8))
End Sub
fever brain, где у меня ошибка в коде?
VB.NET
1
2
3
4
5
6
Option Explicit
Private Sub Command1_Click()
Dim s$(), a&()
s = Split(InputBox("Введите  10  чисел, разделённых пробелами", , "23 76 12 98 67 82 15 16 61 58"))
MsgBox (CLng(a(3)) + CLng(a(7)) + CLng(a(8)))
End Sub
Миниатюры
Что в голове у Visual Basic 6.0?  
0
Хитрая блондиночка $)
 Аватар для Hikari
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
16.06.2016, 14:59
Цитата Сообщение от Infinity20_5 Посмотреть сообщение
опять прошу продемонстрировать эту возможность с помощью кода и скринов, для зрительного восприятия и проверки.
У меня кроме Mono Online нет другого компилятора увы. Продемонстрировала бы, мои коллеги кто хорошо знает VB сказали что это вполне возможно, но инструментов написать у меня нет под рукой, потому общий принцип на шарпе и внесла в тему.
1
Заблокирован
16.06.2016, 15:10  [ТС]
Исправил ошибку. Но в голове Visual Basic 6.0 под этими индексами совсем другие числа.
Должно получиться 43, а не 175!
Visual Basic
1
2
3
4
5
6
Option Explicit
Private Sub Command1_Click()
Dim a$()
a = Split(InputBox("Введите  10  чисел, разделённых пробелами", , "23 76 12 98 67 82 15 16 61 58"))
MsgBox (CLng(a(3)) + CLng(a(7)) + CLng(a(8)))
End Sub
Миниатюры
Что в голове у Visual Basic 6.0?  
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
16.06.2016, 15:28
Цитата Сообщение от Infinity20_5 Посмотреть сообщение
fever brain, где у меня ошибка в коде?
Переведите с английского что написанно в ошибке, поскажу только одно
что вы пытаетесь получить чтото от пустого массива который неизвестно для чего объявлен

зачем вам мои нудные знания, пробуйте сами, и всё само рассосётся
1
Заблокирован
16.06.2016, 15:56  [ТС]
Мы задаём такой порядок
23 + 76 + 12 + 98 + 67 + 82 + 15 + 16 + 61 + 58 = 508
А у него в голове такой порядок, ниже. Кто сможет объяснить?
(a(1)) = 76; (a(2)) = 12; (a(3)) = 98; (a(4)) = 67; (a(5)) = 82; (a(6)) = 15; (a(7)) = 16; (a(8)) = 61; (a9)) = 58; (a(10)) = 23.

Наверно, надо предварительно попросить, чтобы он показал свой порядок (свои карты), а потом "играть с ним в дурачка".
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
16.06.2016, 16:07
Лучший ответ Сообщение было отмечено Infinity20_5 как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
Function c32(s, k)
a = Split(s): b = Split(k)
For i = 0 To UBound(b)
c32 = c32 + Val(a(b(i) - 1))
Next i
End Function
Private Sub Command1_Click()
s = "23 76 12 98 67 82 15 16 61 58"
Print c32(s, "3 7 8")
End Sub
1
Заблокирован
16.06.2016, 16:18  [ТС]
Всем спасибо! Догадался (a(10)) = 23 — нет, а есть (a(0)) = 23. Индексация с нуля!

Добавлено через 9 минут
Сумма: 12 + 15 + 16 = 43
Visual Basic
1
2
3
4
5
6
Option Explicit
Private Sub Command1_Click()
Dim a$()
a = Split(InputBox("Введите  10  чисел, разделённых пробелом", , "23 76 12 98 67 82 15 16 61 58"))
MsgBox (CLng(a(2)) + CLng(a(6)) + CLng(a(7)))
End Sub
0
Заблокирован
16.06.2016, 16:37  [ТС]
Цитата Сообщение от gaw Посмотреть сообщение
Function c32(s, k)
gaw!
Спасибо!! Пытался объявить все (!) переменные в Option Explicit, не справился. Интересно, как правильно?
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Function c32(s, k)
'Dim
a = Split(s): b = Split(k)
For i = 0 To UBound(b)
c32 = c32 + Val(a(b(i) - 1))
Next i
End Function
Private Sub Command1_Click()
'Dim
s = "23 76 12 98 67 82 15 16 61 58"
Print c32(s, "3 7 8")
End Sub
Миниатюры
Что в голове у Visual Basic 6.0?  
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38228 / 21160 / 4314
Регистрация: 12.02.2012
Сообщений: 34,773
Записей в блоге: 14
16.06.2016, 17:25
Infinity20_5, одной строкой не получится, а четырьмя - вполне:

Visual Basic
1
2
3
4
5
Function SumByNum(A as Variant, p() as Variant) As Double
     for i%=1 to Ubound(p,1))
         SumByNum=SumByNum+A(P(i%))
     next i%
End function
Ну, и вызов:

Visual Basic
1
       Debug.print SumByNum(Array(2,3,4,11,22,33),Array(1,2,3,5))
1
Заблокирован
16.06.2016, 18:42  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
Infinity20_5, одной строкой не получится, а четырьмя - вполне
Catstail!
Совсем не понимаю Ваш код. Пытался вставить его как обычно через "Разработчика" — толку нет.

Начал его кроить, резать и подгонять под Visual Basic 6.0 (без Option Explicit) — тот же результат, не идёт шайба в ворота.
Ниже остатки Вашего кода, не знаю — как его проверить.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub Command1_Click()
Dim A$()
p = Split(InputBox("Введите  10  чисел, разделённых пробелами", , "23 76 12 98 67 82 15 16 61 58"))
ReDim A(0 To UBound(p))
    For i% = 1 To UBound(p, 1)
         SumByNum = SumByNum + A(p(i%))
    Next i%
Print SumByNum(A(2, 3, 4, 11, 22, 33), A(1, 2, 3, 5))
End Sub
 
Function SumByNum(A As Variant, p() As Variant) As Double
     For i% = 1 To UBound(p, 1)
         SumByNum = SumByNum + A(p(i%))
     Next i%
End Function
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
16.06.2016, 19:48
Visual Basic
1
2
3
4
5
6
7
8
9
10
Option Explicit
Dim i% ' As Integer
Function SumByNum(A As Variant, p As Variant) As Double
     For i = 1 To UBound(p, 1)
         SumByNum = SumByNum + A(p(i%))
     Next
End Function
Private Sub Form_Load()
    MsgBox SumByNum(Array(2, 3, 4, 11, 22, 33), Array(1, 2, 3, 5))
End Sub
Ну как-то так

В первом массиве Array ввод чисел, во втором как-бэ указания на индексы для сложения

На мой взгляд Очень оригинально 5+
Только мне кажется надо было так писать:
Visual Basic
1
2
3
4
5
6
Function SumByNum(A As Variant, p As Variant) As Double
     For i = 0 To UBound(p)
        Debug.Print p(i), A(p(i)) 'Для бОльшей наглядности
         SumByNum = SumByNum + A(p(i))
     Next i%
End Function
2
Заблокирован
16.06.2016, 21:48  [ТС]
Цитата Сообщение от fever brain Посмотреть сообщение
Только мне кажется надо было так писать
fever brain!
Спасибо. Получается Ваш код точнее, поскольку даёт — верный результат 51, проверял вручную.
А в коде Catstail скрыта какая-то ошибка — неверный результат 48.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Option Explicit
Dim i% ' As Integer
Function SumByNum(A As Variant, p As Variant) As Double
     For i = 1 To UBound(p, 1)
         SumByNum = SumByNum + A(p(i%))
     Next
End Function
Private Sub Form_Load()
    MsgBox SumByNum(Array(2, 3, 4, 11, 22, 33), Array(1, 2, 3, 5))
End Sub
 
' 48 <> 3 + 4 + 11 + 33 = 51 Catstail
' 51 = 3 + 4 + 11 + 33 = 51 fever brain
Миниатюры
Что в голове у Visual Basic 6.0?   Что в голове у Visual Basic 6.0?  
1
Заблокирован
17.06.2016, 00:11  [ТС]
Цитата Сообщение от Hikari Посмотреть сообщение
Я правильно тебя понимаю, аналог из С#
C#
Выделить код
1 int[] a={1,2,3,4,5,6,7,8,9,0};
2 Console.WriteLine("{0}",a.Reverse().Take (3).Sum());
3 Console.Write("{0}\n",a.Select((i,v)=>ne w {v,i}).Where(k=>k.v==2 || k.v==6 || k.v==7).Sum(s=>s.i)
В VB.NET совсем совсем невозможен?
Hikari!
Правильно ли Вас понял? Верно ли записал код шарпа? Что означают числа на консоли: 17 и 18?
Объясните, пожалуйста, простыми словами в доступной для понимания форме.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {int[] a={1,2,3,4,5,6,7,8,9,0};
        Console.WriteLine("{0}",a.Reverse().Take(3).Sum());
        Console.Write("{0}\n",a.Select((i,v)=>new {v,i}).Where(k=>k.v==2 || k.v==6 || k.v==7).Sum(s=>s.i));
        }
    }
}
Миниатюры
Что в голове у Visual Basic 6.0?   Что в голове у Visual Basic 6.0?  
0
Хитрая блондиночка $)
 Аватар для Hikari
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
17.06.2016, 07:39
Цитата Сообщение от Infinity20_5 Посмотреть сообщение
Что означают числа на консоли: 17 и 18?
17 это сумма трех последних.
18 это сумма 3, 7 и 8 элементов (если в индексах не ошиблась)
Цитата Сообщение от Infinity20_5 Посмотреть сообщение
Объясните, пожалуйста, простыми словами в доступной для понимания форме.
Цитата Сообщение от Infinity20_5 Посмотреть сообщение
a.Reverse().Take(3).Sum()
Обратить массив, и после обращения взять первые три элемента. После просуммировать их.
Цитата Сообщение от Infinity20_5 Посмотреть сообщение
a.Select((i,v)=>new {v,i}).Where(k=>k.v==2 || k.v==6 || k.v==7).Sum(s=>s.i))
Отобрать из массива с учетом индексов элементов таким образом, только элементы с индексами с номерами 2 6 и 7. Отобранное просуммировать.
Еще подробнее не получится, нужно LINQ изучать по книгам.

P.S. И кстати, это же не бейсик. Как на бейсике записывается я увы не скажу, но на MSDN примеры есть.
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38228 / 21160 / 4314
Регистрация: 12.02.2012
Сообщений: 34,773
Записей в блоге: 14
17.06.2016, 09:24
Цитата Сообщение от Infinity20_5 Посмотреть сообщение
Совсем не понимаю Ваш код. Пытался вставить его как обычно через "Разработчика" — толку нет.
- да, у меня есть пара ошибок. Не проверил. Вот:

Visual Basic
1
2
3
4
5
6
7
8
9
Function SumByNum(A As Variant, P As Variant) As Double
     For i% = 0 To UBound(P, 1)
         SumByNum = SumByNum + A(P(i%))
     Next i%
End Function
 
Sub test()
    Debug.Print SumByNum(Array(11, 22, 33, 44, 55, 66, 77), Array(0, 2, 3))
End Sub
Миниатюры
Что в голове у Visual Basic 6.0?  
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38228 / 21160 / 4314
Регистрация: 12.02.2012
Сообщений: 34,773
Записей в блоге: 14
17.06.2016, 09:26
fever brain, да, спасибо! Вы исправили мои ошибки!
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
17.06.2016, 09:54
Цитата Сообщение от Hikari Посмотреть сообщение
И кстати, это же не бейсик. Как на бейсике записывается я увы не скажу
Всё в порядке, приятно было пообщаться, заходи еще )
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.06.2016, 09:54

Что дает MSDN for visual basic 6.0?
у меня такой вопрос: я установила visual basic 6.0, но при запуске программы он постоянно мне пишет ошибку! Может нужно что-то к нему еще...

Visual Basic 6 и Visual Basic .NET - в чем различия?
Visual Basic и Visual studio это не одно и тоже? если нет то в чём разница, по мимо оформления?

Visual Basic .Net и Visual Basic 6.0 - В чём разница
В общем возник вопрос: Visual Bisic.Net и Visual Basic - это два разных языка, или же .NET версия это лишь его улучшение. Я так понимаю что...

Что учить после Visual Basic"а ?
Сейчас обучаюсь Visual Basic как первый язык программирования. Через пару месяцев пробиваясь сквозь лень и преграды по обучению и теперь...

Что лучше: Visual Basic или Delphi?
Давно хочу спросить: что лучше для нормального программирования, то есть и для написания специального блокнота и для Quake3. Кто что знает,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru