Arrays 查找奇数位置的最小正数

Arrays 查找奇数位置的最小正数,arrays,algorithm,optimization,pascal,Arrays,Algorithm,Optimization,Pascal,我有一个数组数生成器程序,我需要它来搜索帕斯卡中奇数位置的最小正数 这是我的节目: Program UZD5_linx; uses crt, Math; var MasGen:array [1..20] of real; i,id:integer; x,sk,MinVP:real; MAKE:text; funk:string; label SAKUMS,DZOB,REZ,BEIGAS; begin assign(MAKE, 'Gnerejums.tx

我有一个数组数生成器程序,我需要它来搜索帕斯卡中奇数位置的最小正数

这是我的节目:

Program UZD5_linx;
uses crt, Math;
var MasGen:array [1..20] of real;
    i,id:integer;
    x,sk,MinVP:real;
    MAKE:text;
    funk:string;
    label SAKUMS,DZOB,REZ,BEIGAS;
begin
  assign(MAKE, 'Gnerejums.txt');
  rewrite(MAKE);
  clrscr;
  randomize;
SAKUMS:
    writeln('Darbibas');
    writeln('Ievadisana - Darbs');
    writeln('Uzdevumu beigsana - Beigas');
    writeln('Parbaude - Test');
    read(funk);
    if funk='Darbs' then goto DZOB; //main generetor
    if funk='Beigas' then goto BEIGAS;//end
    if funk='Test' then goto REZ;//The main algorithm
    readln;
DZOB:
  writeln('Ievadiet savu mainigo sin vertibu');//Read in the value
  readln(x);
  {skaitlu generacija}
  for i:=1 to 20 do
  MasGen[i]:=cos(random(20))+(random(10))*sin(x)-tan(random(30))-random(25)-cot(x);
  for i:=1 to 20 do
  begin
  writeln('Nr= ',i,' ','Vertiba=',MasGen[i]:2:3);
  writeln(MAKE,'Nr= ',i,' ','Vertiba=',MasGen[i]:2:3);
  end;
  readln;
  writeln(MAKE);
  goto SAKUMS;
REZ:
    //Algorimhm here
    goto SAKUMS; //Sakums = Start
BEIGAS:
  close (MAKE);
end.
我需要在生成的数组之后,测试并写出最小的正数
sk[I]
,然后写出它在数组I中的位置,即奇数位置(如
1,3,5,7,9,11,13,15,17,18
)。并指出哪一个包含最小的正值。但是如果它没有,那么打印它没有这个号码


我希望你真正理解我需要这个算法做什么。英语不是我的母语。感谢您的帮助。

重复直到循环,从i=1开始,每个循环添加2,这样您就可以针对奇数索引

minIx变量控制是否找到正的最小值及其索引

i := 1;
minIx := 0;
minVal := 0;
repeat
  if (arr[i] > 0) then begin // Positive value
    if (minIx = 0) or (arr[i] < minVal) then begin
      minVal := arr[i];
      minIx := i;
    end; 
  end;
  i:= i+2;
until i > 19;
if (minIx > 0) then 
  WriteLn('Min:',minVal,' Ix:',minIx)
else
  WriteLn('No positive values in odd index positions.');
i:=1;
minIx:=0;
最小值:=0;
重复
如果(arr[i]>0),则开始//正值
如果(minIx=0)或(arr[i]19;
如果(minIx>0),则
WriteLn('Min:',minVal,'Ix:',minIx)
其他的
WriteLn('奇数索引位置无正值');

。问题是,在此程序中生成数字数组后,它需要告诉我奇数位置的最小正数。我个人尝试了I:=1到20做循环测试,但对我不起作用