Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Массивы

Автор: Demm 29.05.2004 4:31

Помогите,пожалуста!
вот задача: Даны 2 массива упорядоченных по возрост. надо сформировать 3 также упорядоченный по возрастанию.
Сформировать 3 и потом упорядочить-проблем нет, но надо во время записи 3 массива расставлять элементы сразу на свои места.
Если кто может,покажите как это реализовывается!
Ввод, вывод и описания перем. не обязательно!

Автор: Spawn 29.05.2004 12:39

Код
type
 massiv = array[1..max] of integer;

procedure sort(var A,B,C : massiv);
var i,j,k : 1..max;
begin
 i := 1; j := 1; k := 1;
 repeat
   if A[i]>B[j] then
   begin
     C[k] := B[j];
     j = j + 1;
   end
   else
   begin
     C[k] := A[i];
     i := i + 1;
   end;
   k := k + 1;
   if i>max then
     for i := j to max do
     begin
       C[k] := B[i];
       k := k + 1;
     end
   else if j>max then
     for j := i to max do
     begin
       C[k] := A[j];
       k := k + 1;
     end;
 until k=2*max;
end;


Вроде так.

Автор: 1153 29.05.2004 16:05

помогите unsure.gif ввести с клавы масив из 10 целых чисел. вывести масив на экран. среди всех нечётных элементов(элементов с нечётным значением) найти максимальный. вывести результат.[color=teal][/color]

Автор: Demm 29.05.2004 18:20

Большое спасибо Spawn,сейчас попробую!

Автор: Demm 29.05.2004 19:38

У меня массивы А и В разной длины! А-n , а B-m. Переправил прогу,но что-то она виснит и помогает только перезагрузка. А длина их 1..100.
Как это правильно переправь,а то что-то не получается у меня!

Автор: Spawn 30.05.2004 3:06

Попробуй так:

Код

const
 n = 100; {длина массива А}
 m = 90; {длина массива В}
 t = n + m; {длина результирующего массива}
type
 mA = array[1..n] of integer;
 mB = array[1..m] of integer;
 mC = array[1..t] of integer;

procedure sort(var A : mA, B : mB, C : mC);
var i,j,k : 1..t;
begin
i := 1; j := 1; k := 1;
repeat
  if A[i]>B[j] then
  begin
    C[k] := B[j];
    j = j + 1;
  end
  else
  begin
    C[k] := A[i];
    i := i + 1;
  end;
  k := k + 1;
  if i>n then
    for i := j to m do
    begin
      C[k] := B[i];
      k := k + 1;
    end
  else if j>m then
    for j := i to n do
    begin
      C[k] := A[j];
      k := k + 1;
    end;
until k=t;
end;

Автор: Demm 30.05.2004 17:02

Не работает
Вот

Код

const
n = 4; {длина массива А}
m = 5; {длина массива В}
t = n + m; {длина результирующего массива}
type
mA = array[1..n] of integer;
mB = array[1..m] of integer;
mC = array[1..t] of integer;
var i,j,k:integer;
A:mA;B:mB;C:mC;
procedure sort(var A : mA; B : mB; C : mC);
begin
i := 1; j := 1; k := 1;
repeat
 if A[i]>B[j] then
 begin
   C[k] := B[j];
   j := j + 1;
 end
 else
 begin
   C[k] := A[i];
   i := i + 1;
 end;
 k := k + 1;
 if i>n then
   for i := j to m do
   begin
     C[k] := B[i];
     k := k + 1;
   end
 else if j>m then
   for j := i to n do
   begin
     C[k] := A[j];
     k := k + 1;
   end;
until k=t;
end;

begin
    writeln('mass A');
  for i:=1 to n do
    readln(A[i]);
    writeln('mass B');
  for j:=1 to m do
    readln(B[j]);
    sort(A,B,C);
    writeln('poluch');
  for k:=1 to t do
    write(C[k],' ');
    readln;
end.


Виснит и все тут!

Автор: Spawn 31.05.2004 3:53

Виноват. Недоглядел.
Вот рабочая версия:

Код
const
n = 4; {длина массива А}
m = 5; {длина массива В}
t = n + m; {длина результирующего массива}
type
mA = array[1..n] of integer;
mB = array[1..m] of integer;
mC = array[1..t] of integer;
var i,j,k:integer;
A:mA;B:mB;C:mC;
procedure sort(var A : mA; var B : mB; var C : mC);
begin
i := 1; j := 1; k := 1;
repeat
if A[i]>B[j] then
begin
  C[k] := B[j];
  j := j + 1;
end
else
begin
  C[k] := A[i];
  i := i + 1;
end;
k := k + 1;
if i>n then
  for i := j to m do
  begin
    C[k] := B[i];
    k := k + 1;
  end
else if j>m then
  for j := i to n do
  begin
    C[k] := A[j];
    k := k + 1;
  end;
until k>=t;
end;

begin
   writeln('mass A');
 for i:=1 to n do
   read(A[i]);
   writeln('mass B');
 for j:=1 to m do
   read(B[j]);
   sort(A,B,C);
   writeln('poluch');
 for k:=1 to t do
   write(C[k],' ');
   readln;
end.

Автор: Demm 1.06.2004 21:29

Большое спасибо.Все круто!!!!

Автор: Spawn 1.06.2004 23:28

:D Всегда пожалуйста! :D