3) Снова запускаю,и уже не содаю,а просматриваю(нажимаю 3),затем обрабатываю,вожу то же число. просматриваю результат,и вижу что колличество не как тогда,2,а уже 0.
(* Нужно ввести последовательность. Среди элементов найти количество противополжных пар,
например "3 5 -3 -5" количество равно 2.
Еще одно условие,нужно ввести число и вывести те элементы,которые делятся на него и не
делится на это число в квадрате.
Я эту задачу решила,но у меня возникает ошибка,когда я заново
запускаю файл(где находится уже созданная последовательность),и просматриваю его,
потом обрабатываю,и вывожу результат,но у меня всегда пишет колличество пар =0.
Помогите исправить ошибки.
*)
program rast;
uses crt;
type fi1=file of integer;
var f,f1,f2,f3,f4:fi1;
i,m,n,l,k,e,w,y,q:integer;
x,b,c,u:array [1..4] of integer;
procedure vvod(var op:fi1);
begin
rewrite(op);
write('n=');
readln(n);
i:=0;
for i:=1 to n do
begin
read(x[i]);
write(op,x[i]);
end;
close(op);
end;
procedure chet(var op:fi1; var op3,new,new3:fi1);
begin
reset(op);
n:=filesize(op);
k:=0;l:=0;
write('Vvedi chislo M:');
readln(m);
for i:=1 to n do
begin
read(op,x[i]);
for l:=i to n do
if x[i]=-x[l] then
k:=k+1;
end;
close(op);
reset(op);
rewrite(new);
e:=0;
y:=0;
while not(eof(op)) do
begin
read(op,x[i]);
if (x[i] mod m)=0 then
begin
y:=y+1;
e:=e+1;
c[e]:=x[i];
write(new,c[e]);
end;
end;
close(op);
close(new);
reset(op);
rewrite(new3);
w:=0;
q:=0;
while not(eof(op)) do
begin
read(op,x[i]);
if x[i] mod sqr(m) <>0 then
begin
w:=w+1;
q:=q+1;
u[q=]:=x[i];
write(new3,u[q=]);
end;
end;
close(new3);
rewrite(op3);
write(op3,k);
close(op3);
close(op);
end;
procedure prosmotr(var op:fi1);
(*---- begin ----*)
var
i: integer;
(*---- end ------*)
begin
reset(op);
write('new file: ');
(*---- begin ----*)
i:= 0;
(*---- end ------*)
while not(eof(op)) do
begin
(*---- begin ----*)
i := i+1;
(*---- end ------*)
read(op,x[i]);
write(' ',x[i]);
end;
writeln;
(*---- begin ----*)
readln;
(*---- end ------*)
close(op);
end;
procedure rezul(var op3,new,new3:fi1);
begin
write('Kolichestvo x[i]=-x[i] par: ');
reset(op3);
read(op3,k);
write(k,' ');
writeln;
writeln;
reset(new);
y:=filesize(new);
write('Elementi / na M: ');
for e:=1 to y do
begin
read(new,c[e]);
write(c[e],' ');
end;
writeln;
writeln;
write('elementi ne / na sqr(M): ');
(*---- begin ----*)
readln;
(*---- end ------*)
reset(new3);
w:=filesize(new3);
for q:=1 to w do
begin
read(new3,u[q=]);
write(u[q=],' ');
end;
(*---- begin ----*)
close(new3);
close(op3);
close(new);
(*---- end ------*)
end;
begin
clrscr;
randomize;
assign(f,'fil');
assign(f1,'fil1');
assign(f2,'fil2');
assign(f3,'fil3');
assign(f4,'fil4');
l:=-1;
while(l<>0) do
begin
clrscr;
writeln('1 - new file');
writeln('2 - obrabotka');
writeln('3 - prosmotr file');
writeln('4 - prosmotr rezyltata');
writeln('0 - exit');
readln(l); (* ----------- *)
if (l>5) then writeln('error!!!');
case l of
1:vvod(f);
2:chet(f,f2,f3,f4);
3:prosmotr(f);
4:rezul(f2,f3,f4);
0:exit;
end;
end;
readkey;
end.
(* Нужно ввести последовательность. Среди элементов найти количество противополжных пар,
например "3 5 -3 -5" количество равно 2.
Еще одно условие,нужно ввести число и вывести те элементы,которые делятся на него и не
делится на это число в квадрате.
Я эту задачу решила,но у меня возникает ошибка,когда я заново
запускаю файл(где находится уже созданная последовательность),и просматриваю его,
потом обрабатываю,и вывожу результат,но у меня всегда пишет колличество пар =0.
Помогите исправить ошибки.
*)
program rast;
uses crt;
type fi1=file of integer;
var f,f1,f2,f3,f4:fi1;
i,m,n,l,k,e,w,y,q:integer;
x,b,c,u:array [1..4] of integer;
procedure vvod(var op:fi1);
begin
rewrite(op);
write('n=');
readln(n);
i:=0;
for i:=1 to n do
begin
read(x[i]);
write(op,x[i]);
end;
close(op);
end;
procedure chet(var op:fi1; var op3,new,new3:fi1);
begin
reset(op);
n:=filesize(op);
k:=0;l:=0;
write('Vvedi chislo M:');
readln(m);
for i:=1 to n do
begin
read(op,x[i]);
for l:=i to n do
if x[i]=-x[l] then
k:=k+1;
end;
close(op);
reset(op);
rewrite(new);
e:=0;
y:=0;
while not(eof(op)) do
begin
read(op,x[i]);
if (x[i] mod m)=0 then
begin
y:=y+1;
e:=e+1;
c[e]:=x[i];
write(new,c[e]);
end;
end;
close(op);
close(new);
reset(op);
rewrite(new3);
w:=0;
q:=0;
while not(eof(op)) do
begin
read(op,x[i]);
if x[i] mod sqr(m) <>0 then
begin
w:=w+1;
q:=q+1;
u[q=]:=x[i];
write(new3,u[q=]);
end;
end;
close(new3);
rewrite(op3);
write(op3,k);
close(op3);
close(op);
end;
procedure prosmotr(var op:fi1);
var
i: integer;
begin
reset(op);
write('new file: ');
i:= 0;
while not(eof(op)) do
begin
i := i+1;
read(op,x[i]);
write(' ',x[i]);
end;
writeln;
readln;
close(op);
end;
procedure rezul(var op3,new,new3:fi1);
begin
write('Kolichestvo x[i]=-x[i] par: ');
reset(op3);
read(op3,k);
write(k,' ');
writeln;
writeln;
reset(new);
y:=filesize(new);
write('Elementi / na M: ');
for e:=1 to y do
begin
read(new,c[e]);
write(c[e],' ');
end;
writeln;
writeln;
writeln('elementi ne / na sqr(M): ');
reset(new3);
w:=filesize(new3);
for q:=1 to w do
begin
read(new3,u[q=]);
write(u[q=],' ');
end;
writeln;
readln;
close(new3);
close(op3);
close(new);
end;
begin
clrscr;
randomize;
assign(f,'fil');
assign(f1,'fil1');
assign(f2,'fil2');
assign(f3,'fil3');
assign(f4,'fil4');
l:=-1;
while(l<>0) do
begin
clrscr;
writeln('1 - new file');
writeln('2 - obrabotka');
writeln('3 - prosmotr file');
writeln('4 - prosmotr rezyltata');
writeln('0 - exit');
readln(l);
if (l>5) then writeln('error!!!');
case l of
1:vvod(f);
2:chet(f,f2,f3,f4);
3:prosmotr(f);
4:rezul(f2,f3,f4);
0:exit;
end;
end;
readkey;
end.
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.