Programming Taskbook


E-mail:

Пароль:

Регистрация пользователя   Восстановление пароля

 

ЮФУ

Электронный задачник по программированию

©  М. Э. Абрамян (Южный федеральный университет), 1998–2021

 

PT for Exam | Группы заданий | ExamCheck

PrevNext


ЕГЭ по информатике: задачи на исправление программы

В данном разделе в качестве образцов ошибочных программ приводятся программы на языке Pascal. При выполнении заданий на языках C++ или Python задачник автоматически генерирует заготовку с аналогичным образцом ошибочной программы на используемом языке программирования.

Анализ точек на плоскости

ExamCheck1°. Требовалось написать программу, которая вводит два вещественных числа X, Y и определяет, принадлежит ли точка с координатами (XY) выделенной области (включая ее границы).

GExamCheck1.png

Каждое число вводится с новой строки. Программа должна печатать текст «Принадлежит» или «Не принадлежит», после чего на новой строке выводить сообщение «Программа завершена». Исправьте предложенный неправильный вариант программы.

var x, y: real;
begin
  readln(x, y);
  if x*x + y*y >= 4 then
    if x >= -2 then
      if y <= -x then
        writeln('Принадлежит')
      else
        writeln('Не принадлежит');
  writeln('Программа завершена');
end.

ExamCheck2°. Требовалось написать программу, которая вводит два вещественных числа X, Y и определяет, принадлежит ли точка с координатами (XY) выделенной области (включая ее границы).

GExamCheck2.png

Каждое число вводится с новой строки. Программа должна печатать текст «Принадлежит» или «Не принадлежит», после чего на новой строке выводить сообщение «Программа завершена». Исправьте предложенный неправильный вариант программы.

var x, y: real;
begin
  readln(x, y);
  if x*x + y*y >= 4 then
    if y >= -2 then
      if y <= x then
        writeln('Принадлежит')
      else
        writeln('Не принадлежит');
  writeln('Программа завершена');
end.

ExamCheck3°. Требовалось написать программу, которая вводит два вещественных числа X, Y и определяет, принадлежит ли точка с координатами (XY) выделенной области (включая ее границы).

GExamCheck3.png

Каждое число вводится с новой строки. Программа должна печатать текст «Принадлежит» или «Не принадлежит», после чего на новой строке выводить сообщение «Программа завершена». Исправьте предложенный неправильный вариант программы.

var x, y: real;
begin
  readln(x, y);
  if y >= x then
    if y >= 0 then
      if y <= 2 - x*x then
        writeln('Принадлежит')
      else
        writeln('Не принадлежит');
  writeln('Программа завершена');
end.

ExamCheck4°. Требовалось написать программу, которая вводит два вещественных числа X, Y и определяет, принадлежит ли точка с координатами (XY) выделенной области (включая ее границы).

GExamCheck4.png

Каждое число вводится с новой строки. Программа должна печатать текст «Принадлежит» или «Не принадлежит», после чего на новой строке выводить сообщение «Программа завершена». Исправьте предложенный неправильный вариант программы.

var x, y: real;
begin
  readln(x, y);
  if y <= 2*x*x then
    if x >= -1 then
      if y >= 1 then
        writeln('Принадлежит')
      else
        writeln('Не принадлежит');
  writeln('Программа завершена');
end.

ExamCheck5°. Требовалось написать программу, которая вводит два вещественных числа X, Y и определяет, принадлежит ли точка с координатами (XY) выделенной области (включая ее границы).

C:\Program Files (x86)\PT4\LIB\Graph\GExamCheck5.png

Каждое число вводится с новой строки. Программа должна печатать текст «Принадлежит» или «Не принадлежит», после чего на новой строке выводить сообщение «Программа завершена». Исправьте предложенный неправильный вариант программы.

var x, y: real;
begin
  readln(x, y);
  if y <= 1 then
    if y >= 0 then
      if x >= -1 then
        if y >= x*x then
          writeln('Принадлежит')
        else
          writeln('Не принадлежит');
  writeln('Программа завершена');
end.

ExamCheck6°. Требовалось написать программу, которая вводит два вещественных числа X, Y и определяет, принадлежит ли точка с координатами (XY) выделенной области (включая ее границы).

C:\Program Files (x86)\PT4\LIB\Graph\GExamCheck6.png

Каждое число вводится с новой строки. Программа должна печатать текст «Принадлежит» или «Не принадлежит», после чего на новой строке выводить сообщение «Программа завершена». Исправьте предложенный неправильный вариант программы.

var x, y: real;
begin
  readln(x, y);
  if y <= x then
    if y <= -x then
      if y >= x*x - 2 then
        writeln('Принадлежит')
      else
        writeln('Не принадлежит');
  writeln('Программа завершена');
end.

ExamCheck7°. Требовалось написать программу, которая вводит два вещественных числа X, Y и определяет, принадлежит ли точка с координатами (XY) выделенной области (включая ее границы).

C:\Program Files (x86)\PT4\LIB\Graph\GExamCheck7.png

Каждое число вводится с новой строки. Программа должна печатать текст «Принадлежит» или «Не принадлежит», после чего на новой строке выводить сообщение «Программа завершена». Исправьте предложенный неправильный вариант программы.

var x, y: real;
begin
  readln(x, y);
  if y <= 1 - x then
    if y >= 0 then
      if x >= 0 then
        if x*x + y*y <= 1 then
          writeln('Принадлежит')
        else
          writeln('Не принадлежит');
  writeln('Программа завершена');
end.

ExamCheck8°. Требовалось написать программу, которая вводит два вещественных числа X, Y и определяет, принадлежит ли точка с координатами (XY) выделенной области (включая ее границы).

C:\Program Files (x86)\PT4\LIB\Graph\GExamCheck8.png

Каждое число вводится с новой строки. Программа должна печатать текст «Принадлежит» или «Не принадлежит», после чего на новой строке выводить сообщение «Программа завершена». Исправьте предложенный неправильный вариант программы.

var x, y: real;
begin
  readln(x, y);
  if y >= -1 then
    if y <= x then
      if y <= 0 then
        if x*x + y*y <= 1 then
          writeln('Принадлежит')
        else
          writeln('Не принадлежит');
  writeln('Программа завершена');
end.

ExamCheck9°. Требовалось написать программу, которая вводит два вещественных числа X, Y и определяет, принадлежит ли точка с координатами (XY) выделенной области (включая ее границы).

C:\Program Files (x86)\PT4\LIB\Graph\GExamCheck9.png

Каждое число вводится с новой строки. Программа должна печатать текст «Принадлежит» или «Не принадлежит», после чего на новой строке выводить сообщение «Программа завершена». Исправьте предложенный неправильный вариант программы.

var x, y: real;
begin
  readln(x, y);
  if y <= 1 then
    if y >= x then
      if x >= -1 then
        if x*x + y*y <= 1 then
          writeln('Принадлежит')
        else
          writeln('Не принадлежит');
  writeln('Программа завершена');
end.

ExamCheck10°. Требовалось написать программу, которая вводит два вещественных числа X, Y и определяет, принадлежит ли точка с координатами (XY) выделенной области (включая ее границы).

C:\Program Files (x86)\PT4\LIB\Graph\GExamCheck10.png

Каждое число вводится с новой строки. Программа должна печатать текст «Принадлежит» или «Не принадлежит», после чего на новой строке выводить сообщение «Программа завершена». Исправьте предложенный неправильный вариант программы.

var x, y: real;
begin
  readln(x, y);
  if y <= x + 2 then
    if x <= 0 then
      if x*x + y*y <= 25 then
        writeln('Принадлежит')
      else
        writeln('Не принадлежит');
  writeln('Программа завершена');
end.

ExamCheck11°. Требовалось написать программу, которая вводит два вещественных числа X, Y и определяет, принадлежит ли точка с координатами (XY) выделенной области (включая ее границы).

C:\Program Files (x86)\PT4\LIB\Graph\GExamCheck11.png

Каждое число вводится с новой строки. Программа должна печатать текст «Принадлежит» или «Не принадлежит», после чего на новой строке выводить сообщение «Программа завершена». Исправьте предложенный неправильный вариант программы.

var x, y: real;
begin
  readln(x, y);
  if y >= x*x - 6 then
    if x*x + y*y <= 16 then
      writeln('Принадлежит')
    else
      writeln('Не принадлежит');
  writeln('Программа завершена');
end.

ExamCheck12°. Требовалось написать программу, которая вводит два вещественных числа X, Y и определяет, принадлежит ли точка с координатами (XY) выделенной области (включая ее границы).

C:\Program Files (x86)\PT4\LIB\Graph\GExamCheck12.png

Каждое число вводится с новой строки. Программа должна печатать текст «Принадлежит» или «Не принадлежит», после чего на новой строке выводить сообщение «Программа завершена». Исправьте предложенный неправильный вариант программы.

var x, y: real;
begin
  readln(x, y);
  if y <= sin(x) then
    if x <= 3.14/2 then
      if y >= 0 then
        writeln('Принадлежит')
      else
        writeln('Не принадлежит');
  writeln('Программа завершена');
end.

ExamCheck13°. Требовалось написать программу, которая вводит два вещественных числа X, Y и определяет, принадлежит ли точка с координатами (XY) выделенной области (включая ее границы).

C:\Program Files (x86)\PT4\LIB\Graph\GExamCheck13.png

Каждое число вводится с новой строки. Программа должна печатать текст «Принадлежит» или «Не принадлежит», после чего на новой строке выводить сообщение «Программа завершена». Исправьте предложенный неправильный вариант программы.

var x, y: real;
begin
  readln(x, y);
 if y <= 1 then
   if x >= 0 then
     if y >= sin(x) then
        writeln('Принадлежит')
      else
        writeln('Не принадлежит');
  writeln('Программа завершена');
end.

ExamCheck14°. Требовалось написать программу, которая вводит два вещественных числа X, Y и определяет, принадлежит ли точка с координатами (XY) выделенной области (включая ее границы).

C:\Program Files (x86)\PT4\LIB\Graph\GExamCheck14.png

Каждое число вводится с новой строки. Программа должна печатать текст «Принадлежит» или «Не принадлежит», после чего на новой строке выводить сообщение «Программа завершена». Исправьте предложенный неправильный вариант программы.

var x, y: real;
begin
  readln(x, y);
  if y <= 0 then
    if y >= -1 then
      if y <= cos(x) then
        writeln('Принадлежит')
      else
        writeln('Не принадлежит');
  writeln('Программа завершена');
end.

Решение уравнений и неравенств

ExamCheck15°. Требовалось написать программу, которая решает уравнение x2 + c = 0 относительно x для любого числа c. Все числа считаются вещественными и выводятся с двумя дробными знаками. Исправьте предложенный неправильный вариант программы.

var c: real;
begin
  readln(c);
  if c > 0 then
  write('нет решений')
  else
    write('x = ', sqrt(-c):0:2, ' или x = ', -sqrt(-c):0:2);
end.

ExamCheck16°. Требовалось написать программу, которая решает уравнение ax + b = 0 относительно x для любых чисел a и b. Все числа считаются вещественными, каждое исходное число вводится с новой строки, при выводе все числа отображаются с двумя дробными знаками. Исправьте предложенный неправильный вариант программы.

var a, b: real;
begin
  readln(a, b);
  if b = 0 then
    write('x = 0.00')
  else
    if a = 0 then
      write('нет решений')
    else
      write('x = ', -b/a:0:2);
end.

ExamCheck17°. Требовалось написать программу, которая решает уравнение a|x| = b относительно x для любых чисел a и b. Все числа считаются вещественными, каждое исходное число вводится с новой строки, при выводе все числа отображаются с двумя дробными знаками. Исправьте предложенный неправильный вариант программы.

var a, b: real;
begin
  readln(a, b);
  if a = 0 then
    if b = 0 then
      write('любое число')
    else
      write('нет решений')
  else
    if b = 0 then
      write('x = 0.00')
    else
      write('x = ', b/a:0:2,' или x = ', -b/a:0:2);
end.

ExamCheck18°. Требовалось написать программу, которая решает неравенство ax + b > 0 относительно x для любых чисел a и b. Все числа считаются вещественными, каждое исходное число вводится с новой строки, при выводе все числа отображаются с двумя дробными знаками. Исправьте предложенный неправильный вариант программы.

var a, b: real;
begin
  readln(a, b);
  if a = 0 then
    if b > 0 then
      write('любое число')
    else
      write('нет решений')
  else
    write('x > ', -b/a:0:2);
end.

ExamCheck19°. Требовалось написать программу, которая решает неравенство (ax)/(x + b) > 0 относительно x для любого ненулевого числа a и любого неотрицательного числа b. Все числа считаются вещественными, каждое исходное число вводится с новой строки, при выводе все числа отображаются с двумя дробными знаками. Исправьте предложенный неправильный вариант программы.

var a, b: real;
begin
  readln(a, b);
  if b = 0 then
    write('x > 0.00 или x < 0.00')
  else
    if a > 0 then
      write('x > 0.00 или x < ', -b:0:2)
    else
      write(-b:0:2, ' < x < 0.00') ;
end.

ExamCheck20°. Требовалось написать программу, которая решает неравенство (x + a)/(bx) ≤ 0 относительно x для любого неотрицательного числа a и любого ненулевого числа b. Все числа считаются вещественными, каждое исходное число вводится с новой строки, при выводе все числа отображаются с двумя дробными знаками. Исправьте предложенный неправильный вариант программы.

var a, b: real;
begin
  readln(a, b);
  if a = 0 then
    if b > 0 then
      write('нет решений')
    else
      write('x > 0.00 или x < 0.00')
  else
    write(-a:0:2,' < x < 0.00');
end.

ExamCheck21°. Требовалось написать программу, которая решает неравенство (x − a)/(bx) > 0 относительно x для любых ненулевых чисел a и b. Все числа считаются вещественными, каждое исходное число вводится с новой строки, при выводе все числа отображаются с двумя дробными знаками. Исправьте предложенный неправильный вариант программы.

var a, b: real;
begin
  readln(a, b);
  if b > 0 then
    write('x > ', a:0:2,' или x < 0.00')
  else
    if a > 0 then
      write('0.00 < x < ', a:0:2)
    else
      write(a:0:2, ' < x < 0.00');
end.

Обработка целых чисел

ExamCheck22°. Требовалось написать программу, которая вводит целое положительное число N и выводит его первую (старшую) цифру. Исправьте предложенный неправильный вариант программы.

var N: integer;
begin
  readln(N);
  while N > 10 do
  begin
    N := N mod 10;
  end;
  write(N);
end.

ExamCheck23°. Требовалось написать программу, которая вводит целое число N (> 9) и выводит двузначное число, образованное двумя первыми (старшими) цифрами исходного числа. Исправьте предложенный неправильный вариант программы.

var N: integer;
begin
  readln(N);
  while N > 10 do
  begin
    N := N mod 100;
  end;
  write(N);
end.

ExamCheck24°. Требовалось написать программу, которая вводит целое положительное число N и выводит максимальную цифру этого числа. Исправьте предложенный неправильный вариант программы.

var N, digit, maxdigit: integer;
begin
  readln(N);
  maxdigit := 10;
  while N >= 10 do
  begin
    digit := N mod 10;
    if maxdigit < digit then
      maxdigit := digit;
    N := N div 10;
  end;
  write(maxdigit);
end.

ExamCheck25°. Требовалось написать программу, которая вводит целое положительное число N и выводит произведение цифр этого числа. Исправьте предложенный неправильный вариант программы.

var N, p, digit: integer;
begin
  readln(N);
  p := N mod 10;
  while N >= 10 do
  begin
    digit := N mod 10;
    p := p * digit;
    N := N div 10;
  end;
  write(p);
end.

ExamCheck26°. Требовалось написать программу, которая вводит целое положительное число N и выводит сумму нечетных цифр этого числа или 0, если число не содержит нечетных цифр. Исправьте предложенный неправильный вариант программы.

var N, s: integer;
begin
  readln(N);
  s := 1;
  while N > 1 do
  begin
    if N mod 10 <> 0 then
      s := s + N mod 10;
    N := N div 10;
  end;
  write(s);
end.

ExamCheck27°. Требовалось написать программу, которая вводит целое положительное число N и выводит максимальную цифру числа, кратную 3, или текст «NO», если в числе нет цифр, кратных 3. Исправьте предложенный неправильный вариант программы.

var N, digit, maxdigit: integer;
begin
  readln(N);
  maxdigit := N mod 10;
  while N > 0 do
  begin
    digit := N mod 10;
    if digit mod 3 = 0 then
      if digit > maxdigit then
        maxdigit := digit;
    N := N div 10;
  end;
  if maxdigit = 0 then
    write('NO')
  else
    write(maxDigit)
end.

ExamCheck28°. Требовалось написать программу, которая вводит целое положительное число N и выводит количество значащих цифр в двоичной записи этого числа. Исправьте предложенный неправильный вариант программы.

var N, cnt: integer;
begin
  readln(N);
  cnt := 0;
  while N > 0 do
  begin
    cnt := cnt + N mod 2;
    N := N div 10;
  end;
  write(cnt)
end.

ExamCheck29°. Требовалось написать программу, которая вводит целое положительное число N и выводит число, которое получается из N в результате удаления всех цифр, равных 2; порядок остальных цифр при этом не меняется (ведущие нули не выводятся; если в числе N нет цифр, кроме 0 и 2, то выводится 0). Исправьте предложенный неправильный вариант программы.

var N, r, t, d: integer;
begin
  readln(N);
  r := 0;
  t := 0;
  while N > 0 do
  begin
    d := N mod 10;
    if d <> 2 then
    begin
      r := r + d * t;
      t := t + 1;
    end;
    N := N div 10;
  end;
  write(r);
end.

ExamCheck30°. Требовалось написать программу, которая вводит целое положительное число N и выводит число, которое получается из N в результате удаления всех цифр, равных 1, и записи оставшихся цифр в обратном порядке (ведущие нули при этом не выводятся; если в числе N нет цифр, кроме 0 и 1, то выводится 0). Исправьте предложенный неправильный вариант программы.

var N, r, d: integer;
begin
  readln(N);
  r := 0;
  while N > 0 do
  begin
    d := N mod 10;
    if d > 1 then
    begin
      r := d + r;
    end;
    N := N div 10;
  end;
  write(r);
end.

PrevNext

 

Рейтинг@Mail.ru

Разработка сайта:
М. Э. Абрамян, В. Н. Брагилевский

Последнее обновление:
03.05.2021