infoegehelp.ru

Успешно сдать ЕГЭ по информатике
  • Главная
  • Контакты
  • Карта сайта
  • Помощь сайту
Важно
  • Демо варианты ЕГЭ
  • Учим числа: 2 в степени
  • Биты, байты, килобайты
Решение задач
  • Задачи вне основных разделов информатики
Разделы информатики
  • 2011-12-18-14-33-54Системы счисления
  • 2011-12-18-16-45-20Алгебра логики
  • 2011-12-18-16-55-26Программирование
  • 2011-12-18-16-53-40Кодирование информации
  • 2011-12-18-16-56-19Компьютерные сети и Интернет
  • -excelЭлектронные таблицы (Excel)
  • 2011-12-18-16-57-50Базы данных
  • 2011-12-18-16-58-50Графы
  • 2011-12-18-17-00-15Файловая система
  • Устройство компьютера
  • ПО компьютера

Разбор задачи C1 (демо ЕГЭ 2007)

Требовалось написать программу, которая решает уравнение «ax+b=0» относительно x для любых чисел a и b, введенных с клавиатуры. Все числа считаются действительными. Программист торопился и написал программу неправильно.
ПаскальБейсик
var a, b, x: real;
begin
   readln(a,b,x);
   if b = 0 then
     write('x = 0')
   else
     if a = 0 then
       write('нет решений')
     else
       write('x =',-b/a);
end.
DIM a,b,x AS DOUBLE
INPUT a, b, x
IF b = 0 THEN
   PRINT "x = 0"
ELSE
   IF a = 0 THEN
     PRINT "нет решений"
   ELSE
     PRINT "x=",-b/a
   ENDIF
ENDIF
END
АлгоритмическийСи
алг
нач
  вещ a,b,x
  ввод a,b,x
  если b=0
    то вывод 'x=0'
    иначе
      если a=0
        то вывод 'нет решений'
        иначе вывод 'x=',-b/a
      все
  все
кон
#include <stdio.h>
void main(void)
{
   float a,b,x;
   scanf("%f%f%f",&a,&b,&x);
   if (b==0)
     printf("x=0");
   else
     if (a==0)
       printf("нет решений");
     else
       printf("x=%f",-b/a);
}
Решение:

часть 1)

При a=0, b=0 программа работает неверно. Она выводит ответ: x=0, а должна выводить: х - любое число.


часть 2)

Лишняя часть в программе - ввод x с клавиатуры.

Правильно:

  • для Паскаля - readln(a,b);
  • для Бейсика - INPUT a, b
  • для Алгоритмического - ввод a,b
  • для Си - scanf("%f%f",&a,&b);
Также другие ошибки:
  • для Бейсик не объявлены переменные a,b,x. Необходимо добавить в начале программы строку:
    DIM a,b,x AS SINGLE
    Также неверно оформлен оператор  ветвления: вместо раздельного написания END IF, представлено слитное написание
  • для Си не подключена библиотека stdio.h. Необходимо добавить в начале программы строку: #include <stdio.h>.
    Без данной библиотеки не будут работать функции printf и scanf.

часть 3)
Доработанная программа:
ПаскальБейсик
var a, b, x: real;
begin
   readln(a,b);
   if a=0 then
     if b=0
       write("х-любое число")
     else
       write('нет решений')
   else
     write('x =',-b/a);
end.
DIM a,b,x AS SINGLE
INPUT a, b
IF a=0 THEN
  IF b=0 THEN
    PRINT "х-любое число"
  ELSE
    PRINT "нет решений"
  END IF
ELSE
  PRINT "x=",-b/a
END IF
END
АлгоритмическийСи
алг
нач
  вещ a,x,b
  ввод a,b
  если a=0
    то
      если b=0
        то вывод 'х-любое число'
        иначе  вывод 'нет решений'
      все
    иначе вывод 'x=',-b/a
  все
кон
#include <stdio.h>
void main(void)
{
   float a,b,x;
   scanf("%f%f",&a,&b);
   if(a==0)
     if(b==0)
       printf("х-любое число");
     else
       printf("нет решений");
   else
     printf("x=%f",-b/a);
}

Перейти к другим задачам.

 

Rambler's Top100

© Латыпова В.А., 2012-2020. Все права защищены.
Копирование материалов сайта только с разрешения администрации сайта