# Задание 1
total = 0
num = int(input())
while num != -1:
total += num
num = int(input())
print(total)
# Задание 2
num = input().split()
num = [int(i) for i in num]
print(max(num))
# Задание 3
from random import randint
num = randint(1, 10)
good = False
for i in range(3):
ans = int(input())
if ans == num:
print('Вы угадали!')
good = True
break
elif ans < num:
print('Загаданное число больше!')
else:
print('Загаданное число меньше!')
if not good:
print(f'Загаданное число - {num}')
Объяснение:
, протестируйте программы, перед тем как их сдавать куда-либо
Дан массив, содержащий 70 целых чисел. Опишите на одном из языков программирования алгоритм,
позволяющий найти и вывести наименьшее содержащееся в массиве положительное число, десятичная
запись которого оканчивается цифрой 7. Гарантируется, что в массиве есть хотя бы один
положительный элемент, десятичная запись которого оканчивается цифрой 7. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но
разрешается не использовать часть из них.
1
2
3
4
5
6
7
8
9
const N=70;
var
a: array [1..N] of integer;
i, j, m: integer;
begin
for i:=1 to N do
что-то подобное?
Первый использовать имеющуюся в этой версии паскаля возможность находить максимумы и минимумы встроенными в язык средствами. Это очень быстро программируется и обычно страхyет от возможных ошибок при написании более детальных программ.
// PascalABC.NET 3.2, сборка 1353 от 27.11.2016
// Внимание! Если программа не работает, обновите версию!
begin
var a:=ArrRandom(30,1,98); a.Println;
Writeln('D=',a.Where(x->x.IsEven).Max-a.Where(x->x.IsOdd).Max)
end.
Пример
29 52 58 75 13 77 63 13 17 6 67 17 53 51 14 93 83 30 81 17 93 58 13 71 78 96 42 66 4 91
D=3
Второй не привязан к упомянутой выше версии языка, т.е. может быть использован в школах, исповедующих "доисторический стиль программирования" ))) Естественно, он длиннее и можно будет сравнить количество строк кода. Алгоритм основан на последовательном переборе элементов массива и одновременном получении максимума среди четных и нечетных его элементов.
const
n=30;
var
a:array[1..30] of integer;
i,a1max,a2max:integer;
begin
Randomize;
a1max:=0; a2max:=0;
for i:=1 to n do begin
a[i]:=Random(98)+1;
Write(a[i],' ');
if a[i] mod 2 <> 0 then
begin if a1max<a[i] then a1max:=a[i] end
else
if a2max<a[i] then a2max:=a[i]
end;
Writeln;
Writeln('D=',a2max-a1max)
end.
Замечу, что данный вариант программы содержит фрагмент, в котором школьники (да и не только школьники) часто делают ошибку.
if a[i] mod 2 <> 0 then
begin if a1max<a[i] then a1max:=a[i] end
else
if a2max<a[i] then a2max:=a[i]
Выделенные мной begin и end на первый взгляд не нужны. Но в этом-то и ошибка!
По правилам языка паскаль когда внутри одного if встречается другой if и хотя бы один из них неполный, т.е. не содержит else, последний else относится к самому последнему из if, который без его будет неполным.
Запутанно? Поясню на нашем фрагменте.
Его без этих begin ... end можно понимать так:
if a[i] mod 2 <> 0 then
if a1max<a[i] then a1max:=a[i]
else
if a2max<a[i] then a2max:=a[i]
Но можно и так:
if a[i] mod 2 <> 0 then
if a1max<a[i] then a1max:=a[i]
else
if a2max<a[i] then a2max:=a[i]
И паскаль, увы, понимает как раз по последнему варианту. Посему как раз begin ... end решают эту проблему. Но... встречается она не очень часто и о ней быстро забывают. А потом нарываютcя и не могут понять причины.
Что ж, выбор как решать - за вами!