М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
btslove2
btslove2
06.04.2021 12:50 •  Информатика

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

👇
Ответ:
Maria8812
Maria8812
06.04.2021
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.
4,7(58 оценок)
Открыть все ответы
Ответ:
Элайза5
Элайза5
06.04.2021
Здесь нужно использовать вс типизированный файл и, соответственно, вторую файловую переменную (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;

end;
4,4(12 оценок)
Ответ:
makslitovchenk
makslitovchenk
06.04.2021
Цикл с предусловием это такой цикл, в котором условие проверяется перед выполнением тела цикла.
А цикл с постусловием - на оборот, он сначала выполнит, а потом проверит условие и если условие true, то цикл завершится.

Цикл с постусловием, можно использовать в таких ситуациях, когда надо что-то сделать и если чего-то не хватает, то сделать еще раз. Напрмер отправить письмо на email, а если не отправилось, то повторить еще 3 раза. Сначала выполнится тело цикла, в котором находятся функции отправки письма и если отправка удачная, то сообщаем until() true. Иначе тело выполнится еще и еще и еще кучу раз, если мы не задали счетчик в теле цикла, как вариант...

Цикл с предусловием можно использовать, если надо проверять какое-то значение ПЕРЕД выполнением тела цикла и тебе не важно, должно ли оно хоть раз выполниться. Например запросить пароль у пользователя. Но если пользователь уже ввёл пароль, то зачем его запрашивать? Тут можно было бы использовать while
4,6(76 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ