Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Delphi] Задачка на массивы


Автор: Alex103 16.11.2006, 10:25
Задание в прикрепленном файле!

Автор: Romikgy 16.11.2006, 12:40
Код

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var A: array [1..7] of Double;
Z: array of Double;
i,q: LongInt;
P: Double;
begin
  { TODO -oUser -cConsole Main : Insert code here }
  A[1]:=1;
  A[2]:=3.5;
  A[3]:=4;
  A[4]:=-0.8;
  A[5]:=1.9;
  A[6]:=5;
  A[7]:=13;
  ///////////////
  i:=0;
  for q:=1 to 7 do
  begin
    if ((2.0<=A[q]) and (A[q]<=10.0)) then
    begin
      Inc(i);
      SetLength(Z,i);
      Z[i-1]:=A[q];

    end;
  end;
  P:=1;
  for q:=0 to High(Z) do
   P:=P*Z[q];

  Writeln('Ishod massiv');
  for q:=1 to 7 do
  Write(A[q]:7:2);
  Writeln;

  Writeln('Proizvedenie=', P:8:2);

  Writeln('New massiv');
  for q:=0 to High(Z) do
  Write(Z[q]:7:2);
  Writeln;
  Readln;

end.


Автор: Kuvaldis 16.11.2006, 12:54
Romikgy, 
все правильно и грамотно, кроме этого, имхо
Код

  A[1]:=1;    
  A[2]:=3.5;    
  A[3]:=4;    
  A[4]:=-0.8;    
  A[5]:=1.9;    
  A[6]:=5;    
  A[7]:=13;


Думаю, что лучше было бы это при объявлении сделать smile 
Код

var
   A: array [1..7] of Double = (1,  3.5,  4,  -0.8,  1.9,  5,  13);


Со следующим пунктом ты, думаю, тоже согласишься:
для быстродействия лучше было бы сначала выделить для массива Z максимальное количество памяти (равное размеру исходного массива), а потом в конце его урезать (меньшее количество операций с "кучей"). Это имхо, мож я чего и не знаю... smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)