ПОдчеркнул в одном месте не знаю как вывести с помощью какой переменной. ПЛюс если есть ошибки пишите

Сама задача: Даны 2 массива одномерных, надо их по отдельности упорядочить(они могут быть уже исходно упорядочены по воздрастунию или один из них), затем слить эти массивы в третий массив тоже по возростанию. ВЫвести готовый массив.

Проблема в основном в выводе

program szs;
type mas1=array[1..100] of integer;
var a, b, c:mas1; na, nb, i:integer;

procedure sort(var a: mas1; n:integer);
var i, k:integer; r:integer;
begin
for i:= n downto 2 do
for k:=1 to i-1 do
if a[k]>a[k+1] then
begin
r:=a[k];
a[k]:=a[k+1];
a[k+1]:= r
end;
end;

function up(var a:mas1; n:integer):boolean;
var i, k:integer;
begin
k:=0;
for i:=1 to n-1 do
if a[i]<a[i+1] then
k:=k+1;
if k=n-1 then
up:=true
else
up:=false;
end;

procedure sl(var a:mas1; na:integer;
var b:mas1; nb:integer; var c:mas1);
var ia, ib, ic, j, ici:integer;
begin
ia:=1;
ib:=1;
ic:=1;
while (ia<=na) and (ib<=nb) do
begin
if (a[ia]<=b[ib]) then
begin
c[ic]:=a[ia];
ia:=ia +1;
end
else
begin
c[ic]:=b[ib];
ib:=ib+1
end;
ic:=ic+1
end;
for j:=ia to na do
begin
c[ic]:=a[j];
ici:=ic+1
end;
for j:=ib to nb do
begin
c[ic]:=b[j];
ici:=ic+1
end;
end;

begin
writeln ('Введите количество элементов первого массива, нажмите клавишу "Enter", затем введите последовательно все элементы первого массива' );
writeln (na);
for i:=1 to na do
write (a[i]);
writeln ('Введите количество элементов второго массива, нажмите клавишу "Enter", затем введите последовательно все элементы второго массива ' );
writeln (nb);
for i:=1 to nb do
write (b[i]);
if not up(a, na) then
sort (a, na);
if not up(b, nb) then
sort (b, nb);
sl(a,na, b, nb, c);
Writeln ('Получившийся отсортированный массив');
for i:=1 to do
read (c[i], ' ')
end.

1

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

2012-04-28T11:48:42+00:00

Это Проверенный ответ

×
Проверенные ответы содержат надёжную, заслуживающую доверия информацию, оценённую командой экспертов. На "Знаниях" вы найдёте миллионы ответов, правильность которых подтвердили активные участники сообщества, но Проверенные ответы - это лучшие из лучших.

program szs;
type mas100=array[1..100] of integer;
var a, b, c:mas100;
na, nb, i:integer;

procedure sort(var a: mas100; n:integer);
var i, k:integer;
temp:integer;
begin
  for i:= n downto 2 do
    for k:=1 to i-1 do
      if a[k]>a[k+1] then begin
        r:=a[k];
        a[k]:=a[k+1];
        a[k+1]:= r;
      end;
end;

procedure merge(var a:mas100; na:integer; var b:mas100; nb:integer; var c:mas100);
var ia, ib, ic, j, ici:integer;
begin
  ia:=1;
  ib:=1;
  ic:=1;
  while (ia<=na) or (ib<=nb) do begin
    if (a[ia]<=b[ib]) or (ib>nb) then begin
      c[ic]:=a[ia];
      ia:=ia +1;
    end
    else begin
      c[ic]:=b[ib];
      ib:=ib+1
    end;
    ic:=ic+1;
  end;
end;

procedure get_mas(var a:mas100; var n:integer)
begin
  writeln ('Введите количество элементов массива, нажмите клавишу "Enter", затем введите последовательно все элементы массива' );
  read (n);
  for i:=1 to n do
    readln(a[i]);
end;

begin
  get_mas(a,na);
  get_mas(b,nb);
 
  sort (a, na); { сортировка и есть проверка }
  sort (b, nb);
  merge(a,na, b, nb, c);
  Writeln ('Получившийся отсортированный массив');
  for i:=1 to na+nb do
    write (c[i], ' ')
end.