Найдите наименьшее положительное число, которое находится в нечетной позиции

У меня есть программа генератора чисел массива, и мне нужно, чтобы она искала наименьшее положительное число, которое является нечетной позицией числа в Паскале.

Вот моя программа:

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). И скажите, какой из них содержит наименьшее возможное положительное значение. Но если у него их нет, то выведите, что у него нет ни одного из этого числа.

Надеюсь, вы действительно понимаете, для чего мне нужен этот алгоритм. Английский не мой родной язык. Спасибо за помощь.


person kilis    schedule 20.10.2013    source источник
comment
Проблема в том, что после того, как массив чисел сгенерирован в этой программе, он должен сообщить мне наименьшее положительное число, которое находится в нечетной позиции. Лично я пробовал для i:=1 to 20 выполнить циклический тест, но у меня это не работает   -  person kilis    schedule 21.10.2013


Ответы (1)


Цикл повторения, начинающийся с 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.');
person LU RD    schedule 20.10.2013