![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
массив [D7]
b86 © (2007-12-08 13:33:00)привет. у меня у меня в программе сбой, ни как не могу его вычислить.
procedure vpravo;
begin
x:=(l div 50) ;
y:=(t div 50);
G[x,y]:=y*11+x+1;
reshytka; {в этой в процедуре вручную задаётся массив А}
begin
if x-1>=0 then
begin
for t:=1 to n do
if g[x-1,y]<>А(t) then l:=l-50
else l:=l;
end;
end;end;
в результате сравнение if g[x-1,y]<>А(t) игнорируется или g[x,y] задается какое-то астрономическое число.
помогите, буду очень признателен
{RASkov} (2007-12-08 17:12:00) [21]for n = 0 to 10 do begin
if n=10 then Break; //Немедленный выход из цикла
if n<5 then Continue; //Переход сразу к концу текущего шага цикла
< Этот код будет выполняться при N>=5 и n<10 >
end;
Так в реале не делается, можно было и границы циклу сделать, но для примера....
Dib@zol (2007-12-08 17:09:00) [22]Break заставляет цикл прекратиться на текущем такте, и поэтому твоя процедура не может пройти по всем элементам массива.
ЗЫ И вообще: что ты такое пишешь? По-моему, эта реализация далека от идеала. Скажи что ты делаешь, авось дадим какой-нить ценный совет.
b86 (2007-12-08 17:07:00) [23]нету. я методом тыка развиваюсь. почему он пропускает l:=l-50?
{RASkov} (2007-12-08 17:06:00) [24]> [36] b86 (08.12.07 17:05)
> Как break работает?
Только не говори что и у тебя справки нет :(
b86 (2007-12-08 17:05:00) [25]у меня image2 стоит в том положение где не может двигаться, а он двигается! Как break работает?
Dib@zol (2007-12-08 16:58:00) [26]Где не получается? У меня всё отлично бегает назад:
procedure vlevo;
begin
schet;
reshytka;
k:=y;
if od<>0 then
begin
if x-1>=0 then // если поле не кончается, то
begin
for w:=1 to 29 do
if a[w]<>g[x-1,y] then begin
l:=l-50;
break;
end;
form1.Label1.Caption:=inttostr(g[x,y]);
end;
end;erd;end;
b86 (2007-12-08 16:56:00) [27]я не наеэжаю! я не понимаю! Спасибо вам большое, чт о со мной возитесь, но ведь не получается! с Break не работает! он как работает?
Anatoly Podgoretsky (2007-12-08 16:56:00) [28]> b86 (08.12.2007 16:37:27) [27]
Весь код не значит весь, а только относящийся к проблеме.
Dib@zol (2007-12-08 16:54:00) [29]> И чЁ?
И пошли тупые наезды...
Юзай Break, как было тебе сказано умными людьми, и згинь с глаз долой %-)
b86 (2007-12-08 16:51:00) [30]
> > procedure form1(Sender: TObject);
И чЁ?
{RASkov} (2007-12-08 16:50:00) [31]> [28] Германн © (08.12.07 16:38)
>
> > Ставлю вопрос чётко! Почему вот здесь
> > for w:=1 to 29 do
> > if g[x-1,y]<>a[w] then l:=l-50
> > он мне отнимает 29 раз 50 от l и как сделать чтобы он
> отнял
> > один раз в случае не совпадения!
> >
>
> <telepator>
> Потому что либо g, либо A, либо и то и другое переменные вещественного типа.
> </telepator>
???
Если это было бы так, то не было бы и этого
он мне отнимает 29 раз 50 от l
Тут вообще синтаксис не пустит у в/чисел нет индексов... как и у целочисленных....
> [27] b86 © (08.12.07 16:37)
См [26]
?
> [29] Германн © (08.12.07 16:47)
Я не ошибся в [20].... это шифрация кода )
Form1.form1 - сильно :)
:о)
Германн (2007-12-08 16:47:00) [32]
> procedure form1(Sender: TObject);
:)))
Германн (2007-12-08 16:38:00) [33]
> Ставлю вопрос чётко! Почему вот здесь
> for w:=1 to 29 do
> if g[x-1,y]<>a[w] then l:=l-50
> он мне отнимает 29 раз 50 от l и как сделать чтобы он отнял
> один раз в случае не совпадения!
>
<telepator>
Потому что либо g, либо A, либо и то и другое переменные вещественного типа.
</telepator>
b86 (2007-12-08 16:37:00) [34]ВЕСЬ! Как есть!
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls, Menus, StdCtrls;
type
TForm1 = class(TForm)
Image2: TImage;
Image3: TImage;
Image1: TImage;
Image4: TImage;
Image5: TImage;
Image10: TImage;
Image11: TImage;
Image6: TImage;
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
Button2: TButton;
Label2: TLabel;
Label3: TLabel;
Button3: TButton;
Label4: TLabel;
procedure Image4Click(Sender: TObject);
procedure Image5Click(Sender: TObject);
procedure Image10Click(Sender: TObject);
procedure Image11Click(Sender: TObject);
procedure form1(Sender: TObject);
procedure Image2Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
procedure dre;
procedure erd;
procedure schet;
procedure reshytka;
procedure vlevo;
procedure vpravo;
procedure naverh;
procedure vniz;
var w,k,x,y,l,t,od:integer;
A:array[1..29] of integer;
G:array[0..10,0..10] of integer;
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Image4Click(Sender: TObject);
begin
naverh;
end;
procedure TForm1.Image5Click(Sender: TObject);
begin
vniz;
end;
procedure TForm1.Image10Click(Sender: TObject);
begin
vpravo
end;
procedure TForm1.Image11Click(Sender: TObject);
begin
vlevo;
end;
procedure schet;
begin
dre;
x:=(l div 50) ;
y:=(t div 50);
G[x,y]:=y*11+x+1;
end;
procedure TForm1.form1(Sender: TObject);
begin
od:=15;
reshytka;
end;
procedure dre;
begin
l:=form1.Image2.Left;
t:=form1.Image2.Top;
end;
procedure erd;
begin
form1.Image2.Left:=l;
form1.Image2.Top:=t;
end;
procedure TForm1.Image2Click(Sender: TObject);
begin
schet;
label3.Caption:=inttostr(g[x,y]);
end;
procedure reshytka;
begin
a[1]:=12; a[2]:=13; a[3]:=15; a[4]:=16; a[5]:=17;
a[6]:=96; a[7]:=107; a[8]:=109; a[9]:=110; a[10]:=93;
a[11]:=18; a[12]:=20; a[13]:=21; a[14]:=35; a[15]:=37;
a[16]:=38; a[17]:=39; a[18]:=46; a[19]:=52; a[20]:=53;
a[21]:=54; a[22]:=55; a[23]:=57; a[24]:=68; a[25]:=74;
a[26]:=85; a[27]:=90; a[28]:=91; a[29]:=92;
end;
procedure vpravo ;
begin
schet;
k:=y;
if od<>0 then
begin
if x+1<=10 then
l:=l+50;
end; erd;end;
procedure vlevo;
begin
schet;
reshytka;
k:=y;
if od<>0 then
begin
if x-1>=0 then // если поле не кончается, то
begin
for w:=1 to 29 do
if a[w]<>g[x-1,y] then l:=l-50;
form1.Label1.Caption:=inttostr(g[x,y]);
end;
end;erd;end;
procedure naverh;
begin
schet;
w:=x;
if od<>0 then
begin
if y-1>=0 then
t:=t-50;
end;erd;end;
procedure vniz;
begin
schet;
w:=x;
if od<>0 then
begin
if y+1<=10 then
t:=t+50;
end;erd;end;
procedure TForm1.Button2Click(Sender: TObject);
begin
label1.caption:=inttostr(image2.Left);
end;
end.
{RASkov} (2007-12-08 16:32:00) [35]> [23] b86 (08.12.07 16:21)
> он мне отнимает 29 раз 50 от l и как сделать чтобы он отнял
> один раз в случае не совпадения!
Break ?
for w:=1 to 29 do
if g[x-1,y]<>a[w] then begin
l:=l-50;
Break;
end;
Anatoly Podgoretsky (2007-12-08 16:31:00) [36]
> Сделай милость, выложи ВЕСЬ свой проект, а не повыдерганными
> из него кусками код.
Откуда ты видишь повыдергиванный код, его бы компилятор не пропустил, этот код из головы, поэтому зачем нам обсуждать какой то нереальный код?
Dib@zol (2007-12-08 16:30:00) [37]> я выложил весь проект ещё раз вам говорю!
Лжош. Массив G не объявлен, это во-первых. Также, во вторых, не объявлен массив А. Не объявлена переменная OD. Не указано тело процедуры ERD. Продолжать?
> Ставлю вопрос чётко! Почему вот здесь
Именно потому что эти два элемента не равны друг другу. Компьютер не может взять и наврать. Это программист может взять и накосячить, а потом удивляться, почему комп врёт. Тут же ситуация не ясна совершенно, и помоему от толпы энтузиастов, взявшихся тебе помочь, остался я один. У остальных, имхо, не хватило терпения ждать кода для анализа.
Из (1) и (2) делаем однозначный вывод: ВЫКЛАДЫВАЙ ПРОЕКТ!!!
b86 (2007-12-08 16:21:00) [38]Ставлю вопрос чётко! Почему вот здесь
for w:=1 to 29 do
if g[x-1,y]<>a[w] then l:=l-50
он мне отнимает 29 раз 50 от l и как сделать чтобы он отнял один раз в случае не совпадения!
я выложил весь проект ещё раз вам говорю!
Германн (2007-12-08 16:11:00) [39]
> turbouser © (08.12.07 15:49) [18]
>
>
> > end; erd;end;
>
> Я аж испугался за свое зрение 8-()
>
Тут не за зрение бояться следует :)
Dib@zol (2007-12-08 16:10:00) [40]Плин. Сделай милость, выложи ВЕСЬ свой проект, а не повыдерганными из него кусками код. Уверяю тебя, этот так сказать код никто не позарится спереть, так как во-первых всё это делается, простите меня, не через *$пу а по-нормальному, а во-вторых, сам код никаких мега свежих идей не содержит. Лучше заархивируй папку с проектом (только удали пока что екзешник, всё равно потом перекомпилировать), и выложи архив на http://www.webfile.ru
Мы все очень просим. :)