Намерете най-малкото положително число, което е позиция на нечетно число

Имам програма за генериране на числа на масиви и ми трябва, за да търся най-малкото положително число, което е позиция на нечетно число в 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.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 до 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