Определить числа, сумма которых равна 300 - QBasic
Формулировка задачи:
Дано 9 рандомных чисел. И надо вынести на экран
те из них, что в сумме дадут число 300.
Листинг программы
- REM
- REM Рандомно задается 9 чисел
- REM Надо выяснить в каком сочетании сумма этих
- REM чисел равна наперед заданному числу S = 300
- REM Примечание:
- REM Если решений несколько,
- REM то вывести все решения на экран
- REM
- DEFLNG I, M, S
- RANDOMIZE TIMER
- CLS
- DIM m(1 TO 9)
- FOR i = 1 TO 9
- m(i) = 89 * RND + 10
- PRINT m(i);
- NEXT i: PRINT : PRINT
- FOR i1 = 0 TO 1
- FOR i2 = 0 TO 1
- FOR i3 = 0 TO 1
- FOR i4 = 0 TO 1
- FOR i5 = 0 TO 1
- FOR i6 = 0 TO 1
- FOR i7 = 0 TO 1
- FOR i8 = 0 TO 1
- FOR i9 = 0 TO 1
- s = 0
- s = s + m(1) * i1 + m(2) * i2 + m(3) * i3
- s = s + m(4) * i4 + m(5) * i5 + m(6) * i6
- s = s + m(7) * i7 + m(8) * i8 + m(9) * i9
- IF s = 300 THEN
- IF i1 THEN PRINT m(1);
- IF i2 THEN PRINT m(2);
- IF i3 THEN PRINT m(3);
- IF i4 THEN PRINT m(4);
- IF i5 THEN PRINT m(5);
- IF i6 THEN PRINT m(6);
- IF i7 THEN PRINT m(7);
- IF i8 THEN PRINT m(8);
- IF i9 THEN PRINT m(9);
- END IF
- NEXT i9, i8, i7, i6, i5, i4, i3, i2, i1
- END
Решение задачи: «Определить числа, сумма которых равна 300»
textual
Листинг программы
- Sub Main()
- Dim X(0 To 8) As Integer
- Dim P(0 To 8) As Integer
- Randomize
- For i% = 0 To 8
- X(i%) = Rnd() * 100
- Next i%
- For i% = 1 To 511
- s% = 0
- k% = 1
- For j% = 0 To 8
- If i% And k% Then
- s% = s% + X(j%)
- P(j%) = 1
- Else
- P(j%) = 0
- End If
- k% = k% * 2
- Next j%
- If s% = 300 Then
- For j% = 0 To 8
- If P(j%) Then Debug.Print X(j%); " ";
- Next j%
- Debug.Print
- End If
- Next i%
- End Sub
Объяснение кода листинга программы
- Объявлены две матрицы: X и P. Обе матрицы имеют размерность 0-8 и содержат целочисленные значения.
- Задана начальная и конечная сумма для каждой строки матрицы P.
- В каждой строке матрицы X случайным образом генерируются числа от 0 до 100.
- Переменная i используется для перебора всех возможных комбинаций чисел от 0 до 8.
- Переменная s используется для хранения суммы чисел в текущей строке.
- Переменная k используется для перебора всех возможных комбинаций чисел от 0 до 8.
- Если i и k равны 1, то текущее значение X добавляется к s.
- Если i и k равны 0, то переменная P получает значение 0.
- Если i и k равны 1, то переменная P получает значение 1.
- Значение k умножается на 2.
- Если s равно 300, то выводится текущая строка чисел.
- Значение i умножается на 1 и добавляется к номеру строки.
- Если P равно 1, то выводится текущее значение X.
- Значение i умножается на 8 и добавляется к номеру столбца.
- Значение i умножается на 1 и добавляется к номеру строки.
- Значение i умножается на 8 и добавляется к номеру столбца.
- Если P равно 0, то выводится текущее значение X.
- Значение i умплицируется на 8 и добавляется к номеру строки.
- Значение i умплицируется на 1 и добавляется к номеру столбца.
- Значение i умплицируется на 8 и добавляется к номеру строки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д