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

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

Дан массив длиной N (не более 100 элементов). Проверить, что в этом массиве на отрезке индексов от m до p ( 1≤m<p≤N, считая что массив индексируется с единицы) встречаются все числа от 0 до k, где 0≤k<N.

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

Решение:

program u15z16;
type newArr = array [1..100] of integer;
var a:newArr;
  i,j,k,m,p,count:integer;

function randomArr(arr:newArr): newArr;
begin
  for i:=low(arr) to high(arr) do
    arr[i]:=random(31);
  result:=arr;
end;

begin
  randomize;
  a:=randomArr(a);
  writeln();
  m:=20;
  p:=80;
  for i:=low(a) to high(a) do
    write(a[i],'|');
  writeln();
  write('vvedite chislo k: ');
  readln(k);
  count:=-1;
  for j:=0 to k do
  begin
    for i:=m to p do
    begin
      if j=a[i] then
      begin
        count:=count+1;
        break;
      end;
    end;
  end;
  if count=k then
    write('TRUE')
  else
    write('FALSE');
  readln();
end.

Консоль:

5|5|21|12|13|0|21|30|1|17|13|25|25|14|10|19|3|15|15|0|14|11|22|14|0|24|5|25|18|22|22|17|5|28|3|20|9|3|18|30|10|20|18|2|9|27|10|22|19|8|12|25|10|1|24|20|12|19|11|29|30|15|4|6|16|15|7|0|23|29|24|30|27|1|22|17|1|2|17|12|9|6|9|3|27|24|24|23|8|5|2|20|5|14|29|26|5|27|5|2|
vvedite chislo k: 10
TRUE
vedro-compota's picture

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

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

Решение:

program u15z16;
type newArr = array [1..100] of integer;
var a:newArr;
  i,j,k,m,p:integer;
  t:boolean;

  function randomArr(arr:newArr): newArr;
  begin
    for i:=low(arr) to high(arr) do
      arr[i]:=random(31);
    result:=arr;
  end;

  procedure writeArr(arr:newArr);
  begin
    for i:=low(arr) to high(arr) do
      write(arr[i],'|');
    writeln();
  end;

  function otrezok(arr:newArr; k,m,p:integer): boolean;
  begin
    for j:=0 to k do
    begin
      t:=FALSE;
      for i:=m to p do
      begin
        if j=arr[i] then
        begin
          write(j,' ');
          t:=TRUE;
          break;
        end;
      end;
      if t=FALSE then
        break;
    end;
    result:=t;
  end;

begin
  randomize;
  a:=randomArr(a);
  writeArr(a);
  m:=20;
  p:=80;
  write('vvedite chislo k: ');
  readln(k);
  writeln(otrezok(a,k,m,p));
  readln();
end.    

Консоль:

9|3|14|29|25|23|23|8|17|29|30|30|20|3|6|30|1|16|26|0|21|13|23|25|29|30|28|11|19|30|30|13|12|8|6|1|24|17|14|2|27|14|28|26|15|15|24|17|15|18|21|20|19|23|19|24|15|7|22|4|15|19|25|27|6|19|2|1|27|2|26|9|10|15|14|7|23|17|23|13|27|9|14|15|4|11|18|18|13|21|29|7|10|28|9|6|28|16|8|16|
vvedite chislo k: 10
0 1 2 FALSE
vedro-compota's picture

засчитано

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