powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Задача vba
25 сообщений из 107, страница 4 из 5
Задача vba
    #39882595
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вдогонку - зачем менять в цикле ПАРАМЕТР ЦИКЛА????
...
Рейтинг: 0 / 0
Задача vba
    #39882665
gembird
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, что не проходите мимо и помогаете студенту.
...
Рейтинг: 0 / 0
Задача vba
    #39888170
gembird
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дан массив A вещественного типа, содержащий 20 положительных и отрицательных элементов. Сформировать массив B из положительных элементов массива A, имеющих четный индекс. Найти сумму квадратов элементов нового массива.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Randomize
Dim a(1 To 20) As Integer, b(1 To 20) As Integer, i As Byte, j As Byte, s As Integer
For i = 1 To 20
    a(i) = 20 * Rnd
    Cells(i, 1) = a(i)
Next i
For i = 1 To 20 Step 2
    If a(i) > 0 Then
        i = i + 1
        b(j) = a(i)
        Cells(i, 2) = b(j)
     End If
Next i
s = 0
j = 0
For j = 1 To 20
    s = s + b(j) * b(j)
    MsgBox (s)
Next j
End Sub


Подскажите пожалуйста, что не так?
...
Рейтинг: 0 / 0
Задача vba
    #39888176
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gembird
Код: vbnet
1.
i = i + 1

ты опять меняешь итератор цикла внутри цикла
...
Рейтинг: 0 / 0
Задача vba
    #39888183
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
опять Excel? T_T
...
Рейтинг: 0 / 0
Задача vba
    #39888192
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и где проверка на чётность?
где отрицательные числа?
где вещественный тип? у вас целые натуральные, а не вещественные числа

всё, что вы сделали выше, можно сделать в 1 цикл, а не в 3

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Function GetRandom(lowerbound As Double, upperbound As Double) As Double
    GetRandom = (upperbound - lowerbound + 1) * Rnd + lowerbound
End Function

Sub OhMyGod()
    Randomize
    Dim a(1 To 20) As Double, b(1 To 20) As Double, i As Byte, j As Byte, s As Double
    
    For i = 1 To 20
        a(i) = GetRandom(-10, 10)
        Cells(i, 1) = a(i)
        If (i Mod 2 = 0) And a(i) > 0 Then
            j = j + 1
            b(j) = a(i)
            Cells(j, 2) = b(j)
            s = s + b(j) ^ 2
        End If
    Next i
    Cells(1, 3) = s
End Sub
...
Рейтинг: 0 / 0
Задача vba
    #39888194
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл, что редактирование добавили :)
...
Рейтинг: 0 / 0
Задача vba
    #39888203
gembird
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes,
Спасибо за ответ, но нам функциями нельзя пользоваться еще ( да я и не умею). Вот что получилось с учетом ваших замечаний.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Randomize
Dim a(1 To 20) As Integer, b(1 To 20) As Integer, i As Byte, j As Byte, s As Integer
For i = 1 To 20
    a(i) = 20 * Rnd
    Cells(i, 1) = a(i)
Next i
For i = 1 To 20
    If a(i) > 0 And (i Mod 2 = 0) Then
        j = j + 1
        b(j) = a(i)
        Cells(j, 2) = b(j)
     End If
Next i
s = 0
j = 0
For j = 1 To 20
    s = s + b(j) ^ 2
    MsgBox (s)
Next j
End Sub


Работает, еще раз спасибо. Про счетчик никак не уложится инфа в голове.
...
Рейтинг: 0 / 0
Задача vba
    #39888205
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
отрицательных чисел нет, могли просто GetRandom заменить выражением и определить вместо параметров константы или переменные
типы чисел не вещественные
как бы всё равно не соответствует поставленной задаче ваш пример, садитесь, два!
...
Рейтинг: 0 / 0
Задача vba
    #39888206
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе, Step 2 тоже было правильно, вместо (i Mod 2 = 0)
Только цикл надо было начинать с 2
...
Рейтинг: 0 / 0
Задача vba
    #39888316
gembird
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дан массив, например, состоящий только из 0 и 1. Определить самое большое количество подряд идущих единиц и вывести на экран индексы начала и конца этого диапазона.
Код: vbnet
1.
2.
3.
For i = 1 To 10
    a(i) = Rnd(10)
    Cells(i, 1) = a(i)


Подскажите куда дальше, если a(i) равно 1 то..?
...
Рейтинг: 0 / 0
Задача vba
    #39888333
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
научитесь мыслить как программист, весь смысл этих задач в этом, если мы будем подсказывать вам всё время, так и останетесь на этом уровне.

объявите
* массив
* переменную текущего индекса элемента "i" (с помощью которого мы будем обходить массив),
* переменную со счетчиком последовательно идущих чисел "l"
* переменную в которой будет храниться индекс начала текущей последовательности "p"
конец последовательности будет равен равен (позиции + размер, p+l)
* переменные начала и и размера самой большой последовательности lMax, pMax
в которую мы будет сохранять промежуточные значения, если они больше ранее сохраненных.
реализуйте
итерацию массива со i=2 позиции и до его правого края, сравнивать текущий элемент с предыдущим на равенство,
если они равны, значит это последовательность и мы увеличиваем l на 1
если они не равны, значит последовательность закончилась, и начинается новая последовательность, но перед этим нужно проверить разницу текущей найденной последовательности с максимальной, если l > lMax, мы сохраняем в переменные lMax и pMax значения l и p соответственно, после чего сбрасываем счетчик l = 0 (так как началась новая последовательность) и запоминаем позицию начала текущей последовательности p = i.
можно не использовать переменную l, так как она будет равна текущей позиции i - p
...
Рейтинг: 0 / 0
Задача vba
    #39888651
gembird
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Dim a(1 To 10) As Byte, i As Byte, k As Byte, Imax As Integer, p As Byte, Pmax As Integer
For i = 1 To 10
    a(i) = Rnd(10)
    Cells(i, 1) = a(i)
Next i
For i = 1 To 10
    If a(i) = 1 Then
        k = k + 1
        If k > Imax And (i = 9 - 1) Then
           Imax = k
            p = i
            Pmax = p - k + 1
        End If
     Else
            k = 0
            
    End If
Next i
   Cells(1, 2) = Imax
    Cells(2, 2) = Pmax
     Cells(3, 2) = Imax + Pmax
End Sub


Вот что получилось, работает, но как-то не очень.
...
Рейтинг: 0 / 0
Задача vba
    #39888669
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gembird,

(i = 9 - 1) вот это выражение вызывает у меня вопросы, что это такое?
для получения границ размерности массив в барсике есть соответствующие строенные функции
...
Рейтинг: 0 / 0
Задача vba
    #39888780
gembird
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В один массив записаны наименования товаров, в другую - их цена. Написать программу, вычисляющую общую стоимость покупки при условии, что пользователь может указывать приобретаемый товар и его количество.
Код: vbnet
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.
Dim a(10) As String, i As Byte, j As Byte
a(1) = "Тетрадь"
a(2) = "Книга"
a(3) = "Ручка"
a(4) = "Линейка"
a(5) = "Карандаш"
a(6) = "Скотч"
a(7) = "Резинка"
a(8) = "Фломастер"
a(9) = "Степлер"
a(10) = "Циркуль"
For i = 1 To 10
    Cells(i, 1) = a(i)
Next i
Dim b(10) As Double
b(1) = 30.7
b(2) = 335.89
b(3) = 70.9
b(4) = 60.85
b(5) = 75
b(6) = 115.5
b(7) = 110
b(8) = 147.3
b(9) = 98.9
b(10) = 220
For j = 1 To 10
    Cells(j, 2) = b(j)
Next j
Dim n As String, q As Double, cost As Double, nam As Double, qualty As Double
n = InputBox("Наименование")
n = nam
q = InputBox("Количество")
q = qualty
cost = 1
For i = 1 To 10
    If a(i) = nam Then
        nam = a(i)
        b(j) = a(i)
         cost = b(j) * qualty
     End If
Next i
MsgBox (cost)
End Sub


Что опять не так в последней части.(((((
...
Рейтинг: 0 / 0
Задача vba
    #39888782
gembird
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В один массив записаны наименования товаров, в другую - их цена. Написать программу, вычисляющую общую стоимость покупки при условии, что пользователь может указывать приобретаемый товар и его количество.
Код: vbnet
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.
Dim a(10) As String, i As Byte, j As Byte
a(1) = "Тетрадь"
a(2) = "Книга"
a(3) = "Ручка"
a(4) = "Линейка"
a(5) = "Карандаш"
a(6) = "Скотч"
a(7) = "Резинка"
a(8) = "Фломастер"
a(9) = "Степлер"
a(10) = "Циркуль"
For i = 1 To 10
    Cells(i, 1) = a(i)
Next i
Dim b(10) As Double
b(1) = 30.7
b(2) = 335.89
b(3) = 70.9
b(4) = 60.85
b(5) = 75
b(6) = 115.5
b(7) = 110
b(8) = 147.3
b(9) = 98.9
b(10) = 220
For j = 1 To 10
    Cells(j, 2) = b(j)
Next j
Dim n As String, q As Double, cost As Double, nam As Double, qualty As Double
n = InputBox("Наименование")
n = nam
q = InputBox("Количество")
q = qualty
cost = 1
For i = 1 To 10
    If a(i) = nam Then
        nam = a(i)
        b(j) = a(i)
         cost = b(j) * qualty
     End If
Next i
MsgBox (cost)
End Sub


Что опять не так в последней части.(((((
...
Рейтинг: 0 / 0
Задача vba
    #39888796
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gembird
Код: vbnet
1.
2.
n = InputBox("Наименование")
n = nam


gembird
Код: vbnet
1.
2.
q = InputBox("Количество")
q = qualty

Зачем ты вызываешь InputBox, если не пользуешься результатом вызова?
...
Рейтинг: 0 / 0
Задача vba
    #39888829
gembird
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Dim n As String, q As Double, cost As Double, nam As Double, qualty As Double
n = InputBox("Наименование")
nam = n
q = InputBox("Количество")
qualty = q
cost = 1
For i = 1 To 10
    If a(i) = nam Then
        nam = a(i)
        b(j) = a(i)
         cost = b(j) * qualty
     End If
Next i
MsgBox (cost)
End Sub
...
Рейтинг: 0 / 0
Задача vba
    #39888834
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gembird
Код: vbnet
1.
nam As Double

почему?

gembird
Код: vbnet
1.
2.
    If a(i) = nam Then
        nam = a(i)

Зачем, если они равны?
...
Рейтинг: 0 / 0
Задача vba
    #39888851
gembird
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Dim n As String, q As Double, cost As Double, nam As String, qualty As Double
n = InputBox("Наименование")
nam = n
q = InputBox("Количество")
qualty = q
cost = 1
For i = 1 To 10
    If a(i) = nam Then
        nam = b(j)
        cost = b(j) * qualty
     End If
Next i
MsgBox (cost)
End Sub
...
Рейтинг: 0 / 0
Задача vba
    #39888860
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gembird
Код: vbnet
1.
cost = 1

То есть если пользователь попытается купить товар, которого нет в наличии, он должен заплатить один рубль?

gembird
Код: vbnet
1.
        nam = b(j)

nam в дальнейшем не используется, смысл его запоминать?

Еще я бы добавил выход из цикла, когда товар найден. Зачем остальные товары проверять?
...
Рейтинг: 0 / 0
Задача vba
    #39890558
gembird
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вывести на экран все числа от 1 до 9999 в десятичной записи которых есть цифра 3.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Dim a As Integer, b As Integer, c As Integer, d As Integer, n As Integer
For a = 0 To 9
  For b = 0 To 9
    For c = 0 To 9
        For d = 1 To 9
            If a = 3 Or b = 3 Or c = 3 Or d = 3 Then
                n = a * 1000 + b * 100 + c * 10 + d
                 Cells(1, 1) = n
            End If
            Next d
        Next c
    Next b
Next a
  
...
Рейтинг: 0 / 0
Задача vba
    #39890564
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gembird
Код: vbnet
1.
Cells(1, 1) = n

?
...
Рейтинг: 0 / 0
Задача vba
    #39890582
gembird
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вывод числа в ячейку.
...
Рейтинг: 0 / 0
Задача vba
    #39890592
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ты и выводишь число в ячейку, потом другое число... и так до последнего.
Ячейка - не бездонная бочка, новое число записал - старое пропало.
...
Рейтинг: 0 / 0
25 сообщений из 107, страница 4 из 5
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Задача vba
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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