Noname
Гений
(69513)
4 года назад
var a:array [1..100] of integer;
i, k, n:integer;
begin
readln(n);
for i:=1 to n do read(a[i]);
k := 0;
for i:=1 to n do begin
if (a[i]<0) then k:=k+1;
if (k = 2) then begin
write(a[i]);
writeln(i);
halt;
end;
end;
write('такого нет');
end.
Вадим ЛеоновУченик (128)
4 года назад
Там немного не так, должен появляться набор цифр по такой форме:
n= 10
29 -43 64 -81 -78 82 33 -52 85 22
A[4]= -81
Давид Касумов
Ученик
(106)
4 года назад
Если не можешь решить такую задачу, то ты и код не поймёшь . Могу на словах тебе объяснить, а ты попробуй состряпать так, как умеешь . Создай переменную, куда поместишь этот массив, и создай вторую переменную, тоже массив, но уже пустой . Циклом for перебирай этот первый массив и if’ом проверяй, отрицательное число или нет, если да, то помести эту цифру во второй массив . На выходе из цикла у тебя будет второй массив со всеми отрицательными числами из первого массива, и вот из второго массива вытяни второе число .
samuraiГуру (2646)
4 года назад
какой нахрен второй массив, ты с башкой дружишь? обычный счётчик отрицательных элементов делаешь и когда он достигнет двойки присваиваешь ему значение этого элемента массива. дальше счётчик не пойдёт, если через <2 сделать
Шахзод Ахрорходжаев
Ученик
(199)
4 года назад
begin
var n, val: integer;
readln(n);
var arr := new integer[n];
for var i := 0 to n - 1 do read(arr[i]);
for var i := 0 to n - 1 do
begin
if(arr[i] < 0) then val += 1;
if(val = 2) then begin
writeln('Число: ' + arr[i], ', его номер: ' + (i + 1));
exit;
end;
end;
end.
(PascalABC.NET 3.6.2)
Принцип работы прост. Читаем переменную, которая будет являться размером массива, и создаем на её основе сам массив. Потом считываем массив, после чего начинаем проверять его элементы. Если найдется элемент меньше нуля, то увеличиваем созданный нами ранее счетчик на единицу (val). После второго увеличения выводим само число, и его индекс+1, так как у массивов первый элемент имеет индекс 0.