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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.10.2010, 19:49   #1
любаша
Пользователь
 
Регистрация: 26.10.2008
Сообщений: 26
По умолчанию объединение массивов

помогите пожалуйста.нужно найти объединение массивов...
ничего не получается, у меня задумка такая,но ничего не работает...
for i:=1 to x1 do
begin
for j:=1 to x2 do
if (A[i]<=B[j]) and (A[i]>=B[j]) then
C[p]:=A[i]+B[j];
p:=p+1;
writeln(C[p]);
end;
завтра задачу сдавать....поможет кто знает как((((((
любаша вне форума Ответить с цитированием
Старый 01.10.2010, 19:53   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

что такое "объединение массивов" ?
что за код: if (A[i]<=B[j]) and (A[i]>=B[j])
что Вы этой проверкой пытались сделать ?! (на самом деле условие будет True только в случае, если A[i] равно B[j]
если нужно просуммировать массивы, то это делается не так.
если массивы одинаковой длины, тогда просто так:
Код:
for i:=1 to N do
  C[i] := A[i] + B[i];
если разной - то тоже несложно сделать...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.10.2010, 19:59   #3
любаша
Пользователь
 
Регистрация: 26.10.2008
Сообщений: 26
По умолчанию

вообщем вообще суть задачи в том,что даны два множества.найти их объединение.во множестве 10 элементов,в интервале от 1 до 100.я множества завела через массив,пересечение и разность нашла,а вот как объединение как не знаю.....
любаша вне форума Ответить с цитированием
Старый 01.10.2010, 22:26   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
множества завела через массив
ЗАЧЕМ?!!!!
Для Вас Никлаус Вирт старался, придумывал механизмы обработки множеств в Pascal, а Вы взяли и отбросили это в сторону...

посмотрите, примерно так можно решить Вашу задачу:
Код:
type 
  Int100 = 1..100;
  MySet = set of Int100;

procedure PrintSet(SetName : string; SS : MySet);
var i: Int100;
begin
  Writeln;
  WriteLn('Set : '+SetName+' ------------ ');
  for i:=Low(Int100) to High(Int100) do
    if i in SS then Write(i:1,' ');
  WriteLn;
end;

var a, b, c : MySet;
  {кстати, множество c введено просто для наглядности!}
begin
  a := [1,2,10,20];
  b := [21,11,2,30];

  PrintSet('A',a);
  PrintSet('B',b);

  {пересечение множеств}
  c := a * b;
  PrintSet('Пересечение',c);

  {Разность множеств}
  c := a - b;
  PrintSet('Разность A - B',c);
  c := b - a;
  PrintSet('Разность B - A',c);

  {Объединение множеств}
  c := a + b;
  PrintSet('Объединение',c);

end.
p.s. если уж Вам ОЧЕНЬ хочется решить задачу через массивы, пишите, помогу...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.10.2010, 11:23   #5
любаша
Пользователь
 
Регистрация: 26.10.2008
Сообщений: 26
По умолчанию

наверное мой способ довольно не рациональный,но уже не хочется ничего менять(((вообщем мой код такой

Код:
var A: array[1..100] of integer;
    B: array[1..100] of integer;
    C: array[1..100] of integer;
  x1,x2,k,i,g,j,y,p,d:integer;

begin
 write('vvedite kol-vo eelmentov: ');
readln(g);


write('vvedite mnog A:');
x1:=1;
for y:=1 to g do
begin
read(i);
if (i>=1) and (i<=100)   then
   begin
    A[x1]:=i;
    x1:=x1+1;
    writeln(i);
   end
 else
 writeln('oshibka');
end;


write('vvedite mnog B:');
x2:=1;
for y:=1 to g do
begin
read(j);
if (j>=1) and (j<=100)   then
   begin
    B[x2]:=j;
    x2:=x2+1;
    writeln(j);
   end
 else
 writeln('oshibka');
      end;


writeln('peresechenie');
begin
for i:=1 to x1-1 do
for j:=1 to x2-1 do
  if A[i]=B[j] then
    begin
    k:=k+1;
    C[k]:=A[i];
    end;
  writeln(C[k]);
  end;

writeln('raznost');
  p:=1;
  for i:=1 to x1 do
    begin
  k:=0;
  for j:=1 to x2 do
     if A[i]=B[j] then
     k:=k+1;
     if  k=0 then
     begin
     C[p]:=A[i];
     p:=p+1;
     end;
     end;
  for i:=1 to p-1 do writeln(C[i]);
осталось вот добавить объединение множеств и симметрическую разность.....

Последний раз редактировалось Stilet; 02.10.2010 в 13:25.
любаша вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объединение nikshiyan Паскаль, Turbo Pascal, PascalABC.NET 10 26.07.2010 00:09
Объединение массивов MilenaR Помощь студентам 10 30.03.2010 13:18
Объединение нескольких массивов по порядку. nec117 Общие вопросы C/C++ 4 16.05.2009 17:32
Объединение БД Georgios БД в Delphi 3 25.01.2009 20:18
Объединение, пересечение, слияние массивов -=Domestos=- Помощь студентам 6 25.12.2006 21:06