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

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

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

Автор: bagbir 16.12.2007 19:33

Задача звучит так:
Создать два массива длиной N, создать третий массив в который поместить все те элементы второго массива которых нет в первом.
попробовал написать сам и вот что из этого вышло((


program lab11;

{$APPTYPE CONSOLE}

uses
SysUtils;

const n=10;
type ar=array[1..n] of integer;
var i,j,r:integer;
k,l,m:ar;
p:boolean;

procedure vvod1(var a:ar;k:integer);
begin
for i:=1 to k do
begin
write('a[',i,']=');
readln(a[i])
end
end;

procedure vvod2(var b:ar;k:integer);
begin
for i:=1 to k do
begin
write('b[',i,']=');
readln(b[i])
end
end;

procedure obrabotka(var a,b,c:ar;k:integer);
begin
r:=1;
for i:=1 to k do
begin
p:=true;
for j:=1 to k do
if a[j]=b[i] then p:=false;
if p=true then
begin
c[r]:=b[i];
r:=r+1;
end; end;
end;

procedure vivod(var c:ar);
begin
for i:=1 to r-1 do
write(c[i]:3)
end;

begin

vvod1(k,10);
vvod2(l,10);
obrabotka(k,l,m,10);
vivod(m);
readln;
end.


напишите пожалуста как из двух процедур ввода сделать одну?

Автор: Lapp 16.12.2007 19:54

Цитата(bagbir @ 16.12.2007 15:33) *

напишите пожалуста как из двух процедур ввода сделать одну?

Добавь символьную переменную - название массива
procedure vvod(var a:ar; с:char; k:integer);
begin
for i:=1 to k do
begin
write(c+'[',i,']=');
readln(a[i])
end
end;

Вызывать так:
  vvod(k,'a',10);
vvod(l,'b',10);

Мне только непонятно, зачем ты массивы a и b в программе назвал k и l? Чтобы жизнь медом не казалась? smile.gif

Автор: andriano 16.12.2007 19:59

procedure vvod(var b:ar;k:integer; ch : char);
begin
for i:=1 to k do
begin
write(ch,'[',i,']=');
readln(b[i])
end
end;
...
vvod(k,10,'a');