Главная » 2019 » Февраль » 28 » Домашнее задание для 10АБ на 1 марта
16:55
Домашнее задание для 10АБ на 1 марта

Домашнее задание для 10АБ на 1 марта

Решить задачи:

1. Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (x, y – действительные числа) и определяет принадлежность точки заштрихованной области, включая ее границы. Программист торопился и написал программу неправильно. Вот она:
var x, y: real;
begin
readln(x, y);
if y <= 3-x*x then
if y >= 0 then
if y >= x+1 then
write('принадлежит')
else
write('не принадлежит');
end.

1) Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (A, B, C, D, E, F, G, H). Точки, лежащие на границах областей, отдельно не рассматривать.

Область y <= 3-x*x y >= 0 y >= x+1 вывод верно?

 

 

A          
B          
C          
D          
E          
F          
G          
H          
J          
K          

В столбцах условий укажите "да", если условие выполнится, "нет" если условие не выполнится, "—" (прочерк), если условие не будет проверяться, «не изв.», если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце "Программа выведет" укажите, что программа выведет на экран. Если программа ничего не выводит, напишите "—" (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв». В последнем столбце укажите "да" или "нет".
2)  Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).

2. Дано натуральное число N, не превосходящее 108. Необходимо найти и вывести число, которое получится при записи N справа налево и удалении всех единиц. Ведущие нули выводить не надо. Если в числе N нет цифр кроме единиц и нулей, необходимо вывести 0. Например, при вводе числа 1984 нужно вывести 489, а при вводе 2001 нужно вывести 2. Для решения этой задачи ученик написал такую программу:

var n, m: longint;
d: integer;
begin
  read(n);
  m := 0;
  while n>=1 do begin
    d := n mod 10;
    if d > 1 then begin
      m := 10*d + m;
    end;
    n:= (n – d) div 10;
  end;
  write(m);
end.

Последовательно выполните следующее.
1.    Напишите, что выведет эта программа при вводе числа 1984.
2.    Приведите пример числа, при вводе которого программа выдаст верный ответ.
3.    Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки: выпишите строку, в которой сделана ошибка, и приведите правильный вариант
строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.

Просмотров: 478 | Добавил: Olesya-school1 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: