Определить сколько раз последовательность из N произвольных чисел меняет знак. Сохранить в новом файле последовательность одного знака максимальной длины. Паскаль. Не массив

1

Ответы и объяснения

2014-04-15T04:07:27+04:00
Паскаль.

Сменой знака считается переход от отрицательного к нулю, от нуля к положительному, от отрицательного к положительному и наоборот. По крайней мере в условии не сказано обратное.

program progr1;

var count,i,n,x,znak,znak_old:integer;
begin
write('n-> '); readln(n);
count:=0;
for i:=1 to n do
begin
write(i,'-> '); readln(x);
if x < 0 then znak:=-1;
if x>0 then znak:=1;
if x=0 then znak:=0;
if i < > 1 then
if znak < > znak_old then count:=count+1;
znak_old:=znak;
end;
write('count=',count);
readln;
end.
последовательность одного знака максимальной длины
а как это найти?
не оптимально
var i,max,b:integer;
yes:boolean;
begin
yes:=false; K:=0; a:=0; max:=0;
for i:=0 to lst1.Items.Count-2 do
begin
if strtoint(lst1.Items[i])*strtoint(lst1.Items[i+1])<0 then
begin
k:=k+1;
if a>max then begin
max:=a; a:=0; b:=i; end;
end
else
a:=a+1;
end;