Определить числа, сумма которых равна 300 - QBasic

Узнай цену своей работы

Формулировка задачи:

Дано 9 рандомных чисел. И надо вынести на экран те из них, что в сумме дадут число 300.
Листинг программы
  1. REM
  2. REM Рандомно задается 9 чисел
  3. REM Надо выяснить в каком сочетании сумма этих
  4. REM чисел равна наперед заданному числу S = 300
  5. REM Примечание:
  6. REM Если решений несколько,
  7. REM то вывести все решения на экран
  8. REM
  9. DEFLNG I, M, S
  10. RANDOMIZE TIMER
  11. CLS
  12. DIM m(1 TO 9)
  13. FOR i = 1 TO 9
  14. m(i) = 89 * RND + 10
  15. PRINT m(i);
  16. NEXT i: PRINT : PRINT
  17. FOR i1 = 0 TO 1
  18. FOR i2 = 0 TO 1
  19. FOR i3 = 0 TO 1
  20. FOR i4 = 0 TO 1
  21. FOR i5 = 0 TO 1
  22. FOR i6 = 0 TO 1
  23. FOR i7 = 0 TO 1
  24. FOR i8 = 0 TO 1
  25. FOR i9 = 0 TO 1
  26. s = 0
  27. s = s + m(1) * i1 + m(2) * i2 + m(3) * i3
  28. s = s + m(4) * i4 + m(5) * i5 + m(6) * i6
  29. s = s + m(7) * i7 + m(8) * i8 + m(9) * i9
  30. IF s = 300 THEN
  31. IF i1 THEN PRINT m(1);
  32. IF i2 THEN PRINT m(2);
  33. IF i3 THEN PRINT m(3);
  34. IF i4 THEN PRINT m(4);
  35. IF i5 THEN PRINT m(5);
  36. IF i6 THEN PRINT m(6);
  37. IF i7 THEN PRINT m(7);
  38. IF i8 THEN PRINT m(8);
  39. IF i9 THEN PRINT m(9);
  40. PRINT
  41. END IF
  42. NEXT i9, i8, i7, i6, i5, i4, i3, i2, i1
  43. END

Решение задачи: «Определить числа, сумма которых равна 300»

textual
Листинг программы
  1. Sub Main()
  2. Dim X(0 To 8) As Integer
  3. Dim P(0 To 8) As Integer
  4.     Randomize
  5.     For i% = 0 To 8
  6.         X(i%) = Rnd() * 100
  7.     Next i%
  8.     For i% = 1 To 511
  9.         s% = 0
  10.         k% = 1
  11.         For j% = 0 To 8
  12.             If i% And k% Then
  13.                s% = s% + X(j%)
  14.                P(j%) = 1
  15.             Else
  16.                P(j%) = 0
  17.             End If
  18.             k% = k% * 2
  19.         Next j%
  20.         If s% = 300 Then
  21.            For j% = 0 To 8
  22.                If P(j%) Then Debug.Print X(j%); " ";
  23.            Next j%
  24.            Debug.Print
  25.         End If
  26.     Next i%
  27. End Sub

Объяснение кода листинга программы

  1. Объявлены две матрицы: X и P. Обе матрицы имеют размерность 0-8 и содержат целочисленные значения.
  2. Задана начальная и конечная сумма для каждой строки матрицы P.
  3. В каждой строке матрицы X случайным образом генерируются числа от 0 до 100.
  4. Переменная i используется для перебора всех возможных комбинаций чисел от 0 до 8.
  5. Переменная s используется для хранения суммы чисел в текущей строке.
  6. Переменная k используется для перебора всех возможных комбинаций чисел от 0 до 8.
  7. Если i и k равны 1, то текущее значение X добавляется к s.
  8. Если i и k равны 0, то переменная P получает значение 0.
  9. Если i и k равны 1, то переменная P получает значение 1.
  10. Значение k умножается на 2.
  11. Если s равно 300, то выводится текущая строка чисел.
  12. Значение i умножается на 1 и добавляется к номеру строки.
  13. Если P равно 1, то выводится текущее значение X.
  14. Значение i умножается на 8 и добавляется к номеру столбца.
  15. Значение i умножается на 1 и добавляется к номеру строки.
  16. Значение i умножается на 8 и добавляется к номеру столбца.
  17. Если P равно 0, то выводится текущее значение X.
  18. Значение i умплицируется на 8 и добавляется к номеру строки.
  19. Значение i умплицируется на 1 и добавляется к номеру столбца.
  20. Значение i умплицируется на 8 и добавляется к номеру строки.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы