Сформировать два массива содержащих n элементов.отсортиропять первые по возрастанию,а второй по убывания.вывести на экран.з атем первый массив просумировать со вторым,а из второго вычесть первый
Uses crt; const n = 100; var a: array [1..n] of integer; b: array [1..n] of integer; i, j, m: byte; p1, p2: integer; begin write('Количество элементов: '); readln(m); clrscr; writeln('Ввод массива A'); writeln; for i:=1 to m do begin write('A[',i,']: '); readln(a[i]); end; clrscr; writeln('Ввод массива B'); writeln; for i:=1 to m do begin write('B[', i, ']: '); readln(b[i]); end; clrscr; writeln; writeln('Исходный массив А:'); for i:=1 to m do write(a[i]:4); writeln; writeln; writeln('Исходный массив B:'); for i:=1 to m do write(b[i]:4); for i:=1 to m-1 do for j:=m downto i do begin if a[i] > a[j] then begin p1:=a[i]; a[i]:=a[j]; a[j]:=p1; end; if b[j] > b[i] then begin p2:=b[i]; b[i]:=b[j]; b[j]:=p2; end; end; writeln; writeln; writeln('Массив А по возрастанию:'); for i:=1 to m do write(a[i]:4); writeln; writeln; writeln('Массив B по убыванию:'); for i:=1 to m do write(b[i]:4); writeln; writeln; writeln('Массив A+B:'); for i:=1 to m do begin a[i]:=a[i]+b[i]; write(a[i]:4); a[i]:=a[i]-b[i]; end; writeln; writeln; writeln('Массив B-A:'); for i:=1 to m do begin b[i]:=b[i]-a[i]; write(b[i]:4); end; readln; end.
Здесь нужно использовать вс типизированный файл и, соответственно, вторую файловую переменную (fr2). Сделать это можно так: while not eof(fr) and (kol=0) do begin read(fr, Marshrut); if (Marshrut.NK.N <> '11') then write(fr2,Marshrut) else begin inc(kol); y:=Marshrut; end; end; if not eof(fr) then begin read(fr, Marshrut); write(fr2,Marshrut); end; if (kol=1) then write(fr2,y); Дальше нужно просто переписать оставшиеся записи из первого файла во второй. Затем оба файла закрыть, первый файл удалить, а второй переименовать (т.е. назвать его так, как назывался первый файл).
Попробуйте ещё вот такой вариант: (здесь k1 и k2 - целые, а y - типа ) if (Marshrut.NK.N = '11') then begin writeln('... '); inc(kol); y:=Marshrut; k1:=FilePos(fr)-1; k2:=FilePos(fr); if not eof(fr) then begin read(fr, Marshrut); seek (fr, k1); write(fr, Marshrut); seek (fr, k2); write (fr, y); end;
Цикл с предусловием это такой цикл, в котором условие проверяется перед выполнением тела цикла. А цикл с постусловием - на оборот, он сначала выполнит, а потом проверит условие и если условие true, то цикл завершится.
Цикл с постусловием, можно использовать в таких ситуациях, когда надо что-то сделать и если чего-то не хватает, то сделать еще раз. Напрмер отправить письмо на email, а если не отправилось, то повторить еще 3 раза. Сначала выполнится тело цикла, в котором находятся функции отправки письма и если отправка удачная, то сообщаем until() true. Иначе тело выполнится еще и еще и еще кучу раз, если мы не задали счетчик в теле цикла, как вариант...
Цикл с предусловием можно использовать, если надо проверять какое-то значение ПЕРЕД выполнением тела цикла и тебе не важно, должно ли оно хоть раз выполниться. Например запросить пароль у пользователя. Но если пользователь уже ввёл пароль, то зачем его запрашивать? Тут можно было бы использовать while
crt;
const
n = 100;
var
a: array [1..n] of integer;
b: array [1..n] of integer;
i, j, m: byte;
p1, p2: integer;
begin
write('Количество элементов: ');
readln(m);
clrscr;
writeln('Ввод массива A');
writeln;
for i:=1 to m do
begin
write('A[',i,']: ');
readln(a[i]);
end;
clrscr;
writeln('Ввод массива B');
writeln;
for i:=1 to m do
begin
write('B[', i, ']: ');
readln(b[i]);
end;
clrscr;
writeln;
writeln('Исходный массив А:');
for i:=1 to m do write(a[i]:4);
writeln; writeln; writeln('Исходный массив B:');
for i:=1 to m do write(b[i]:4);
for i:=1 to m-1 do
for j:=m downto i do
begin
if a[i] > a[j] then
begin
p1:=a[i]; a[i]:=a[j]; a[j]:=p1;
end;
if b[j] > b[i] then
begin
p2:=b[i]; b[i]:=b[j]; b[j]:=p2;
end;
end;
writeln; writeln; writeln('Массив А по возрастанию:');
for i:=1 to m do write(a[i]:4);
writeln; writeln; writeln('Массив B по убыванию:');
for i:=1 to m do write(b[i]:4);
writeln; writeln; writeln('Массив A+B:');
for i:=1 to m do
begin
a[i]:=a[i]+b[i];
write(a[i]:4);
a[i]:=a[i]-b[i];
end;
writeln; writeln; writeln('Массив B-A:');
for i:=1 to m do
begin
b[i]:=b[i]-a[i];
write(b[i]:4);
end;
readln;
end.