Главная страница
    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.47 MB
Время: 0.01 c
1-99546
KOT
2003-12-16 08:26
2003.12.30
Как ине задать таймер чтобы систему не грузить


14-99777
Thor
2003-12-05 15:07
2003.12.30
Борис Абрамыч инициалы сменил.


14-99718
VID
2003-12-08 14:37
2003.12.30
Опрос: Кто активно использует билайн GPRS-INTERNET


14-99730
SergeySEM
2003-12-08 15:09
2003.12.30
Boom


1-99595
Zhirnov Maxim
2003-12-12 20:50
2003.12.30
Поиск по реестру Windows





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский