Как проверить все элементы в массиве на паскале - PullRequest
0 голосов
/ 08 мая 2018

Как бы я закодировал это так, чтобы, если элемент равнялся определенному значению, он отображал сообщение, но если ВСЕ элементы внутри этого массива не равны этому значению, то он выводил бы «Нет»?

Я пробовал

for i := 0 to high(array) do
begin
    if (array[i].arrayElement = value) then
    begin
        WriteLn('A message');
    end;
end;

Этот бит работает, но я не знаю, как выполнить проверку всех битов. У меня было это:

if (array[i].arrayElement to array[high(array)].arrayElement <> value) then
begin
    WriteLn('None');
end;

Но это не позволило мне использовать «до»

1 Ответ

0 голосов
/ 08 мая 2018

Для этого проще всего написать вспомогательную функцию:

function ArrayContains(const arr: array of Integer; const value: Integer): Boolean;
var
  i: Integer;
begin
  for i := Low(arr) to High(arr) do
    if arr[i] = value then
    begin
      Result := True;
      Exit;
    end;
  Result := False;
end;

Или используя for/in:

function ArrayContains(const arr: array of Integer; const value: Integer): Boolean;
var
  item: Integer;
begin
  for item in arr do
    if item = value then
    begin
      Result := True;
      Exit;
    end;
  Result := False;
end;

Тогда вы называете это так:

if not ArrayContains(myArray, myValue) then
  Writeln('value not found');
...