пятница, 19 декабря 2014 г.

C4 демо ЕГЭ-2013 с ФИПИ

Программа зависает работает при вводе данных пассажира, если время сдачи больше времени возврата в какой-нибудь ячейке. Формат ввода данных:
Фамилия_01:00_02:00 (Фамилия, время сдачи багажа, время возврата багажа через "пробел").

var s,s1,s2,s3:string;
    c:char;
    i,j,n,k,i1,i2:integer;
    a:array [1..1000] of integer;

begin
    readln(n); {кол-во пассажиров}
    readln(k); {кол-во ячеек}
    for i:=1 to n do
    begin
      readln(s);
      s1:= Copy(s,1,length(s)-12);
      i1:= StrToInt(copy (s,length(s)-10,2))*60+ StrToInt(copy (s,length(s)-7,2));
      i2:= StrToInt(copy (s,length(s)-4,2))*60+ StrToInt(copy (s,length(s)-1,2));
      j:=1;
      while (a[j]>i1) and (j<=k) do begin j:= j+1; end;
      if (j<=k) then begin a[j]:=i2; writeln (s1,' ',j); end;
    end;
end.

пятница, 7 ноября 2014 г.

Начали разбирать задачу 27 из демо-2015

Начали разбирать задачу 27 из демо по информатике с сайта ФИПИ. Пока набросали костяк программы, прикинули переменные. Думаем, как реализовать условие поиска минимального произведения двух замеров, если между замерами прошло не менее 6 минут...
Пока есть идея: хранить значения 6-ти последних замеров в массиве, чтобы потом их учесть...

var     m1,m2,t:real;
    a:array [1..6] of real;
    i,n:integer;
begin
    read(n);
    for i:=1 to 6 do
    begin
        read(a[i]);
    end;
    m1:=a[1];

    for i:=7 to N do
    begin
        read(t);

    end;

    write(m1*m2);
end.

пятница, 4 апреля 2014 г.

c2 репетиционного ЕГЭ

const N=30;
var a:array[1..N] of longint;
    i,j,p:longint;
begin
    p:=1;
    for i:=1 to N do
        readln(a[i]);

    for i:=1 to N do
    if (a[i]>9)and(a[i]<100)and((a[i] div 10 + a[i] mod 10) mod 6=0) then p:=p*a[i];

    writeln(p);

end.

Разбор C4 репетиционного ЕГЭ (вариант 1)

const M=12;
var   a:array[1..M] of string; {названия}
  k:array[1..M] of longint; {кол-во запросов}
  n,i,j,na,t:longint;
  s:string;
begin
  na:=0;
  readln(n);
  for i:=1 to n do
  begin
    {строка-название заполняем в массив a
    в массив к приплюсовать 1 в нужный        элемент соответ строке-названию}
    readln(s);

    j:=1;
    while ((s<>a[j]) and (j<=na)) do j:=j+1;
    if j>na then begin
        a[j]:=s;
        na:=na+1;
           end;
    k[j]:=k[j]+1; {inc(k[j]);}
  end;
{сортировка----------------------}
for i:=1 to na do
  for j:=i to na do
    if k[j]<k[i] then
    begin
      t:=k[i]; k[i]:=k[j]; k[j]:=t;
      s:=a[i]; a[i]:=a[j]; a[j]:=s;
    end;
{вывод----------------------}
  i:=1;
  while (i<=na) and (i<=3)do
  begin
    writeln (a[i],' ',k[i]);
    inc(i);
  end;
end.

пятница, 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.

пятница, 28 февраля 2014 г.

C3 Стратегия игры. Построение дерева выигрышной стратегии.

1. Обзор способов решения задачи С3 Константина Полякова ссылка

2. Обзор упрощения заданий С3 с ЕГЭ2013 года Константина Полякова ссылка

Задание: напишите текстовые ответы на вопросы к решению, разобранному на курсах фото решения