пятница, 14 марта 2014 г.

Разбор С4 из ДемоЕГЭ-2014 по информатике с сайта (ФИПИ)

 Разбор задания С4 из ДемоЕГЭ-2014 по информатике на сайте ФИПИ ( http://www.fipi.ru/view/sections/228/docs/660.html )

Мы с ребятами написали программу на языке программирования Pascal, в которой есть несколько содержательных ошибок (минимум 4 ошибки). Попробуйте их найти и исправить программу.
Проверить работу программы можно без установки Pascal в браузере в он-лайн Pascal http://primat.org/index/0-128

var N,i,x:integer;
    max3,max7:integer;
    R:longint;
begin
    readln(N);
    for i:=1 to N do
        begin
        read(x);
        if (x mod 3=0) and (x > max3) then max3:=x;
        if (x mod 7=0) and (x > max7) then max7:=x;
        end;
    readln(R);
    writeln('Вычисленное контрольное значение:',max3 * max7);
    if (R mod 21 = 0) and (max3 * max7 = R)
    then writeln('Контроль пройден')
    else writeln('Контроль не пройден');
end.


Корректное решение:

var x,n,r,r1,i:longint;
  max3,max7,max21,max:longint;
begin
  max3:=0;
  max7:=0;
  max21:=0;
  max:=0;
  readln(n);
  for i:=1 to n do
  begin
    readln(x);
    if (x mod 3 = 0) and (x mod 7 <> 0) and (max3<x) then max3:=x;
    if (x mod 7 = 0) and (x mod 3 <> 0) and (max7<x) then max7:=x;
    if (x mod 21 = 0) and (max21<x) then
      begin
        if max21 > max then max:=max21;
        max21:=x;
      end
    else if (max<x)then max:=x;
  end;
  readln(r);
  if (max3*max7 < max21*max)
    then r1:=max21 * max
    else r1:=max3 * max7;
  writeln('Вычисленное контрольное значение:',r1);
  if r = r1
  then writeln('Контроль пройден')
  else writeln('Контроль не пройден');
end.