Перейти к содержанию
rastaman

Помогите решить задачу в делфи

Рекомендуемые сообщения

Массивы A и B упорядочены по возрастанию их элементов. Объединить эти массивы в один массив, состоящий из элементов массивов A и B, больших 5. Элементы массива C расположить в порядке возрастания.значения элементов массивов A= (-3,7,8,10,15); B= (4,6,8,16). пожалуйста помогите а то курсовую надо сдавать а с этой программой не как не разберусь.

Поделиться сообщением


Ссылка на сообщение
Массивы A и B упорядочены по возрастанию их элементов. Объединить эти массивы в один массив, состоящий из элементов массивов A и B, больших 5. Элементы массива C расположить в порядке возрастания.значения элементов массивов A= (-3,7,8,10,15); B= (4,6,8,16). пожалуйста помогите а то курсовую надо сдавать а с этой программой не как не разберусь.

Чето типа этого:

const SizeOfA = 5;
  SizeOfB = 4;

var A: array[1..SizeOfA] of integer = (-3, 7, 8, 10, 15);
B: array[1..SizeOfB] of integer = (4, 6, 8, 16);
C: array[1..SizeOfA+SizeOfB] of integer;
SizeOfC, i, j, k: integer;

begin
 SizeOfC := 0;
 i := 0;
 j := 0;
 k := 0;
 while (A[i] <= 5) and (i <= SizeOfA) do
inc(i);
 while (B[j] <= 5) and (j <= SizeOfB) do
inc(j);
 while (i <= SizeOfA) or (j <= SizeOfB) do
begin
  if (i <= SizeOfA) and (j <= SizeOfB) then
	if A[i] < B[i] then
	  begin
		C[k] := A[i];
		inc(k);
		C[k] := B[j];
		inc(k);
		inc(i);
		inc(j);
	  end
	else
	  begin
		C[k] := B[j];
		inc(k);
		C[k] := A[i];
		inc(k);
		inc(j);
		ink(i);
	  end 
  else if i <= SizeOfA then
	begin
	  C[k] := A[i];
	  inc(k);
	  inc(i);
	end
  else
	begin
	  C[k] := B[j];
	  inc(k);
	  inc(j);
	end;
end;
 SizeOfC := k-1;
end;

Давай магарыч! :unsure:

Поделиться сообщением


Ссылка на сообщение

мен спасибо но она чёт не работает(((

else

begin

C[k] := B[j];

inc(k);

C[k] := A;

inc(k);

inc(j);

ink(i);вот на эту строку ругается(undeklared identifier;ink.)

end

Поделиться сообщением


Ссылка на сообщение
мен спасибо но она чёт не работает(((

else

begin

C[k] := B[j];

inc(k);

C[k] := A;

inc(k);

inc(j);

ink(i);вот на эту строку ругается(undeklared identifier;ink.)

end

Ну во первых это банальная описка(я не проверял, что пишу). И если ты не в состоянии поправить такую банальную ерунду, значит знания твои в Delphi = 0 и помогать дальше вообще не хочется.

А во вторых там еще и ошибка в алгоритме присутствует. Не на всех входных данных оно работать будет (тут реально мой косяк).

Поделиться сообщением


Ссылка на сообщение

Так попробуй.

const SizeOfA = 5;
  SizeOfB = 4;

var A: array[1..SizeOfA] of integer = (-3, 7, 8, 10, 15);
B: array[1..SizeOfB] of integer = (4, 6, 8, 16);
C: array[1..SizeOfA+SizeOfB] of integer;
SizeOfC, i, j, k: integer;

begin
 SizeOfC := 0;
 i := 0;
 j := 0;
 k := 0;
 while (A[i] <= 5) and (i <= SizeOfA) do
inc(i);
 while (B[j] <= 5) and (j <= SizeOfB) do
inc(j);
 while (i <= SizeOfA) or (j <= SizeOfB) do
begin
  if (i <= SizeOfA) and (j <= SizeOfB) then
	if A[i] < B[i] then
	  begin
		C[k] := A[i];
		inc(k);
		inc(i);
	  end
	else
	  begin
		C[k] := B[j];
		inc(k);
		inc(j);
	  end 
  else if i <= SizeOfA then
	begin
	  C[k] := A[i];
	  inc(k);
	  inc(i);
	end
  else
	begin
	  C[k] := B[j];
	  inc(k);
	  inc(j);
	end;
end;
 SizeOfC := k-1;
end;

Поделиться сообщением


Ссылка на сообщение

терь работает но не совсем верно(((всю эту байду нужно вывести в консоль + дописывает 2 лишних элемента 4 и 0(хотя нуля вобще нету)

Поделиться сообщением


Ссылка на сообщение

разобрался сам немного вот мои наработки объединяет выстраивает по возростанию но не пойму как исключить элементы меньше 5

program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,
 Math;
 const
A : array[1..5] of Integer = (-3,7,8,10,15);
B : array[1..4] of Integer = (4,6,8,16);
var
C:array[1..7] of integer;
j,k:integer;
function CopyMass(A,B: array of Integer): Integer;
var
i,j,k:integer;
  procedure CopyElement;
begin
k := k + 1;
C[k] := B[j];
j := j +1;
end;
begin
k := 0;
j := 0;
for i:=0 to High(A) do begin
k := k + 1;
C[k] := A[ i ];
while (B[j] <A[i+1]) and (j <= High(B)) do CopyElement;

end;
while j <= High(B) do CopyElement;
CopyMass := k;
end;

begin

if A[1] < B[1] then k := CopyMass(A,B) else k := CopyMass(B,A);

for j:=1 to k do Write(C[j]:3);
ReadLn;

end.

Поделиться сообщением


Ссылка на сообщение

Еще один баг у себя нашел.

const SizeOfA = 5;
  SizeOfB = 4;

var A: array[1..SizeOfA] of integer = (-3, 7, 8, 10, 15);
B: array[1..SizeOfB] of integer = (4, 6, 8, 16);
C: array[1..SizeOfA+SizeOfB] of integer;
SizeOfC, i, j, k: integer;

begin
 SizeOfC := 0;
 i := 1;
 j := 1;
 k := 1;
 while (A[i] <= 5) and (i <= SizeOfA) do
inc(i);
 while (B[j] <= 5) and (j <= SizeOfB) do
inc(j);
 while (i <= SizeOfA) or (j <= SizeOfB) do
begin
  if (i <= SizeOfA) and (j <= SizeOfB) then
	if A[i] < B[i] then
	  begin
		C[k] := A[i];
		inc(k);
		inc(i);
	  end
	else
	  begin
		C[k] := B[j];
		inc(k);
		inc(j);
	  end 
  else if i <= SizeOfA then
	begin
	  C[k] := A[i];
	  inc(k);
	  inc(i);
	end
  else
	begin
	  C[k] := B[j];
	  inc(k);
	  inc(j);
	end;
end;
 SizeOfC := k-1;
end;

Поделиться сообщением


Ссылка на сообщение
Еще один баг у себя нашел.

const SizeOfA = 5;
  SizeOfB = 4;

var A: array[1..SizeOfA] of integer = (-3, 7, 8, 10, 15);
B: array[1..SizeOfB] of integer = (4, 6, 8, 16);
C: array[1..SizeOfA+SizeOfB] of integer;
SizeOfC, i, j, k: integer;

begin
 SizeOfC := 0;
 i := 1;
 j := 1;
 k := 1;
 while (A[i] <= 5) and (i <= SizeOfA) do
inc(i);
 while (B[j] <= 5) and (j <= SizeOfB) do
inc(j);
 while (i <= SizeOfA) or (j <= SizeOfB) do
begin
  if (i <= SizeOfA) and (j <= SizeOfB) then
	if A[i] < B[i] then
	  begin
		C[k] := A[i];
		inc(k);
		inc(i);
	  end
	else
	  begin
		C[k] := B[j];
		inc(k);
		inc(j);
	  end 
  else if i <= SizeOfA then
	begin
	  C[k] := A[i];
	  inc(k);
	  inc(i);
	end
  else
	begin
	  C[k] := B[j];
	  inc(k);
	  inc(j);
	end;
end;
 SizeOfC := k-1;
end;

уже почти работает как надо осталось только выстроить по возростанию и убрать ноль.спасибо чувак большое)

Поделиться сообщением


Ссылка на сообщение
уже почти работает как надо осталось только выстроить по возростанию и убрать ноль.спасибо чувак большое)

Таки добрался я до делфей. Нуля там никакого нету. Вот полностью рабочий вариант (еще один баг отловил):

const SizeOfA = 5;
  SizeOfB = 4;

var A: array[1..SizeOfA] of integer = (-3, 7, 8, 10, 15);
B: array[1..SizeOfB] of integer = (4, 6, 8, 16);
C: array[1..SizeOfA+SizeOfB] of integer;
SizeOfC, i, j, k: integer;

begin
 SizeOfC := 0;
 i := 1;
 j := 1;
 k := 1;
 while (A[i] <= 5) and (i <= SizeOfA) do
inc(i);
 while (B[j] <= 5) and (j <= SizeOfB) do
inc(j);
 while (i <= SizeOfA) or (j <= SizeOfB) do
begin
  if (i <= SizeOfA) and (j <= SizeOfB) then
	if A[i] < B[j] then
	  begin
		C[k] := A[i];
		inc(k);
		inc(i);
	  end
	else
	  begin
		C[k] := B[j];
		inc(k);
		inc(j);
	  end 
  else if i <= SizeOfA then
	begin
	  C[k] := A[i];
	  inc(k);
	  inc(i);
	end
  else
	begin
	  C[k] := B[j];
	  inc(k);
	  inc(j);
	end;
end;
 SizeOfC := k-1;
end;

Поделиться сообщением


Ссылка на сообщение

вот есть ноль(

program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
 const SizeOfA = 5;
  SizeOfB = 4;

var A: array[1..SizeOfA] of integer = (-3, 7, 8, 10, 15);
B: array[1..SizeOfB] of integer = (4, 6, 8, 16);
C: array[1..SizeOfA+SizeOfB] of integer;
SizeOfC, i, j, k: integer;

begin
 SizeOfC := 0;
 i := 1;
 j := 1;
 k := 1;
 while (A[i] <= 5) and (i <= SizeOfA) do
inc(i);
 while (B[j] <= 5) and (j <= SizeOfB) do
inc(j);
 while (i <= SizeOfA) or (j <= SizeOfB) do
begin
  if (i <= SizeOfA) and (j <= SizeOfB) then
	if A[i] < B[j] then
	  begin
		C[k] := A[i];
		inc(k);
		inc(i);
	  end
	else
	  begin
		C[k] := B[j];
		inc(k);
		inc(j);
	  end 
  else if i <= SizeOfA then
	begin
	  C[k] := A[i];
	  inc(k);
	  inc(i);
	end
  else
	begin
	  C[k] := B[j];
	  inc(k);
	  inc(j);
	end;
end;
 SizeOfC := k-1;

 for j:=1 to k do Write(C[j]:3);
 readln
end.[attachment=979:ss.png]

post-8344-1308242944_thumb.png

Поделиться сообщением


Ссылка на сообщение

Кашмар...

program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
 const SizeOfA = 5;
  SizeOfB = 4;

var A: array[1..SizeOfA] of integer = (-3, 7, 8, 10, 15);
B: array[1..SizeOfB] of integer = (4, 6, 8, 16);
C: array[1..SizeOfA+SizeOfB] of integer;
SizeOfC, i, j, k: integer;

begin
 SizeOfC := 0;
 i := 1;
 j := 1;
 k := 1;
 while (A[i] <= 5) and (i <= SizeOfA) do
inc(i);
 while (B[j] <= 5) and (j <= SizeOfB) do
inc(j);
 while (i <= SizeOfA) or (j <= SizeOfB) do
begin
  if (i <= SizeOfA) and (j <= SizeOfB) then
	if A[i] < B[j] then
	  begin
		C[k] := A[i];
		inc(k);
		inc(i);
	  end
	else
	  begin
		C[k] := B[j];
		inc(k);
		inc(j);
	  end 
  else if i <= SizeOfA then
	begin
	  C[k] := A[i];
	  inc(k);
	  inc(i);
	end
  else
	begin
	  C[k] := B[j];
	  inc(k);
	  inc(j);
	end;
end;
 SizeOfC := k-1;

 for j:=1 to SizeOfC do Write(C[j]:3);
 readln
end.

Поделиться сообщением


Ссылка на сообщение
Завтра защита пожелайте мне удачи)))

Удачи ;)

Поделиться сообщением


Ссылка на сообщение
Sot спасибо большое))кста я защитился)

Спасибо не булькает! Магарыч где? :m0718:

Поделиться сообщением


Ссылка на сообщение
хаха где тебя встретить можно?

На западном я. Подробности в ЛС.

Поделиться сообщением


Ссылка на сообщение

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


×