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

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

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

Решение:

program u15z15;
type newArr = array [1..100] of integer;
var a,b:newArr;
  i,j,k,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();
  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:=1 to 100 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.

Консоль:

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

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

or j:=0 to k do
  begin
    for i:=1 to 100 do
    begin
      if j=a[i] then
      begin
        count:=count+1;
        break;
      end
    end;
  end;

-- если какое-то число не встретилось, дальше проверять смысла нет

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

Решение:

program u15z15;
type newArr = array [1..100] of integer;
var a:newArr;
  i,j,k: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:integer): boolean;
begin
  for j:=0 to k do
  begin
    t:=FALSE;
    for i:=low(arr) to high(arr) 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);
  write('vvedite chislo k: ');
  readln(k);
  writeln(otrezok(a,k));
  readln();
end.   

Консоль:

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

засчитано

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