Var n, m, sum: integer; begin sum : = 0; repeat writeln('введите числ с которого начинается ряд'); readln(n); writeln('введите число которым заканчивается ряд'); readln(m); until n< m; if odd(n) then n : = n + 1; if odd(m) then m : = m - 1; sum : = (n + m) * (m - n + 2) div 4; writeln('сумма чётных чисел натурального ряда: ', sum); end.
Если ввести X или Y значительно больше чем Z то программа на втором или тертьем условии выдаст false и закончит свою работу ничего не написав. Например: если указать X = 10 , Y = 2, Z = 3; то на первом условии будет true, потому что 10 +2 > 3 , но на третьем условии выдаст false потому что 2+3 < 10 но так как ничего не прописано на этот случай программа просто закончит свою работу. Что бы исправить этот баг необходимо все условия свести в одно: if ((x + y > z)and (x + z > y) and (y + z > x) ) then writeln('треугольник построить можно') else writeln('треугольник построить нельзя'); end.
Это решение так же является ответом на 3-й вопрос.
137 = 1*8^2 + 3*8 +7= 95
1F5 = 1*16^2 + 15*16 +5 = 501