Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2009, 19:58   #1
Makotya
Новичок
Джуниор
 
Регистрация: 19.05.2009
Сообщений: 5
По умолчанию задача по массивам // Delphi //код прилагается

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

Я работала над ней,но в итоге-что-то не так-3-ий массив просто зануляет.Как исправить ошибку в коде-не знаю.

Была бы очень признательна тому,кто бы мне эту ошибку нашел и исправил.


program LR_4;

{$APPTYPE CONSOLE}

uses
SysUtils;

const n=4;
const m=4;

type Tmas1=array[1..n] of integer;
type Tmas2=array[1..m] of integer;
type Tmas3=array[1..n+m] of integer;

procedure vvod_ma(var a:array of integer);
var i:integer;
begin
writeln('vvedite 1 massiv');
for i:=1 to n do
begin
write('a[',i,']= ');readln(a[i]);
end;
end;

procedure vvod_mb(var b:array of integer);
var i:integer;
begin
writeln('vvedite 2 massiv');
for i:=1 to m do
begin
write('b[',i,']= ');readln(b[i]);
end;
end;

function stroim_c(const a:Tmas1;const b:Tmas2;var c:Tmas3):integer;
var i,j,k,naiden:integer;
begin
for i:=1 to n do
c[i]:=a[i];
k:=n;
for i:=1 to m do
begin
naiden:=0;
for j:=1 to k do
begin
if b[i]=c[j] then
begin
naiden:=1 ;
break;
end;
end;
if naiden=0 then
begin
k:=k+1;
c[k]:=b[i];
end;
end;
result:=k;
end;
procedure print_m(const a:array of integer;const b:array of integer;const c:array of integer);
var i:integer;
begin
writeln('1 massiv');
for i:=1 to n do
writeln(a[i]:4);
writeln;
writeln('2 massiv');
for i:=1 to m do
writeln(b[i]:4);
writeln;
writeln('3 massiv');
for i:=1 to n+m do
writeln(c[i]:4);
writeln;
end;

var a:Tmas1;b:Tmas2;c:Tmas3;
k:integer;
begin
writeln('massiv');
vvod_ma(a);
vvod_mb(b);
print_m(a,b,c);
k:=stroim_c(a,b,c);
writeln('k=',k);
readln;
end.

Последний раз редактировалось Makotya; 19.05.2009 в 20:31.
Makotya вне форума Ответить с цитированием
Старый 19.05.2009, 20:00   #2
Makotya
Новичок
Джуниор
 
Регистрация: 19.05.2009
Сообщений: 5
По умолчанию


жду помощи

Последний раз редактировалось Makotya; 19.05.2009 в 20:33.
Makotya вне форума Ответить с цитированием
Старый 20.05.2009, 22:04   #3
Makotya
Новичок
Джуниор
 
Регистрация: 19.05.2009
Сообщений: 5
По умолчанию

раз мне никто не ответил,я сама догадалась.ошибка оказалась в последних строчках.мало ли кому понадобится-выкладываю испр вариант!


program lr_4_T;

{$APPTYPE CONSOLE}

uses
SysUtils;

const n=4;
const m=4;

type Tmas1=array[1..n] of integer;
type Tmas2=array[1..m] of integer;
type Tmas3=array[1..n+m] of integer;

procedure vvod_ma(var a:array of integer);
var i:integer;
begin
writeln('vvedite 1 massiv');

for i:=1 to n do
begin
write('a[',i,']= ');readln(a[i]);
end;
end;

procedure vvod_mb(var b:array of integer);
var i:integer;

begin
writeln('vvedite 2 massiv');

for i:=1 to m do
begin
write('b[',i,']= ');readln(b[i]);
end;
end;

function stroim_c(const a:Tmas1;const b:Tmas2;var c:Tmas3):integer;
var i,j,k,naiden:integer;
begin
for i:=1 to n do
c[i]:=a[i];
k:=n;
for i:=1 to m do
begin
naiden:=0;
for j:=1 to k do
begin
if b[i]=c[j] then
begin
naiden:=1 ;
break;
end;
end;

if naiden=0 then
begin
k:=k+1;
c[k]:=b[i];
end;
end;

result:=k;
end;

procedure print_m(const a:array of integer;const b:array of integer;const c:array of integer);
var i:integer;

begin
writeln('1 massiv');
for i:=1 to n do
writeln(a[i]:4);

writeln;
writeln('2 massiv');

for i:=1 to m do
writeln(b[i]:4);

writeln;
writeln('3 massiv');

for i:=1 to n+m do
writeln(c[i]:4);

writeln;
end;

var a:Tmas1;b:Tmas2;c:Tmas3;
k:integer;

begin
writeln('massiv');
vvod_ma(a);
vvod_mb(b);
k:=stroim_c(a,b,c);
print_m(a,b,c);
writeln('k=',k);
readln;
end.
Makotya вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста с задачей. Kold Паскаль, Turbo Pascal, PascalABC.NET 1 12.12.2008 20:20
Помогите с задачей пожалуйста Apache Паскаль, Turbo Pascal, PascalABC.NET 2 07.10.2008 20:35
Пожалуйста, помогите по массивам Reaper_Man Помощь студентам 9 02.03.2008 10:43