Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2017, 20:19   #1
qqq``
Пользователь
 
Регистрация: 05.09.2017
Сообщений: 26
По умолчанию Переделать конструкцию выхода из циклов

Задача:дан двумерный массив найти сумму элементов между первым и последним положительным элементом
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
  i,j,i1,i2,j1,j2,s:integer;
begin
 For i:=1 to 3 do begin
 for j:=1 to 3 do  begin
 If (Strtoint(stringgrid1.cells[i-1,j-1])) >0 then//Сравниваю ячейки на наличие первого положительного элемента begin
 i1:=i;
 i2:=j; //запоминаю индексы первой ячейки с положительным числом
 break;
 end;
 end;
 end;
 For i:=3 downto 1 do begin
   For j:=3 downto 1 do begin
     If (Strtoint(stringgrid1.cells[i-1,j-1]))> 0 then  // Сравниваю ячейки на наличие последнего положительного элемента
     begin
      j1:=i;
      j2:=j; //запоминаю индексы ячейку с последним с положительным числом 
     break;
     end;
     end;
   end;
   For i:=i1  to j1 do begin цикл определяет сколько строк пройдёт цикл
 For j:=i2  to j2 do begin цикл определяет сколько столбцов пройдёт цикл

   s:=(strtoint(stringgrid1.cells[i-1,j-1])) + s;
          label1.caption:=inttostr(s);
        end;
 end;

_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 19.10.2017 в 21:56.
qqq`` вне форума Ответить с цитированием
Старый 19.10.2017, 22:19   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

И зачем ещё одну тему создавать?!

Код:
Const SizeMatrix = 3;

procedure TForm1.Button2Click(Sender: TObject);
var
  i,j,row1,col1,rowLast,colLast, jLimit1, jLimit2, s:integer;
begin
 row1 := -1; col1 := -1;
 row2 := -1; col2 := -1;
 
 For i:=1 to SizeMatrix do 
   for j:=1 to SizeMatrix do  
     If (Strtoint(stringgrid1.cells[j-1,i-1]))>0 then //Сравниваю ячейки с нулём, если найден положительный элемент, то
     begin
       if row1<0 then begin row1 := i; col1 := j end //запоминаю индексы первой ячейки с положительным числом
       else begin row2 := i; col2 := j end; // запоминаем все индексы следующих положительных элементов
     end;

  if row2<0 then  label1.caption := 'В матрице нет двух положительных чисел!'
  else begin
    // найдём сумму элементов между положительными числами (__включая__ и сами эти числа)
    s := 0;
    For i:=row1 to row2 do begin    /// цикл определяет сколько строк пройдёт цикл
       if  i=row1 then jLimit1 := col1 else jLimit1 := 1;
       if  i=row2 then jLimit2 := col2 else jLimit2 := 1;

      For j:=jLimit1 to jLimit2 do  // цикл определяет сколько столбцов пройдёт цикл
         s:=strtoint(stringgrid1.cells[j-1,i-1]) + s;
    end;
    label1.caption := IntToStr(s);
  end; 

end;
вопросы будут?

Последний раз редактировалось Serge_Bliznykov; 19.10.2017 в 22:21.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.10.2017, 23:09   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию


67.png
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно расположить страницы через конструкцию switch Predator199 PHP 3 03.12.2012 21:28
Как изменить конструкцию верстки чтоб div с меню оставался на месте? div-looser HTML и CSS 3 26.04.2011 10:28
Как давно яндекс понимает конструкцию вида - site:programmersforum.ru? Alar Свободное общение 7 26.09.2010 19:11
Чем можно заменить конструкцию? Или как быть ? kitovras Microsoft Office Excel 3 12.08.2009 15:31