вторник, 14 апреля 2020 г.

Разбор задач while2, while3, while4

WHILE2:

Задача while2 отличалась от задачи while1 только тем, что нужно было изменить порядок вывода чисел с 10 до 1. Для этого нужно было задать в качестве начального значения 10 и уменьшать значение переменной i на 1.


Алгоритм:
1. Объявить целочисленную вспомогательную переменную i, которая будет принимать значения от 10 до 1.
2. Определить начальное значение переменной i, равное 10.
3. До тех пор пока значение переменной i будет больше либо равно 1, выводить текущее значение i  и переходить к следующему (уменьшать значение переменно i на 1).

Программа на языке Pascal:

//Вывести числа от 10 до 1 через пробел
program while1;
var i:integer //целое число
begin
writeln('Вас приветствует программа Петрова П')
  i := 10;  //задать начальное значение переменной i
  while (i >= 1) do
  begin
      write (i, '   ');  //Вывод значений переменной i через пробелы
      i := i - 1;       //Уменьшение значения переменой i на 1
  end;
end.






WHILE3

Вычислить сумму и произведение чисел от 1 до 9.
В результате нужно получить значения выражений: 1+2+3+4+5+6+7+8+9 и 1*2*3*4*5*6*7*8*9

В данной задаче следовало создать две вспомогательные переменные: sum и proizv, а также переменную i, которая бы меняла свое значение от 1 до 9.

В цикле должны выполнятся следующие действия:
Переменная sum должна увеличиваться на значение i.
Переменная proizv должна умножаться на значение i.
Переменная i должна изменять свое значение на 1 для перехода к следующему числу.


Программа на языке Pascal:

//Вычислить сумму и произведение чисел от 1 до 9
program while3;
var i:integer //целое число
var sum, proizv:integer //вспомогательные переменные
begin
writeln('Вас приветствует программа Петрова П')
  i := 1;  //задать начальное значение переменной i
  sum := 0; //задать начальное значение sum. 0 не влияет на сумму
  proizv := 1; //задать начальное значение proizv. 1 не влияет на произведение
  while (i <= 9) do
  begin
     sum := sum + i; // Переменная sum увеличивается на значение i.
     proizv := proizv * i; // Переменная proizv умножается на значение i.
     i := i + 1;       //Увеличение значения переменой i на 1
  end;
  writeln ('1+2+3+4+5+6+7+8+9=', sum); //Вывод результата - значение переменной sum
  writeln ('1*2*3*4*5*6*7*8*9=', proizv); //Вывод результата - значение переменной proizv
end.



WHILE4
Дано целое число A. Если оно является степенью числа 4, то вывести "yes", иначе вывести "no".

В данном случае надо выяснить будет ли число делится на 4 без остатка до тех пор, пока не дойдем до 1.

То есть нам нужно взять число а, проверить остаток от деления на 4. Если остаток 0, то мы с помощью целочисленного деления div делим число на 4.

Почему нельзя использовать деление "/". дело в том, что при таком делении тип переменной а должен быть real, а значит мы не сможем проверять остаток от деления.


Программа на языке Pascal:

//Дано целое число A. Если оно является степенью числа 4, то вывести "yes", иначе вывести "no".
program while4;
var a:integer //целое число
begin
writeln('Вас приветствует программа Петрова П')
read (a); //считываем значение переменной а с клавиатуры
while (a mod 4 = 0) do //Пока остаток при делении a на 4 равен 0
   a:=a div 4; //Разделить a нацело на 4
if (a = 1) then write ('yes') //вывести yes, если дошли до 1
else write ('no'); //вывести no
end.

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

Отправить комментарий