Показать сообщение отдельно
  #1  
Старый 04.09.2011, 19:22
Аватар для Aleks26
Aleks26 Aleks26 вне форума
Прохожий
 
Регистрация: 19.12.2010
Сообщения: 32
Репутация: 12
Вопрос Непонятная работа цикла for

У Фаронова есть простейший пример для иллюстрации работы с массивами. Вроде все просто, но я столкнулся с такой штукой: когда я начинаю цикл for ( он помечен у меня ЦИКЛ2), он считается у меня почему-то в обратном порядке (я пробовал пошагово его пройти и первое значение индекса равно 99, затем 98 и т.д.). Не могу понять, почему он не считает от 2 до N. Подскажите кто-нибудь.

Код:
unit unAverage1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    btnRun: TButton;
    memOutPut: TMemo;
    lblOutPut: TLabel;
    procedure btnRunClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btnRunClick(Sender: TObject);
const
 N = 100;
 Max_Value = 100+1;
var
 m: array[1..N] of Integer;
 i,j: Integer;
 max, min: Integer;
 sum: Real;
 S: String;
begin
 S := '';
 for i := 1 to N do
  begin
   m[i] := Random(Max_Value);
   S := S + #9 + IntToStr(m[i]);
   if i mod 10=0 then
    begin
     memOutPut.Lines.Add(S);
     S := '';
    end
  end;
 sum := m[1];
 max := m[1];
 min := m[1];
 for j := 2 to N do  { ЦИКЛ 2}
  begin
   sum := sum + m[j];
   if m[j] < min then
    min := m[j]
   else if m[j] > max then
    max := m[j]
  end;
 lblOutPut.Caption := ' Минимум = ' + IntToStr(min) + ' Максимум = ' +
                      InttoStr(max) + ' Среднее = ' + FloatToStr(sum/N);
end;

end.
Ответить с цитированием