Series32. Даны целые числа $$K$$, $$N$$, а также $$K$$ наборов целых чисел по $$N$$ элементов в каждом наборе. Для каждого набора вывести номер его первого элемента, равного 2, или число 0, если в данном наборе нет двоек.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
program Series32; var K,N,Ni,Ki,A,Num:Integer; begin Write('N: '); Readln(N); Write('K: '); Readln(K); for Ki:=1 to K do begin Num:=0; for Ni:=N downto 1 do begin write('Введите ',Ni,' число из ',Ki ,' набора :'); Readln(A); if A=2 then Num:=Ni; end; Writeln(Num); end; end. |
Решение от olegst1975:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
program Series32; var k,n,i,i1,num,check:integer; begin read(k); read(n); for i:=1 to k do begin check:=0; for i1:=1 to n do begin read(num); if (num=2) and (check=0) then check:=i1; end; write(check); end; end. |
Другие задачи из раздела Series можно посмотреть здесь.
При таком решении выводиться будут все порядковые номера двоек в каждом наборе. А нужно только первой двойки.
Если поставить break после первого совпадения, то задачник выведет ошибку, что введены не все данные. Встал я в ступор, как тут быть, поэтому сделал многомерным динамическим массивом. Возможно, перемудрил, но всё работает:
>При таком решении выводиться будут все порядковые номера двоек в каждом наборе. А нужно только первой двойки.
Почему ты так думаешь?
for Ki:=1 to K do // бегу по всем наборам чисел
begin
Num:=0; // обнуляю num если он не встретится в наборе то будет равен нулю
for Ni:=N downto 1 do // бегу по конкретному набору чисел с конца в начало используя конструкцию for downto do
begin
write(‘Введите ‘,Ni,’ число из ‘,Ki ,’ набора :’);
Readln(A);
if A=2 then Num:=Ni; // если встречается элемент равный 2 запомнить его номер
end; // заканчиваю бежать по набору с конца в начало… номер самого первого элемента со значением 2 будет запомнен
Writeln(Num);// выводим номер самого первого элемента со значением 2
end;// заканчиваем бежать по наборам чисел.
Минус данного метода, в том что числа набора вводятся в обратном порядке, но в задании не указанно откуда и как получаются данные наборы чисел.
Браво! Для прямого перебора предлагаю
Добавил решение.