30.09.2022

Язык Паскаль. Циклический алгоритм. Решение задач. 8 класс

В этой публикации рассмотрим решение некоторых задач по теме "Циклический алгоритм".

Задача 1. С клавиатуры вводится N натуральных чисел. Найти количество чисел, оканчивающихся на 3.

Как будем решать задачу

Воспользуемся оператором цикла с счетчиком для ввода N чисел.

for k:=1 to N do

begin

readln(a);

end;

Чтобы узнать, оканчивается ли число на 3, воспользуемся операцией mod (целый остаток от деления).

Пусть число a=463.

Последнюю цифру вычислим так: a mod 10.

Действительно, 463 mod 10 равно 3.

Будем копить количество чисел (переменная p), оканчивающихся на 3, оператором:

if a mod 10 = 3 then p:=p+1;

Программа решения задачи на языке Паскаль

var k, N, p, a:integer;

begin

   writeln('Введите количество чисел N ');

   readln(N);

   p:=0;

   for k:=1 to N do

   begin

     writeln('Введите натуральное число ');

     readln(a);

    if a mod 10 = 3 then p:=p+1;

   end;

   writeln('Количество чисел, оканчивающихся на 3 равно ',p);

end.

Результат запуска программы

Результат запуска

А что, если бы числа были не натуральные, а целые (как отрицательные, так и положительные), изменилось бы условие в операторе if?

Задача 2. С клавиатуры вводится N целых чисел. Найти среднее арифметическое двузначных чисел.

Как будем решать задачу

Воспользуемся оператором цикла с счетчиком для ввода N чисел.

for k:=1 to N do

begin

readln(a);

end;

Как узнать двузначное перед нами число или нет. Приведем примеры целых двузначных чисел: 23, -34, -99, 55.

Таким образом, минимальное двузначное положительное число это 10, а максимальное 99. 

Минимальное отрицательное двузначное число это -99, а максимальное -10.

двузначные числа

Значит для проверки условия, является ли число двузначным, можно воспользоваться условием:

(a>=10) and (a<=99) or (a>=-99) and (a<=-10)

то есть число отрицательное двузначное или положительное двузначное.

Ранее в этом блоге мы рассматривали способы проверки такого условия. Читайте статью "Как проверить, является ли число двузначным".

Если число a двузначное, то будем копить сумму s и количество p таких чисел (будем использовать операторные скобки для объединения этих двух действий).

Программа решения задачи на языке Паскаль

var k, N, p, a, s:integer; sr:real;

begin

   writeln('Введите количество чисел N ');

   readln(N);

   p:=0; s:=0;

   for k:=1 to N do

   begin

     writeln('Введите целое число ');

     readln(a);

     if (a>=10) and (a<=99) or (a>=-99) and (a<=-10) then 

      begin

        p:=p+1;

        s:=s+a;

      end;

   end;

   sr:=s/p;

   writeln('Среднее значение равно ',sr);

end.

Результат запуска программы

Результат запуска

А что, если ни одного двузначного числа мы не введем, что выведет программа?



29.09.2022

Язык Паскаль. Верно ли, что только одно число из пары кратно 3?

Задача. С клавиатуры вводятся два целых числа. Верно ли, что только одно число кратно 3?

Приведем примеры:

Пусть A = 12, B = 11. В этом случае ответ ДА, первое число кратно 3, а второе не кратно 3.

Пусть A = 11, B = 12. В этом случае ответ ДА, второе число кратно 3, а первое не кратно 3.

Пусть A = 12, B = 12. В этом случае ответ НЕТ, оба числа кратны 3.

Пусть A = 11, B = 11. В этом случае ответ НЕТ, оба числа не кратны 3.

Как будем решать задачу

1 способ

Проверим условие

Если число А кратно 3 и при этом число В не кратно 3 или число А не кратно 3, а число В кратно 3, то ответ ДА, иначе НЕТ.

if (A mod 3 = 0) and (B mod 3<>0) or (A mod 3<>0) and (B mod 3=0) then print('ДА') else print('НЕТ');

2 способ

Проверим условие

НЕВЕРНО, что условие (число А кратно 3) равносильно условию (число В кратно 3)

if not ((A mod 3 = 0) = (B mod 3 = 0)) then print('ДА') else print('НЕТ');

3 способ

Для проверки такого условия можно использовать логическую операцию Исключающее ИЛИ (xor), по сути она равна логическому неравенству.

if (A mod 3 = 0) xor (B mod 3 = 0) then print('ДА') else print('НЕТ');

Если ввести обозначения двум условиям X и Y, то верно следующее:

not (X = Y) равно (X xor Y)