Перебор чисел на промежутке по некоторому условию.

Перебор чисел на промежутке по некоторому условию.

В заданиях данного типа необходимо перебрать числа на некотором промежутке от А до В и выполнить с ними определенные действия. Чаще всего действия необходимо выполнять не с всеми числами из данного диапазона, а отобранными по некоторому критерию/условию.

Возможные варианты:
1)      вывод чисел (следует обращать внимание на условия вывода: в каком порядке, возрастания или убывания, следует выводить числа);
2)      подсчет количества чисел;
3)      нахождение суммы чисел;
4)      нахождение среднего арифметического чисел.

В значительной степени задачи упрощаются отсутствием требований по памяти и времени выполнения, т.е. единственный критерий – это получить правильный результат.

Стандартная структура перебора по некоторому условию на промежутке от А до В:

Pascal
1
2
3
4
read(a, b);  //если границы промежутка вводятся с клавиатуры
for i := a to b do
  if <условия проверки  чисел i> then
    выполнение действий с числом i;

Примеры программ (фрагменты).

Вывод четных чисел в порядке возрастания:

Pascal
1
2
3
4
read(a, b);  //если границы промежутка вводятся с клавиатуры
for i := a to b do
  if i mod 2 = 0 then
    writeln(i);

 

Вывод нечетных чисел в порядке убывания:

Pascal
1
2
3
4
read(a, b);  //если границы промежутка вводятся с клавиатуры
for i := b downto a do
  if i mod 2 <> 0 then
    writeln(i);

 

Подсчет количества четных чисел:

Pascal
1
2
3
4
5
6
7
read(a, b);
count := 0;
 
For i := a to b do
  if i mod 2 = 0 then count := count + 1;
 
write(count);

Нахождение суммы четных чисел:

Pascal
1
2
3
4
5
6
7
read(a, b);
sum := 0;
 
For i := a to b do
  if i mod 2 = 0 then sum := sum + i;
 
write(sum);

Нахождение среднего арифметического чисел оканчивающихся на 0. Если по условию задачи нам не гарантируется наличие чисел, оканчивающихся на 0, мы обязаны проверить счетчик к перед нахождением среднего арифметического. В противном случае мы рискуем получить деление на 0.

 

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
read(a, b);
sum := 0;
count := 0;
 
For i := a to b do
  begin
    if i mod 10 = 0 then begin
      sum := sum + i;
      count := count + 1
    end;
  end;
 
if count = 0 then write('Таких чисел нет')
  else
    begin
      sr_ar := sum / count;
      write(sr_ar);
    end;

 

 

 

 

 

 

 

 

 

 

Последнее изменение: Суббота, 9 Февраль 2019, 21:16