Задание 1. Тип заданий 25: обработка массивов.
  • Задание:

    Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 1000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести количество элементов массива, значение которых двузначно и заканчивается на 3.
    Например, для массива из пяти элементов: 5 67 23 48 13 — ответ: 2.
    Исходные данные объявлены так, как показано ниже на примере для языка Pascal. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.

    Pascal:
    const
        n=30;
    var
        a: array[1..n] of integer;
        i, j, t: integer;
    begin
        for i:=1 to n do
            readln(a[i]);
    ...

    end.

     

  • Решение:

    Для определения количества нужных нам элементов проверим каждый элемент массива с помощью цикла for.

    По заданию нам даны три переменные — i, j, t. Переменную i используем как счетчик цикла, переменную t — для подсчета количества элементов. Переменная j лишняя, её использовать не будем (это разрешено по условию). Кроме того, переменную t перед проверкой массива нужно обнулить.

    Каждый повтор цикла будет проверятся, соответствует ли элемент массива с индексом i условию, если соответствует, то переменная t будет увеличиваться на 1.

    Теперь составим условие. У нас должны подсчитываться элементы, которые 1. двузначные; 2. заканчиваются на 3. То есть:

    1. Для проверки двузначности условие будет выглядеть как

    (a[i]>=10) and (a[i]<=99).

    2. Если число заканчивается на 3, значит остаток от деления на 10 этого числа равен трем. То есть условие будет таким: 

    (a[i] mod 10 = 3).

    Составим программу:

     

    //обнулим переменную t

    t := 0;

    //проверим каждый элемент массива

    for i:=1 to n do

      if (a[i] >= 10) and (a[i] <= 99) and (a[i] mod 10 = 3) then

        t := t+1;

    //выведем результат на экран

    writeln(t);

Поделиться:
 
Комментарии (2)
Даниил Потемкин # 5 февраля 2016 в 18:21 0
Возможен ли такой вариант решения?
//обнулим переменную t
t := 0;
//проверим каждый элемент массива
for i:=1 to n do
if (a mod 10 = 3) and (a div 10 mod 10 <> 0) and (a div 100 mod 10 = 0) then
t := t+1;
//выведем результат на экран
writeln(t);
Информатик БУ # 5 февраля 2016 в 19:24 0
В общем да, в 25 разрешается писать что угодно, лишь бы программа работала верно.
Перевести число из в Результат: 510 = 1012