Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.12.30;
Скачать: [xml.tar.bz2];

Вниз

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

 
Рома   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
6-99686
Narayan
2003-11-02 23:38
2003.12.30
WinSock.select


1-99565
Ig
2003-12-17 23:11
2003.12.30
Подскажите пожалуйста как в TListView добавить данные из реестра


1-99617
XsID
2003-12-16 23:16
2003.12.30
Разница во времени


14-99695
Suntechnic
2003-12-09 16:45
2003.12.30
Очередная развлекаловка с Google...


14-99704
Layner
2003-12-09 09:06
2003.12.30
Соболя загребли :(





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский