Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
369 / 11 / 1
Регистрация: 23.08.2013
Сообщений: 174

Случайный арифметический пример

12.10.2013, 13:14. Показов 1556. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Требуется запрограммировать User форму так, чтобы про нажатии на кнопку в Label отображался случайно выбранный арифметический пример, решаемый в уме. А при втором нажатии этот же пример, но уже с решением. Далее возникал бы новый пример и т. д.
Я закодил это таким образом:
Visual Basic
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
Private Sub CommandButton1_Click()
 
Dim k As Integer 'случ от 1 до 20
Dim l As Integer 'случ от 1 до 20
Dim m As Integer 'случ от 1 до 9
Dim n As Integer 'знак действия
Dim o As Integer 'поряд след-я операндов
Dim p As Integer 'первич. результат
Dim q As Integer '1-й операнд окна
Dim r As String    'знак дейст. окна
Dim s As Integer '2-й операнд окна
Dim t As Integer 'результат окна
 
   k = 1 + 20 * Rnd()
   l = 1 + 20 * Rnd()
   m = 1 + 9 * Rnd()
   n = 4 * Rnd()
   o = 2 * Rnd()
   
Select Case n
   
Case 0
   r = "+"
   p = k + l
   
   
   If o = 1 Then
      q = Application.Max(k, l)
      s = Application.Min(k, l)
   Else
      q = Application.Min(k, l)
      s = Application.Max(k, l)
   End If
   
Case 1
   r = "-"
   p = k + l
   q = p
   
   If o = 1 Then
      s = Application.Max(k, l)
      
   Else
      s = Application.Min(k, l)
      
   End If
   
Case 2
   r = "*"
   p = k * m
   
   
   If o = 1 Then
      q = Application.Max(k, m)
      s = Application.Min(k, m)
   Else
      q = Application.Min(k, m)
      s = Application.Max(k, m)
   End If
      
Case Else
   r = "/"
   p = k * m
   q = p
   
   If o = 1 Then
      s = Application.Max(k, m)
      
   Else
      s = Application.Min(k, m)
      
   End If
   
End Select
 
   If InStr(Label1.Caption, "=") > 0 Then
   
      Label1.Caption = q & r & s
      
   Else
      t = Application.Evaluate("=" & Label1.Caption)
      
      Label1.Caption = Label1.Caption & "=" & t
      
   End If
 
End Sub
Но код конечно примитивный. И примеры вовсе не случайны - при каждом открытии книги они повторяются снова и снова.
А что предложите вы?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.10.2013, 13:14
Ответы с готовыми решениями:

Арифметический пример
Здрасти.Просьба помочь составить формулу и набросать код программы. http://pics.kz/s4/29/e3/da/01/29e3da01dca1c74a199f0f696c84180c.jpg

Арифметический пример
Доброго времени суток! Нужно решить пример ((a^2*b*x)-3)/(b+c) - 5ac + (xc/(a^2*b)), где a, b, c - байты, х, у - слова Не буду лукавить -...

Арифметический пример с циклами
Выбрать алгоритм, составить его блок-схему и программу с использованием оператора цикла for для вычисления и вывода на экран в точках xi ...

15
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
12.10.2013, 15:06
Написать программу для младших школьников, проверяющую знание ими таблицы умножения от 2 до 12

Только ответы там враз по пять (а не по одному) плюс хронометраж минус форма (кнопка прямо в документе).
Цитата Сообщение от Softkhoz Посмотреть сообщение
они повторяются снова и снова
Поставьте сразу после объявлений
Visual Basic
1
Randomize
1
369 / 11 / 1
Регистрация: 23.08.2013
Сообщений: 174
12.10.2013, 15:52  [ТС]
Цитата Сообщение от Sasha_Smirnov Посмотреть сообщение
Поставьте сразу после объявлений
Спасибо, сработало! Но как воспринимает компилятор эту команду (Randomize)? А если бы не было формул k = 20 * Rnd() что было бы случайным в этом коде?
0
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
12.10.2013, 15:58
Ничего.
0
369 / 11 / 1
Регистрация: 23.08.2013
Сообщений: 174
12.10.2013, 16:07  [ТС]
Цитата Сообщение от Sasha_Smirnov Посмотреть сообщение
Ничего.
То есть числа только тогда будут случайными если записана И команда Randomize И формула k = 20 * Rnd()?
0
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
12.10.2013, 16:24
Нет, не так.

Rnd выдаёт случайное число — одно и то же с начала запуска кода, если не делать Randomize.
1
369 / 11 / 1
Регистрация: 23.08.2013
Сообщений: 174
17.10.2013, 21:03  [ТС]
Цитата Сообщение от Sasha_Smirnov Посмотреть сообщение
Rnd выдаёт случайное число — одно и то же с начала запуска кода, если не делать Randomize.
То есть в этом режиме генерируются псевдослучайные числа и через определенное время генератор зациклится. Через какое количество генераций числа пойдут повторно?
0
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
17.10.2013, 23:43
Не через определённое время, а —
Цитата Сообщение от Sasha_Smirnov Посмотреть сообщение
с начала запуска кода
0
369 / 11 / 1
Регистрация: 23.08.2013
Сообщений: 174
18.10.2013, 06:52  [ТС]
Цитата Сообщение от Sasha_Smirnov Посмотреть сообщение
Не через определённое время, а —
А если не запускать код заново, а в текущем запуске сделать большое количество нажатий?
0
 Аватар для Апострофф
9908 / 3928 / 742
Регистрация: 11.10.2011
Сообщений: 5,908
18.10.2013, 07:04
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Softkhoz Посмотреть сообщение
Через какое количество генераций числа пойдут повторно?
А попробовать не получается?
Visual Basic
1
2
3
4
5
6
7
Dim i&, d#
Randomize
d = Rnd
Do
  i = i + 1
Loop Until d = Rnd
Debug.Print i '16777216 (èëè 2^24)
3
369 / 11 / 1
Регистрация: 23.08.2013
Сообщений: 174
19.10.2013, 11:11  [ТС]
Цитата Сообщение от Апострофф Посмотреть сообщение
Dim i&, d#
как объяснить человеческим языком это объявление?
0
 Аватар для Апострофф
9908 / 3928 / 742
Регистрация: 11.10.2011
Сообщений: 5,908
19.10.2013, 11:59
Цитата Сообщение от F1
Long Data Type


Long (long integer) variables are stored as signed 32-bit (4-byte) numbers ranging in value from -2,147,483,648 to 2,147,483,647. The type-declaration character for Long is the ampersand (&).
Цитата Сообщение от Переводчик Google
Тип данных Long******Long (длинное целое) переменные хранятся как 32-битный (4 байта) числа в диапазоне от -2147483648 до 2147483647.Описания типа для Long является амперсанд (&).
Там же можно посмотреть про Double(#), String($), Integer(%), Single(!)...
2
369 / 11 / 1
Регистрация: 23.08.2013
Сообщений: 174
19.10.2013, 14:56  [ТС]
Цитата Сообщение от Апострофф Посмотреть сообщение
Там же можно посмотреть про Double(#), String($), Integer(%), Single(!)...
это все равно не объясняет принцип работы кода, который подсчитывает количество генераций случайного числа до зацикливания генератора. Если вам не сложно, добавьте комментарии.

Добавлено через 5 минут
Делать i=i+1 пока условие d=Rnd ложно? А с чего это вдруг оно когда нибудь станет истинным?
0
 Аватар для Апострофф
9908 / 3928 / 742
Регистрация: 11.10.2011
Сообщений: 5,908
19.10.2013, 17:06
Цитата Сообщение от Softkhoz Посмотреть сообщение
А с чего это вдруг оно когда нибудь станет истинным?
Испытайте (в VB(А)) и отпишитесь, плиииз...
1
369 / 11 / 1
Регистрация: 23.08.2013
Сообщений: 174
20.10.2013, 10:42  [ТС]
Цитата Сообщение от Апострофф Посмотреть сообщение
Испытайте (в VB(А))
Вот выводы из испытаний:
1.Строка Debug.Print i ничего не дает. Приходится применять остановку (F9).
2.Наличие или отсутствие надписи Randomize не влияет на результат.
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
20.10.2013, 13:58
Мне все-таки кажется, что Debug.Print показывает, что i=vbnullstring. Иначе это уже какое-то фэнтэзи. А остановка не должна влиять никак.

Добавлено через 2 минуты
Забыл. Можете перепроверить через watch window или locals window.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.10.2013, 13:58
Помогаю со студенческими работами здесь

Решите арифметический пример
Здраствуйте, решите, пожалуйста, арифметический пример 1) y=a+b-c*d/e, ну никак не получается)

Перевод строки в арифметический пример
Подскажите пожалуйста, как можно перевести строку типа char в которой записан пример в обычный пример и решить его, я что-то ни как не могу...

Проверьте арифметический пример(не уверен в его правильности)
Написал код примера, однако в источнике не было правильного ответа. Прошу сверить вас код с фото(условие). Вопросы возникают с самым первым...

Записать арифметический пример в виде строки в лист
Добрый день, есть такой код: using System; using System.Collections.Generic; using System.Linq; using System.Text; using...

Дан ряд, который изображает арифметический пример, вывести результат
У меня чего то не получаеться перевести с паскаля на си задачи по строкам! var a: array of char; p, t, c: integer; i, k:...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru