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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2010, 21:52   #1
dark_sergey
Пользователь
 
Регистрация: 26.09.2010
Сообщений: 11
По умолчанию значение счетчика

Обьясните что делает счетчик выделеный красным

uses crt;

type
m1=array[1..5,1..4] of integer;

var a:m1;

procedure Input(var g:m1);
var x,y:integer;
begin
for x:=1 to 5 do
for y:=1 to 4 do
begin
Write('g[',x,',',y,']=');
ReadLn(g[x,y]);
end;
end;

procedure Output(var g:m1);
var x,y:integer;
begin
for x:=1 to 5 do
for y:=1 to 4 do
begin
if y<>4 then
Write(' g[',x,',',y,']= ',g[x,y])
else
WriteLn(' g[',x,',',y,']= ',g[x,y]);
end;
end;

procedure Search(var g:m1);
var x,m,y,xx,yy:integer;
el,max:real;
k:boolean;
begin
m:=1;
k:=false;

max:=0;
for x:=1 to 5 do
for y:=1 to 4 do
begin
el:=g[x,y];
for xx:=1 to 5 do
for yy:=1 to 4 do
begin
if (el=g[xx,yy]) and (m=1) then
begin
if (x<>xx) or (y<>yy) then
begin
max:=el;
k:=true;
m:=2;

end;
end
else
if (el=g[xx,yy])and (el>max) then
if (x<>xx) or (y<>yy) then
begin
max:=el;
end;
end;
end;
if k=true then
WriteLn('max=',max:1:4)
else
WriteLn('no max>1 raza');
end;

begin
Input(a);
WriteLn;
Output(a);
WriteLn;
Search(a);
ReadLn;
end.
dark_sergey вне форума Ответить с цитированием
Старый 16.12.2010, 22:21   #2
Ghost of Night
Форумчанин
 
Аватар для Ghost of Night
 
Регистрация: 08.08.2010
Сообщений: 371
По умолчанию

Вы код оформлять пробовали???
Хакинг - не преступление, а способ выживания.
Ghost of Night вне форума Ответить с цитированием
Старый 16.12.2010, 22:28   #3
dark_sergey
Пользователь
 
Регистрация: 26.09.2010
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Ghost of Night Посмотреть сообщение
Вы код оформлять пробовали???
Код:
uses crt;

type
     m1=array[1..5,1..4]  of integer;

var   a:m1;

procedure Input(var g:m1);
var x,y:integer;
begin
   for x:=1 to 5 do
   for y:=1 to 4 do
     begin
      Write('g[',x,',',y,']=');
      ReadLn(g[x,y]);
     end;
end;

procedure Output(var g:m1);
var x,y:integer;
begin
   for x:=1 to 5 do
   for y:=1 to 4 do
     begin
       if y<>4 then
         Write(' g[',x,',',y,']= ',g[x,y])
       else
         WriteLn(' g[',x,',',y,']= ',g[x,y]);
     end;
end;

procedure Search(var g:m1);
var x,m,y,xx,yy:integer;
    el,max:real;
     k:boolean;
begin
   m:=1;
   k:=false;
   max:=0;
      for x:=1 to 5 do
      for y:=1 to 4 do
        begin
          el:=g[x,y];
           for xx:=1 to 5 do
           for yy:=1 to 4 do
             begin
                 if (el=g[xx,yy])  and (m=1) then
                  begin
                   if (x<>xx) or (y<>yy) then
                     begin
                       max:=el;
                       k:=true;
                       m:=2;
                     end;
                  end
                 else
                    if (el=g[xx,yy])and (el>max) then
                       if (x<>xx) or (y<>yy) then
                         begin
                            max:=el;
                         end;
             end;
        end;
    if k=true then
     WriteLn('max=',max:1:4)
    else
     WriteLn('no max>1 raza');
end;

begin
Input(a);
WriteLn;
Output(a);
WriteLn;
Search(a);
ReadLn;
end.
dark_sergey вне форума Ответить с цитированием
Старый 16.12.2010, 22:39   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

это не счётчик.
здесь у Вас и K и m выступают в роли флажков.
K - в начале программы false (это значит, максимум ещё не найден). Как только нашли максимум - делаем его true

m в начале программы 1.
Как только нашли 1-й максимум - присваиваем ему двойку,
и уже алгорит идёт по другому пути:
(if (el=g[xx,yy]) and (m=1) then - уже не срабатыет,
а срабатывает else


p.s.
1) наверняка можно обойтись одной переменной..
2) в следующий раз, когда приводите код, указывайте задачу, которую этот код решает. Так проще понять, что в коде делается...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.12.2010, 22:45   #5
dark_sergey
Пользователь
 
Регистрация: 26.09.2010
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
это не счётчик.
здесь у Вас и K и m выступают в роли флажков.
K - в начале программы false (это значит, максимум ещё не найден). Как только нашли максимум - делаем его true

m в начале программы 1.
Как только нашли 1-й максимум - присваиваем ему двойку,
и уже алгорит идёт по другому пути:
(if (el=g[xx,yy]) and (m=1) then - уже не срабатыет,
а срабатывает else


p.s.
1) наверняка можно обойтись одной переменной..
2) в следующий раз, когда приводите код, указывайте задачу, которую этот код решает. Так проще понять, что в коде делается...

Спасибо... В общем все понял , токо смушает m и то как он изменяется и зачем он это делает.

А программа находит максимальный елемент встречаюшийся в масиве более 1 раза.
dark_sergey вне форума Ответить с цитированием
Старый 16.12.2010, 22:46   #6
Ghost of Night
Форумчанин
 
Аватар для Ghost of Night
 
Регистрация: 08.08.2010
Сообщений: 371
По умолчанию

Согласитесь же, что так намного приятней читать текст...

В этой проге получается, что если переменной k хоть 1 раз присвоили true, то она по любому выведет значение max.
А переменная m служит для ограничения присвоения true переменной k.

Вроде так
Хакинг - не преступление, а способ выживания.
Ghost of Night вне форума Ответить с цитированием
Старый 16.12.2010, 22:47   #7
Ghost of Night
Форумчанин
 
Аватар для Ghost of Night
 
Регистрация: 08.08.2010
Сообщений: 371
По умолчанию

Похоже опоздал((
Хакинг - не преступление, а способ выживания.
Ghost of Night вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Установка счетчика doober Microsoft Office Access 3 21.02.2010 23:15
обнуление счетчика в бд Tanuska___:) БД в Delphi 2 22.01.2009 23:10
Эмуляция счетчика tolikman Microsoft Office Access 3 24.10.2008 11:13
Сброс счетчика vldand Microsoft Office Access 1 20.10.2008 18:40