Составьте блок-схему и программу на языке vba, которая вычисляет сумму положительных чисел из введенной с клавиатуры последовательности целых чисел (длина последовательности не ограничена). признаком конца последовательности является ввод нуля.
Sub My_VBA() s = 0 Do n = InputBox("введите число, 0 - конец ввода") If n > 0 Then s = s + n Loop Until n = 0 MsgBox "Сумма положительных чисел равна " + Str(s) End Sub
Begin var a: array [,] of integer := ( (1, 10, 100), (1, 10, 200), (1, 9, 100), (1, 9, 100));
var max := integer.MinValue; var countmax := 0; var min := integer.MaxValue; var countmin := 0; var counter := 0; for var j := 0 to a.GetLength(1) - 1 do begin counter += 1; var c := 0; for var i := 0 to a.GetLength(0) - 1 do begin c += a[i, j] end; if max < c then begin max := c; countmax := counter; end; if min > c then begin min := c; countmin := counter; end; end; writeln('Столбик с наибольшей суммой - ', countmax); writeln('Столбик с наименьшей суммой - ', countmin); end.
Используем бэктрекинг (англ. backtracking - обратное прослеживание). Необходимо оставить противнику 1 фишку с тем, чтобы он был вынужден взять её и проиграть. Для этого надо самому иметь позицию, в которой имеется от 2 до 5 фишек (чтобы взяв допустимый 1-4 фишки, оставить одну). Чтобы вынудить противника оставить 2-5 фишек, надо создать ему позицию с 6 фишками (6-1=5, 6-4=2). Позицию с 6 фишками мы можем создать, имея 7-10 фишек. Исходное количество фишек - 11. Если первый ход у противника, он забирает от 1 до 4 фишек и предоставляет нам как раз необходимые для выигрыша 7-10 фишек. Итак, при первом ходе противника нашей стратегией будет оставить противнику шесть фишек, а затем одну. Если первый ход наш, то при правильной игре противника выигрыш невозможен. При неправильной - стараться перейти к выигрышной стратегии (6 и 1 фишка).
s = 0
Do
n = InputBox("введите число, 0 - конец ввода")
If n > 0 Then s = s + n
Loop Until n = 0
MsgBox "Сумма положительных чисел равна " + Str(s)
End Sub
Блок-схема во вложении