Определить сколько раз последовательность из N произвольных чисел меняет знак. Сохранить в новом файле последовательность одного знака максимальной длины. Паскаль. Не массив
Сменой знака считается переход от отрицательного к нулю, от нуля к положительному, от отрицательного к положительному и наоборот. По крайней мере в условии не сказано обратное.
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.
1 votes Thanks 0
sanino1023
последовательность одного знака максимальной длины а как это найти?
sanino1023
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;
Answers & Comments
Сменой знака считается переход от отрицательного к нулю, от нуля к положительному, от отрицательного к положительному и наоборот. По крайней мере в условии не сказано обратное.
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.
а как это найти?
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;