Решаем задачи Абрамян на Паскале. Series32

Series32. Даны целые числа $$K$$, $$N$$, а также $$K$$ наборов целых чисел по $$N$$ элементов в каждом наборе. Для каждого набора вывести номер его первого элемента, равного 2, или число 0, если в данном наборе нет двоек.

Решение:

 

Решение от olegst1975:

Другие задачи из раздела Series можно посмотреть здесь.

Комментарии:

Комментарии 5

  • При таком решении выводиться будут все порядковые номера двоек в каждом наборе. А нужно только первой двойки.
    Если поставить 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;// заканчиваем бежать по наборам чисел.

      Минус данного метода, в том что числа набора вводятся в обратном порядке, но в задании не указанно откуда и как получаются данные наборы чисел.

      • Браво! Для прямого перебора предлагаю

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *