Написать 2 программы:1. Проверить, есть ли в массиве отрицательные элементы. Если есть,...

0 голосов
64 просмотров

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


Информатика (34 баллов) | 64 просмотров
0

Ну и терминология! Что за "барьер" такой?

0

Барьерный» алгоритм используется для поиска в неупорядоченном массиве. То есть в массиве мы ставим шаблон

0

В массиве находятся значения элементов. Как там можно что-то еще "ставить"?

0

Дурят детям головы околонаучными терминами... лучше юы алгоритмизацию за потраченное на эту чепуху время объясняли.

0

Полностью согласна) но ничего уж не поделаешь

Дано ответов: 2
0 голосов
Правильный ответ

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<br>  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<br>  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
Массив является симметричным








(142k баллов)
0 голосов

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                        <br>f:=i;                       
break;               
end;       
end;       
if f>0 then begin               
for i:=N downto 1 do begin                       
if ar[i]<0 then begin                                <br>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.

(915 баллов)
0

А где ошибка в 1? У меня выводит правильные ответы

0

Вторая программа работает идеально, спасибо огромное! А вот первая не получается

0

Первый ввод - кол-во чисел в массиве, дальше идут сами числа, выводит номер 1 и последнего

0

Обычно преподаватели за break карают нещадно)))

0

Alviko, правильно говорите) поэтому я убрала break. И во второй строчке выводится ошибка потому что не хватает [], а если их ставить, то выводится другая ошибка

0

я не смотрел эту версию,тут автор есть)))

0

Разные компиляторы, тестировал на FreePascal 2.6.0