Написать программу на паскале (максимально просто)дан массив из n элементов. к найти сумму элементов наибольшей возрастающей последовательности подряд идущих элементов массива.например: (1 15) (3 14 21 36 71) 2 найти их сумму, какая будет больше, ту и вывести, последовательность, должна быть возрастающей и в ней должно быть наибольшее количество элементов.
var n, i, x, min: integer;
begin
n:=12; //задаем количество чисел.
min:=16;//присваиваем минимум по правилу:"Минимуму присваиваем самое большое число".
Randomize;
for i:=0 to n-1 do //цикл для рандома 12 чисел. Можно написать " for i:=1 to n do"
begin
x:=Random(31)-15; //присваиваем перемененной "x" рандомное значение из диапазона [-15;15].
Writeln(x); //выводим значение "x".
if (min > x) and (x mod 2 <> 0) then //если минимум больше полученного "x" и "x" - нечетный, то
min:=x; //минимуму присваиваем значение "x".
end;
Writeln('Наименьшее нечетное число последовательности: ',min); //выводим ответ.
end.
Объяснение:
Что касается ошибки в строке n3, то скорее всего проблема в пропущенной ";".
Исправленная строка: n3:=n div 100;
А что касается задачи, то она не удовлетворяет условию, так как:
1. В строке "n:=n div 10;" переприсваиваете значение переменной "n". То есть, если при начале работы программы мы вводим "999", то в строке "n:=n div 10;" значение переменной "n" уже будет не "999", а "99". От этого идет и другая ошибка.
2. Учитывая предыдущий пункт, то строка "n3:=n div 100" является ошибочной. Потому что переменная "n" равна 99 и, применяя операцию "div 100", получаем "0", так как при целочисленном делении 99 на 100 мы получаем "0". Из-за этого программа будет работать некорректно.
Решение проблем:
Если хотите оставить тот же алгоритм, то следует вместо переменной "n" в строке "n:=n div 10;" использовать другую переменную.
Пример исправной задачи:
Var n,n1,n2,n3, k :integer;
begin
readln (n);
n1:=n mod 10;
k:=n div 10;
n2:=k mod 10;
n3:=n div 100;
if (n1=n2) and (n2=n3) then writeln ('Y') else writeln ('N');
end.