Заблокирован

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

16.06.2016, 10:03. Показов 2536. Ответов 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,774
Записей в блоге: 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,774
Записей в блоге: 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,774
Записей в блоге: 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru