Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.30;
Скачать: CL | DM;

Вниз

Не работает правильно алгоритм создание массива с других...   Найти похожие ветки 

 
Рома   (2003-12-16 13:09) [0]

Нужно создать массив с из элементов q не входящих до массива f. Программа не работает. Если изменить условие на входящие до массива f - все нормально. Почему?

Form1 : TForm1;
q : array[1..10] of Integer;
f : array[1..12] of Integer;
c : array[1..10] of Integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
i, j, k : Integer;
begin
for i:=1 to 10 do
begin
q[i]:=i;
lb_1.Items.Add(IntToStr(q[i]));
end;

for i:=1 to 12 do
begin
f[i]:=i+7;
lb_2.Items.Add(IntToStr(f[i]));
end;

for i:=1 to 10 do
for j:=1 to 12 do
begin
{не работет данное условие}
if (q[i]<>f[j]) then
begin
c[j]:=q[i];
inc(k);
end;
end;

Form1.Caption := IntToStr(k);

for i:=1 to k do
begin
lb_3.Items.Add(IntToStr(c[i]));
end;
end;


 
Digitman ©   (2003-12-16 13:15) [1]


> элементов q не входящих до массива f


это даже по-китайски не сказать)
а не то что по-русски) ... да еще и понять, что есть "до массива")


 
Palladin ©   (2003-12-16 13:19) [2]

Условие работает и прекрасно работает. А вот алгоритм в целом к сожалению не очень.

for i:=1 to 10 do
begin
bNotIn:=true;
for j:=1 to 12 do
if q[i]=f[j] then
begin
bNotIn:=false;
break;
end;
if bNotIn then
begin
c[j]:=q[i];
inc(k);
end;
end;


 
Рома   (2003-12-16 13:20) [3]

Такая вот контрольная.
Я понял так. Имеется 2 массива f и q. f=12 q=10
Нужно создать массив c в котор. будут входить элементы массива q, которые не входят до массива f.


 
Ega23 ©   (2003-12-16 13:20) [4]

1. А чему изначально равно k?
2. c[j]:=q[i]; j пробегает от 1 до 12, а c : array[1..10] of Integer;


 
Palladin ©   (2003-12-16 13:21) [5]

Ах еще с индексами проблема...
инициализация k не проведена

перед циклом выставь k:=1;
и в цикле вместо
c[j]:=q[i]
поставь
c[k]:=q[i]


 
Palladin ©   (2003-12-16 13:22) [6]

Выражайся по русски, не в ходят в массив f...


 
Digitman ©   (2003-12-16 13:25) [7]

если загрузить списки q и f элементами соотв.исх.массивов, то решение - ровно в 3 строчки текста :

q, f, c : TList;

for i:= 0 to g.Count - 1 do
if f.IndexOf(f[i]) = - 1 then
c.Add(f[i]);

остается выгрузить готовый список С в одноименный массив


 
Digitman ©   (2003-12-16 13:27) [8]

миль пардон
c.Add(g[i]) - так будет правильней)


 
Рома   (2003-12-16 14:00) [9]

Спасибо всем за отзыв. Даже не ожидал. Буду пробовать. Если что знаю к кому обращаться.



Страницы: 1 вся ветка

Текущий архив: 2003.12.30;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
1-99546
KOT
2003-12-16 08:26
2003.12.30
Как ине задать таймер чтобы систему не грузить


6-99677
Bless
2003-10-30 16:58
2003.12.30
Как закрыть порт?


3-99487
123456
2003-12-07 05:58
2003.12.30
Cписок таблиц в базе FireBird


3-99472
AndDem
2003-12-01 17:34
2003.12.30
Компонент EventAlert для ADO-соединения с MSSQL


14-99788
ИдиотЪ
2003-12-05 08:55
2003.12.30
резонанс