Задача 17 Урок 15

Задача 17 Урок 15

Дан массив длиной N (не более 100 элементов).
Проверить, что в нем в встречаются все числа от 0 до k, где 0≤k

Указание: Проверку массива на соответствие условиям
задачи вынести в подпрограмму (функцию)

type
  arr1 = array [1..100] of integer;

var
  min, max, i, j, k : integer;
  a : arr1;

function function1 (k : integer) : boolean;
var
  s : string;
begin
  for i := 0 to k do
  begin
    for j := 1 to high(a) do
      if i = a[j] then
      begin
        result := true;
        break;
      end
      else
      begin
        result := false;
      end;
    if result = false then
      break;
  end;



end;

begin
  randomize();
  min := 0;
  max := 100;
  for i := low(a) to high(a) do
    a[i] := min + random(max - min + 1);
  writeln('Введите число');
  readln(k);
  if function1(k) = true then
    write('Встречаются все')
  else
    write('Встречаются не все');
  writeln;
  for i := low(a) to high(a) do
    write(a[i], ' ');
  writeln;
  write('Программа завершила свою работу');
  readln();readln();
end.     

vedro-compota's picture

замечания:

type
  arr1 = array [1..100] of integer;

var
  min, max, i, j, k: integer;
  a: arr1;

function function1(k :integer): boolean;
var
  s : string;
begin
  for i := 0 to k do
  begin
    for j := 1 to high(a) do // уйти от привязки к глобальной переменной
      if i = a[j] then
      begin
        result := true;
        break;
      end
      else
        result := false; // зачем каждый выставлять в false?
    if result = false then
      break;
  end;
end;

begin
  randomize();
  min := 0;
  max := 100;
  for i := low(a) to high(a) do
    a[i] := min + random(max - min + 1);
  writeln('Введите число');
  readln(k);
  if (function1(k)) then // не оптимально, не информатирвное имя
    write('Встречаются все')
  else
    write('Встречаются не все');
  writeln;
  for i := low(a) to high(a) do
    write(a[i], ' ');
  writeln();
  write('Программа завершила свою работу');
  readln();readln();
end.

_____________
матфак вгу и остальная классика =)

type
  arr1 = array [1..100] of integer;

var
  min, max, i, j, k: integer;
  a: arr1;

function searchNum(k: integer; a: arr1): boolean;
var
  s : string;
begin
  for i := 0 to k do
  begin
    result := false;
    for j := 1 to high(a) do
      if i = a[j] then
      begin
        result := true;
        break;
      end;
    if result = false then
      break;
  end;
end;

begin
  randomize();
  min := 0;
  max := 10;
  for i := low(a) to high(a) do
    a[i] := min + random(max - min + 1);
  writeln('Введите число');
  readln(k);
  if (searchNum(k, a)) then
    write('Встречаются все')
  else
    write('Встречаются не все');
  writeln;
  for i := low(a) to high(a) do
    write(a[i], ' ');
  writeln();
  write('Программа завершила свою работу');
  readln();readln();
end.
vedro-compota's picture

засчитано

_____________
матфак вгу и остальная классика =)