Написать 2 программы: 1. проверить, есть ли в массиве отрицательные элементы. если есть, вывести а-номер первого такого элемента, b-номер последнего. (использовать барьер) 2. проверить, является ли массив целых чисел симметричным

tushenka88 tushenka88    2   11.06.2019 18:10    0

Ответы
vladwf111 vladwf111  09.07.2020 15:58
Const
  n = 10;

var
  a: array[1..n] of integer;
  i, p, q: integer;
  flag: boolean;

begin
  {1. Инициализируем массив}
  Randomize;
  Write('Элементы массива: ');
  for i := 1 to n do
  begin
    a[i] := Random(101) - 50;
    Write(a[i]:5)
  end;
  Writeln;
  {2. проверяем элементы массива на наличие отрицательных значений}
  flag := true;
  i := 1;
  {2.1 Ищем первое по порядку отрицательное }
  while flag and (i <= n) do
  begin
    flag := (a[i] >= 0);
    i := i + 1
  end;
  if flag then Writeln('В массиве нет отрицательных элементов')
  else begin
    p := i - 1;
    {2.1 Ищем последнее по порядку отрицательное }
    i := n;
    flag := true;
    while flag and (i > p) do
    begin
      flag := (a[i] >= 0);
      i := i - 1
    end;
    if flag then Writeln('В массиве один отрицательный элемент с номером ', p)
    else
      Writeln('Отрицательные элементы лежат в промежутко от ', p, ' до ', i + 1)
  end
end.

Тестовое решение:

Элементы массива:    17  -45  -29  -30   32  -12   29  -39   20    6
Отрицательные элементы лежат в промежутке от 2 до 8

const
  nm = 50;{максимальная длина массива}

var
  i, n, n2: integer;
  a: array[1..nm] of integer;
  flag: boolean;

begin
  { 1. Инициализация массива }
  Write('Введите количество элементов в массиве: ');
  Readln(n);
  Write('Введите элементы массива через пробел ');
  for i := 1 to n do Read(a[i]);
  { 2. Проверка симметричности массива }
  flag := true;
  i := 1;
  n2 := n div 2;
  while flag and (i <= n2) do
  begin
    flag := (a[i] = a[n - i + 1]);
    i := i + 1
  end;
  if flag then Writeln('Массив является симметричным')
  else Writeln('Массив не является симметричным')
end.

Тестовое решение:

Введите количество элементов в массиве: 8
Введите элементы массива через пробел 1 7 3 4 4 2 7 1
Массив не является симметричным

Введите количество элементов в массиве: 7
Введите элементы массива через пробел 8 4 9 1 9 4 8
Массив является симметричным
ПОКАЗАТЬ ОТВЕТЫ
Abdurauf2004 Abdurauf2004  09.07.2020 15:58
Program z1;
var ar: array of integer;
f, l, i, N: integer;
begin       
readln(N);       
setlength(ar, N+1);       
for i:=1 to N do read(ar[i]);       
f:=-1;                
for i:=1 to N do begin               
if ar[i]<0 then begin                       
f:=i;                       
break;               
end;       
end;       
if f>0 then begin               
for i:=N downto 1 do begin                       
if ar[i]<0 then begin                               
l:=i;                               
break;                       
end;               
end;               
write(f,' ', l);       
end       
else write('No');
end.

program z2;
var ar: array of integer;
i, N: integer;
otv: boolean;
begin       
readln(N);       
setlength(ar, N+1);       
for i:=1 to N do read(ar[i]);       
for i:=1 to N div 2+1 do begin               
 if ar[i]<>ar[N-i+1] then begin otv:=true; break; end;       
end;       
if otv=true then write('No')       
else write('Yes');end.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика