Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 27.04.2011
Сообщений: 24
1

GoTo

14.05.2013, 19:25. Показов 1214. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
День добрый, возникли проблемы при использовании goto, необходимо повторить цикл n раз с условием. Суть такая изначально поиск максимального значения в массиве, затем проверка условия, если условие выполняется тогда идет дальше если нет то возвращается к поиску максимального значения,заранее исключив возможность выбора того же числа.
прописал его вот так вот,по идеии по логике все нормально, из заданых 32х раз он еле как делает 14 и то все криво-косо
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
For ij:=1 to nc do
 begin
 Goto goto1;
 goto 1 : 
   For i:=0 to m-1 Do
     For  j:=0 to n-1 Do
       if MassSum[i,j] > MassSum[vod1,vod2]   then
          begin
          vod1:=i;
          vod2:=j;
          end;
 
 if  ((vod1-stepxm)<0) or ((vod2-stepym)<0) then   begin
                                                     MassSum[Vod1,Vod2]:=1;
                                                     goto goto1;
                                                   end;
 
 if  ((vod1+stepxm)>m) or ((vod2+stepym)>n) then   begin
                                                     MassSum[Vod1,Vod2]:=1;
                                                     goto goto1;
                                                   end;              
 
   begin
     For ik:= vod1-stepxm to vod1+stepxm do
        For jk:=vod2-stepym to vod2+stepym do
            if MassSum[ik,jk] >0 then
            na:= MassSum[ik,jk]
              else  
                begin
                  MassSum[Vod1,Vod2]:=1;
                  goto goto1;
                end;      
   end;
 
   begin
    For ik:= vod1-stepxm to vod1+stepxm do
        For jk:=vod2-stepym to vod2+stepym do
            MassSum[ik,jk] := -1500;
        end;
  end;
 ij:=ij+1;
если в место норального условия впихнуть брйк, он начинает нормально работать, но по всей логике это не правильно, ибо в случае невыполнения условия он не возвращаеться к поиску максимума.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
For ij:=1 to nc do
 begin
   For i:=0 to m-1 Do
     For  j:=0 to n-1 Do
       if MassSum[i,j] > MassSum[vod1,vod2]   then
          begin
          vod1:=i;
          vod2:=j;
          end;
 
   begin
     For ik:= vod1-stepxm to vod1+stepxm do
        For jk:=vod2-stepym to vod2+stepym do
            if MassSum[ik,jk] >0 then
                    else    break;
           
   end;
 
   begin
    For ik:= vod1-stepxm to vod1+stepxm do
        For jk:=vod2-stepym to vod2+stepym do
            MassSum[ik,jk] := -1500;
 
     end;
  end;
 ij:=ij+1;
прошу помочь) и лучше всего объяснить в чем косяк)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.05.2013, 19:25
Ответы с готовыми решениями:

Бесконечный цикл ( goto )
Здравствуйте! Есть вот такой код. procedure TForm1.sButton1Click(Sender: TObject); label...

Убрать оператор goto
Подскажите, пожалуйста, как переписать данный код без использования оператора goto: for i:=0 to...

Goto между процедурами
Приветствую всех! Такой вопрос с лейблами. Есть Процедура1, в которой есть Label endProcess. В...

Можно ли использовать GoTo в потоке?
potok.execute begin // какой то код metka //код end; button1.click begin // какой то код

2
118 / 118 / 2
Регистрация: 29.01.2013
Сообщений: 437
14.05.2013, 21:36 2
Qlimax, брейк прервёт только ПЕРВЫЙ цикл, в который он входит.
0
0 / 0 / 0
Регистрация: 27.04.2011
Сообщений: 24
15.05.2013, 06:19  [ТС] 3
я знаю, но если оставить так, тогда он почему то нормально все делает, ну относительно нормально ) результат меня более менее устраивает, а если с goto, тогда все как то не так, там где есть максимум в итоге он не ставит.
0
15.05.2013, 06:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2013, 06:19
Помогаю со студенческими работами здесь

Переписать код без использования GOTO
Ребята, помогите пожалуйста переписать текст программы, чтоб в ней не использовать GOTO!!! ...

Останавливается цикл, если использовать goto в цикле
вообщем в цикле вместо break использую goto для перехода к другому действию,вот я опасаюсь если я...

Неожиданное GoTo
Ребят помогите переделать код в номральный вид без GoTo. Я им не разу не пользовался так же как и...

Превращение кода с goto в код без goto
Помогите переписать это код без goto и потери производительности.А то мне кажется написано...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru