Функция всегда возвращает 0 - PullRequest
0 голосов
/ 30 ноября 2018

Я немного запутался, почему функция сложения всегда возвращает 0 независимо от того, какую комбинацию входов я размещаю.Я уже проверил, правильно ли размещены пользовательские входные данные в массиве, который я создал, и нет ли вообще никаких проблем с входными данными.Я неправильно структурировал функцию?

Program MathOperation;
uses crt;

type
inputArray = array [1..5] of real;
var
userChoice : integer;
inputValue : inputArray;

procedure userInputValues;
var
counter : integer = 0;
begin
    while counter<5 do
    begin
        write('>> Enter number [', counter + 1, ']: ');
        read(inputValue[counter]);
        counter := counter+1;
    end;
end;

function addOp:real;
var
addCtr : integer = 0;
sum : real = 0;
begin
     while addCtr<5 do
     begin
         sum := sum + inputValue[addCtr];
         addCtr := addCtr+1;
     end
end; 

1 Ответ

0 голосов
/ 30 ноября 2018

Ваша AddOp функция всегда возвращает 0, потому что вы никогда не присваиваете значение ее результату функции.Где-то в нем вы должны иметь оператор, который гарантированно * для выполнения и который выглядит следующим образом:

  AddOp := {whatever the correct value is}

Поскольку вы, очевидно, используете FreePascal, вы можете использовать Result какпсевдоним для результата функции, как в

  Result := {whatever the correct value is}

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

...