Предмет: Информатика,
автор: Looterize
Дан массив, состоящий из целых чисел. Напишите программу, которая определяет, есть ли в массиве пара соседних элементов с одинаковыми знаками.
Входные данные
Сначала задано число N — количество элементов в массиве (1N10000). Далее через пробел записаны N чисел — элементы массива. Массив состоит из целых чисел.
Выходные данные
Необходимо вывести слово YES, если существует пара соседних элементов с одинаковыми знаками. В противном случае следует вывести слово NO.
Примеры
Входные данные
5
1 -3 4 -2 1
Выходные данные
NO
Ответы
Автор ответа:
0
const
n=10000;
var
a:array[1..n]of integer;
i,n1, flag:integer;
begin
readln(n1);
for i:=1 to n1 do
read(a[i]);
for i:=1 to n1-1 do
if ((a[i]<0)and(a[i+1]<0))or
((a[i]>0)and(a[i+1]>0))then
flag:=1;
if flag=1 then
writeln('YES')
else
writeln('NO');
end.
n=10000;
var
a:array[1..n]of integer;
i,n1, flag:integer;
begin
readln(n1);
for i:=1 to n1 do
read(a[i]);
for i:=1 to n1-1 do
if ((a[i]<0)and(a[i+1]<0))or
((a[i]>0)and(a[i+1]>0))then
flag:=1;
if flag=1 then
writeln('YES')
else
writeln('NO');
end.
Автор ответа:
0
А вообще алгоритм крайне неэффективный, потому что после того, как найдена искомая пара элементов, компьютер будет вынужден продолжать бесцельно перелопачивать остальную часть массива. что мешало организовать выход из цикла по условию - ума не приложу. Можно было использовать ненавистный канонам структурного программирования (привет Эдгару Дейкстре!) break, или применить цикл c пред/постусловием.
Похожие вопросы
Предмет: Биология,
автор: bybyn737
Предмет: Биология,
автор: animeLeo
Предмет: Физика,
автор: hahadura
Предмет: Математика,
автор: matnaia1234
Предмет: Химия,
автор: bogomolova1998