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

Вниз

Stringgrid   Найти похожие ветки 

 
Silica ©   (2006-02-03 17:33) [0]

procedure TForm1.Button1Click(Sender: TObject);
begin
 randomize;
 for i := 0 to k do
 begin
   a[i] := random(m);
   stringgrid1.Cells[i,0] := inttostr(m);
   StringGrid1.Cells[i,0] := inttostr(a[i]);
 end;
 for j := 0 to k do
 begin
   b[j] := random(m+n);
   stringgrid1.Cells[i,0] := inttostr(m+n);
   StringGrid1.Cells[5,1] := inttostr(b[j]);
 end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 for i := 1 to k do
 for j := 1 to k do
 begin
   if ((a[i] = a[j]) and (i <> j)) then
   a[j] := -1;
 end;
end;

Скажите, что не так в этом коде. В первой процедуре все нормально, генерация осуществляется. Но вот во второй процедуре нужно один из совпавших элементов заменить на -1. Например:
3  6  9  12  23  12  10  9  7  10
3  6  9  12  23  -1  10  -1  7  -1

Программа компилируется, не возникает никаких ошибок, но вот замена не происходит.


 
Zeqfreed ©   (2006-02-03 17:36) [1]

Во-первых, не понятно что такое a и b. Во-вторых, стоит использовать локальные переменные, вместо глобальных (насколько я понимаю, иначе код не компилировался бы) и, пожалуй, стоит вынести код в отдельные процедуры, а не держать его в обработчиках событий.


 
umbra ©   (2006-02-03 17:43) [2]


> замена не происходит.

значит, условие не выполняется. Лучше всего вылавливать источник неправильной работы в отладчике


 
Silica ©   (2006-02-03 18:29) [3]

var
 Form1: TForm1;
 a : array[0..24] of integer;
 b : array[0..27] of integer;
 i, j, x : integer;

const
 k = 10;
 m = 24;
 n = 3;

На массив b не обращайте внимания. Он только выводит число в одну ячейку. Меня интерисует массив а. Нужны именно глобальные переменные, потому что с этими массивами будет связана вся программа.

umbra, при пошаговой компиляции в циклах второй процедуры i=11(откуда эта цифра вообще), а j=0. Может он не определяет массив? (но откуда тогда эти цифры?). :( Многое пробовала, ничего не получается.


 
Zeqfreed ©   (2006-02-03 18:38) [4]

[3] Silica ©   (03.02.06 18:29)
k = 10;, а массив содержит 25 чисел. Может быть в этом проблема?

> при пошаговой компиляции

Пошаговом выполении (оно же трассировка) ? :)


 
Silica ©   (2006-02-03 18:51) [5]

Zeqfreed, массив выводит случайные числа от 0 до 25 в 10 ячеек. Поэтому k=10. Там же random. Попробую через stringgrid. :(
Ну скажите кто-нибудь что неправильно. Плизззз... :(


 
Zeqfreed ©   (2006-02-03 18:58) [6]

Хорошо, скажите, чего вы ожидаете от своего кода:

procedure TForm1.Button2Click(Sender: TObject);
begin
for i := 1 to k do
for j := 1 to k do
begin
  if ((a[i] = a[j]) and (i <> j)) then
  a[j] := -1;
end;
end;


?


 
Silica ©   (2006-02-03 19:40) [7]

У меня получилось с помощью stringgrid:

procedure TForm1.Button2Click(Sender: TObject);
begin
 for i := 0 to k do
 for j := 0 to k do
 begin
   if ((stringgrid1.Cells[i,0] = stringgrid1.Cells[j,0])
   and (i <> j)) then
   stringgrid1.Cells[j,0] :=inttostr(-1);
 end;
end;

В этом коде я заменяю одну из совпавших цифр на -1. Например:
5  5  7   12  ...
5  -1  7  12  ...

Теперь я не могу сложить все ячейки, только как раз без этого элемента "-1" (без этой ячейки). Помогите, пожалуйста... Например, всего 10 ячеек, ячеек с элементом "-1", к примеру 2. Значит должно получиться в итоге 8. Этот результат выводится в label.



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

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

Наверх




Память: 0.48 MB
Время: 0.041 c
1-1137487731
$Инъектор
2006-01-17 11:48
2006.02.19
Компонент TDFUnRar кто-то использовал ?


2-1139064527
Serg1981
2006-02-04 17:48
2006.02.19
Application.ProcessMessages


6-1131402904
Delphi_is_cool
2005-11-08 01:35
2006.02.19
Коннект через SOCKS прокси


2-1138793463
alexus
2006-02-01 14:31
2006.02.19
Как определить какая кнопка мыши нажата?


2-1138881592
Starter2006
2006-02-02 14:59
2006.02.19
Delphi + 1C