Страница 1 из 1
Помогите напиать программку!!! СРОЧНО!!!
Добавлено: 01 июн 2008, 17:54
Надя640
дано 2 одномерных массива.построить третий, который содержит элементы исходных 2-х массивов, но только по одному разу
Re: Помогите напиать программку!!! СРОЧНО!!!
Добавлено: 01 июн 2008, 18:13
MOTOCoder
1. Записать все элементы 1-го массива в 3-й.
2. Перебрать все элементы 2-го массива, сравнивая каждый из них с элементыми второго. Если не равен - добавить в 3-й массив.
Re: Помогите напиать программку!!! СРОЧНО!!!
Добавлено: 01 июн 2008, 18:29
Надя640
А как ЭТО изменить чтоб все получилось?
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
const n=5;
type mas=array[1..n] of real;
mas1=array[1..n] of real;
mas2=array[1..(n+n)] of real;
procedure vvod1(var m:mas);
var i:integer;
begin
for i:=1 to n do
begin
write('m[',i,']=');
readln(m);
end;
end;
procedure vvod2(var m1:mas1);
var i:integer;
begin
for i:=1 to n do
begin
write('m1[',i,']=');
readln(m1);
end;
end;
procedure sum(const a:mas; const b:mas1; var c:mas2; var k:integer);
var i,j:integer;
t: real;
p:boolean;
begin
k:=0;
for i:=1 to n do
begin
t:= a;
p:= false;
for j:=1 to k do
if t=c[j] then
begin
p:=true;
break;
end
else
k:=k+1;
c[k]:=t;
end;
end;
procedure print(var c:mas2);
var i:integer;
begin
for i:=1 to n+n do
writeln(c);
writeln;
end;
var m:mas;
m1:mas1;
m2:mas2;
k: integer;
begin
writeln('vvedite 1 massiv');
vvod1(m);
writeln('vvedite 2 massiv');
vvod2(m1);
sum(m,m1,m2,k);
print(m2);
readln;
end.
Re: Помогите напиать программку!!! СРОЧНО!!!
Добавлено: 01 июн 2008, 20:40
MOTOCoder
Вообще, процедура суммирования должна выглядеть примерно так:
[syntax='Delphi']
function Sum:integer;
var
I,J,K:Integer;
B:Boolean;
begin
for i:=1 to N do
M3:=M1;
K:=N;
for i:=1 to N do
begin
B:=True;
For J:=1 to N do
if M2=M1[J] then
B:=False;
if B then
begin
Inc(K);
M3[K]:=M2;
end;
end;
Result:=K;
end;
[/syntax]
Функция возвращает число элементов в новом массиве.
P.S. Просьба, используйте теги
[noparse]
[syntax='Delphi']
//Код Delphi
[/syntax]
[/noparse]
при вставке кода.
Re: Помогите напиать программку!!! СРОЧНО!!!
Добавлено: 03 июн 2008, 11:52
Хыиуду
MOTOCoder писал(а):
Код: Выделить всё
...
B:=True;
For J:=1 to N do
if M2[I]=M1[J] then
B:=False;
if B then
...
Можно чуть-чуть оптимизировать
Код: Выделить всё
B:=True;
For J:=1 to N do
if M2[I]=M1[J] then
begin
B:=False;
break;
end;
if B then
Re: Помогите напиать программку!!! СРОЧНО!!!
Добавлено: 03 июн 2008, 19:35
BAHTY3
Вообще это называеться объединением массивов
" писал(а):1. Записать все элементы 1-го массива в 3-й.
а если в первом есть повторения?

Re: Помогите напиать программку!!! СРОЧНО!!!
Добавлено: 03 июн 2008, 21:05
Надя640
ну в 3-ем массве должны быть числа только по 1 разу. значит из всех повторений надо чтб было 1 число
Re: Помогите напиать программку!!! СРОЧНО!!!
Добавлено: 03 июн 2008, 21:10
MOTOCoder
По задаче не очень понятно, я думал, что повторения допускаются.
В случае, если нужно без повторений, придется делать так:
[syntax='Delphi']
L:=0;
for I:=1 to K do
begin
B:=True;
for J:=1 to L do
if (M3=M4[J])and(I<>J) then
B:=False;
if B then
begin
Inc(L);
M4[L]:=M3;
end;
end;
Sum:=L;
[/syntax]
Это нужно добавить вместо Result:=K
Также нужно добавить массив M4 и переменную L:Integer
Результат будет находиться в массиве M4