C2 и C4 - Страница 2 - ФОРУМ ПОСТУПИМ.РУ
Главная
Поиск репетитора
Коллективный блог
публикаций
Форум (обсуждаем ЕГЭ 2020)
тем и сообщений
Для учебы




Войти
или
Зарегистрироваться
Новые сообщения · Участники · Правила форума · Поиск по форуму · RSS
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Архив - только для чтения
ФОРУМ ПОСТУПИМ.РУ » АРХИВ (ТОЛЬКО ДЛЯ ЧТЕНИЯ) » ЕГЭ 2011 по ИНФОРМАТИКЕ » C2 и C4
C2 и C4
BKirillДата: Воскресенье, 2011-05-22, 4:23 AM | Сообщение # 16
Студент
Группа: Пользователи
Сообщений: 31
Репутация: 2
Награды: 0
Замечания: 0%
Статус: Offline
Новая задачка , мое решение:
Code

const
N=10;
var
a:array[1..N,1..N] of integer; // Для подсчета поездок между станц.
p,n1,n2,i,z:integer;  
c:char; s:string; // Для пропуска при чтении Имени и Фамилии.
begin
readln(n1,p); // Считываем условные N и P.
  n1:=0; // Так как нам важен только "P" обнуляем n1.
  for  i:=1 to p do  
   begin
       s:='';
       repeat
         read(c);
          if c=' ' then begin s:=s+c; end;
        until s='  '; // Читать до двух пробелов в "s" .  
      readln(n1,n2); // Считываем номер станции отъезда и приезда .  
      inc(a[n1,n2]); // Увеличиваем на 1 каждую поездку между станциями .
   end;

for i:=1 to N do // проход по массиву в поисках максимума
  begin
   for z:=2 to N do  
   begin
    if a[i,z]>a[i,z-1] then begin n1:=a[i,z]; end; // Запоминаем количество поездок .
    end;
   end;

for i:=1 to N do // Проход по массиву одинаковых элементов
  begin
   for z:=1 to N do  
   begin
    if a[i,z]=n1 then begin writeln(i,'-',z); end; // Вывод станций с  максимумом пассаж.
    end;
   end;
end.
Прикрепления: 0390695.png (78.1 Kb)
 
uchu_infДата: Воскресенье, 2011-05-22, 4:08 PM | Сообщение # 17
Абитуриент
Группа: Пользователи
Сообщений: 11
Репутация: 1
Награды: 0
Замечания: 0%
Статус: Offline
Итак, по поводу задачи с днями недели: в принципе нормально, но дадут 3 балла, т.к. нерационально используется цикл for. Если все дни будут только в январе, этот цикл будет все равно проходить по всем месяцам... BKirill, вы зря скептически относитесь к циклу while. Он позволяет остановиться на встретившемся месяце и не перебирать весь оставшийся массив. Задачи, которые вы решаете, все от МИОО, поэтому там есть и критерии с решениями, проанализируйте в этой задаче приведенный алгоритм, он вполне даже элегантный))
Теперь по поводу последней задачи.... Намешали, скажу я вам...
Даже по приведенному примеру исходных данных ваша программа работает неправильно. Если даже берете двумерный массив, то работаете с ним вообще непонятно как. По вашему алгоритму получается, что в матрице 10х10 будут стоять единички (я использую пример исходных данных) в первой строке во 2-ом и 5-ом столбцах, и в 3 строке, 5 столбце. Естетсвенно, что 1 будет максимумом, и потом выводится номер строки, где есть максимум и соответствующий номер столбца. Задача решается неверно... И еще, не надо обнулять n1, это позволяет уменьшить время выполнения программы. В вашем случае матрица будет не 10х10, а 5х5. Пробуйте еще))) И не забывайте свой алгоритм прогонять вручную, тогда можно избежать многих ошибок)))
 
konst@ntinДата: Воскресенье, 2011-05-22, 6:22 PM | Сообщение # 18
Абитуриент
Группа: Пользователи
Сообщений: 5
Репутация: 0
Награды: 0
Замечания: 0%
Статус: Offline
Город: Ижевск
Посмотрите, пожалуйста, моё решение задачи.

Условие:

Решение (Visual c++):

Code

#include <stdio.h>

int main ()
{
  int i;
  char temp='0';
  int a[10], b[10];
  int l1=0,l2=0;
  bool draw;

  for (i=0;i<10;i++)
   a[i]=b[i]=0;

  while (1)
  {
   temp=getchar();
   if (temp=='.') break;
   a[temp-48]++;
   l1++;
  }

  getchar();

   while (1)
  {
   temp=getchar();
   if (temp=='.') break;
   b[temp-48]++;
   l1++;
  }

   if (l1>l2) printf ("Алексей");
   else if (l1<l2) printf ("Борис");
   else
   {
    for (i=9;i>=0;i--)
   {  if (a[i]>b[i]) {printf ("Aлексей"); draw=0; break;}
     else if (a[i]<b[i]) {printf ("Борис"); draw=0; break;}
     else draw=1;
   }
   }

   if (draw==1) printf ("Ничья");

   return 0;
}
 
gezczuДата: Воскресенье, 2011-05-22, 8:16 PM | Сообщение # 19
Почетный академик
Группа: Проверенные
Сообщений: 2696
Репутация: 1438
Награды: 116
Замечания: 0%
Статус: Offline
Город: Москва
BKirill, konst@ntin, и вообще все остальные, кто пишет С4. Вас в школе на инфе чему-нибудь учат или вы сами выучили язык?

Мехмат МГУ 1 курс
 
konst@ntinДата: Воскресенье, 2011-05-22, 9:07 PM | Сообщение # 20
Абитуриент
Группа: Пользователи
Сообщений: 5
Репутация: 0
Награды: 0
Замечания: 0%
Статус: Offline
Город: Ижевск
gezczu, мы в школе изучали Pacsal, причём в 11 классе. Также я немного подучил Паскаль, когда готовиля к районной олимпиаде по программированию... Но так как я с 9-го класса начал ходить на курсы по программированию в универ и там мы учили c++, то Паскаль я так и не запомнил...
 
duzkaДата: Воскресенье, 2011-05-22, 11:09 PM | Сообщение # 21
Студент
Группа: Пользователи
Сообщений: 54
Репутация: 9
Награды: 0
Замечания: 0%
Статус: Offline
Город: Московская область
konst@ntin, у тебя явная описка в программе: в обоих циклах увеличивается переменная i1, а надо сначала i1, потом i2. и еще: ведь temp это символьная переменная, так? как же отнее можно число 48 отнимать в чистом виде?

критикуешь - предлагай, предлагаешь - делай
 
VingardiumLeviossaДата: Воскресенье, 2011-05-22, 11:36 PM | Сообщение # 22
Почетный академик
Группа: Проверенные
Сообщений: 2273
Репутация: 1145
Награды: 50
Замечания: 0%
Статус: Offline
Город: Москва
Quote (gezczu)
Вас в школе на инфе чему-нибудь учат или вы сами выучили язык?

Нас вот в школе паскалю учили нормально только в 8 классе, когда были самые основы. Потом пришлось идти на курсы. Правда, все равно только С1-С2 научилась делать, с алгоритмизацией проблемы((


Сказали мне, что эта дорога меня приведет к океану смерти, и я с полпути повернул обратно. С тех пор всё тянутся передо мною кривые глухие окольные тропы...
 
BKirillДата: Понедельник, 2011-05-23, 4:22 AM | Сообщение # 23
Студент
Группа: Пользователи
Сообщений: 31
Репутация: 2
Награды: 0
Замечания: 0%
Статус: Offline
Quote (uchu_inf)
Итак, по поводу задачи с днями недели: в принципе нормально, но дадут 3 балла, т.к. нерационально используется цикл for. Если все дни будут только в январе, этот цикл будет все равно проходить по всем месяцам... BKirill, вы зря скептически относитесь к циклу while. Он позволяет остановиться на встретившемся месяце и не перебирать весь оставшийся массив. Задачи, которые вы решаете, все от МИОО, поэтому там есть и критерии с решениями, проанализируйте в этой задаче приведенный алгоритм, он вполне даже элегантный))

Я к сожалению привык что входные данные не упорядоченны поэтому сразу отбросил идею с while .
Насчет второй задачи , по-моему я вообще не понимаю что от меня хотят там. насчет того что использовалась матрица 10x10 , это лучше наверное чем использовать setlength в связке с динамическим массивом.. ибо вдруг что нибудь стукнет в голову проверяющему мол "выпендриваюсь" и сразу минус 1 балл.

Добавлено (2011-05-23, 4:22 Am)
---------------------------------------------
konst@ntin хоть я си и не учил но за break в паскале могут скинуть балл .
по остальному сказать не могу ничего.

Сообщение отредактировал BKirill - Понедельник, 2011-05-23, 5:28 AM
 
gezczuДата: Понедельник, 2011-05-23, 6:13 AM | Сообщение # 24
Почетный академик
Группа: Проверенные
Сообщений: 2696
Репутация: 1438
Награды: 116
Замечания: 0%
Статус: Offline
Город: Москва
konst@ntin, VingardiumLeviossa, спасибо за ответы smile
Вам очень повезло, что вас в школе хоть чему-то учили. Ведь основы заложить - это главное


Мехмат МГУ 1 курс
 
BKirillДата: Понедельник, 2011-05-23, 6:39 AM | Сообщение # 25
Студент
Группа: Пользователи
Сообщений: 31
Репутация: 2
Награды: 0
Замечания: 0%
Статус: Offline
Quote (gezczu)
konst@ntin, VingardiumLeviossa, спасибо за ответы smile
Вам очень повезло, что вас в школе хоть чему-то учили. Ведь основы заложить - это главное

мне нет , никто никогда не учил и не собирается учить в школе , всем плевать.
зато over 9k заряда ненависти + google + месяц прогула школы + помощь uchu_inf с B10 и C4 и часть A с B идет идеально практически за 50-60 минут . C1/C2/C3 проблем нет кроме C3 , никак не приучу себя к аккуратности в записях ,а это потеря времени на экзамене . C4 пытаюсь как видите , вроде что то получается..


Сообщение отредактировал BKirill - Понедельник, 2011-05-23, 6:40 AM
 
gezczuДата: Понедельник, 2011-05-23, 6:59 AM | Сообщение # 26
Почетный академик
Группа: Проверенные
Сообщений: 2696
Репутация: 1438
Награды: 116
Замечания: 0%
Статус: Offline
Город: Москва
BKirill, ты не один такой)) У нас даже уроки не проводят. Только как-то научили переводить числа из одной СС в другую странным способом. И на этом инфа завершилась cool
А и В более менее решаю. Из С только С3 пока что. Все остальное для меня вообще тяжело, т.к. язык программирования не знаю почти. Но за год еще успею выучить smile
Quote (BKirill)
никто никогда не учил и не собирается учить в школе , всем плевать.

Похоже, только в физ-мат классах чему-то учат


Мехмат МГУ 1 курс
 
BKirillДата: Понедельник, 2011-05-23, 8:53 AM | Сообщение # 27
Студент
Группа: Пользователи
Сообщений: 31
Репутация: 2
Награды: 0
Замечания: 0%
Статус: Offline
Новое задание.
В отличии от представленных вариантов ответов придумал иной алготим:
Реализовано на идее о представлении даты в виде числа где год условный первый разряд , месяц второй , день третий разряд . В итоге сравнивая , мы будем получать нужную нам информацию.
PS Пригодилась ваша мысль о сравнивании строк.
Quote
var
voz,pvoz,starsh,fi,dr:string; pred,i,n,nesk:integer; c:char;
begin
readln(n); voz:='90000000'; nesk:=0;
for i:=1 to n do
begin
pred:=0; fi:='';
repeat
read©; fi:=fi+c; if c=' ' then begin inc(pred); end;
until pred=2;
read(dr); readln;
pvoz:=copy(dr,7,4)+copy(dr,4,2)+copy(dr,1,2);
if pvoz=voz then begin inc(nesk); end;
if pvoz<voz then begin nesk:=1; voz:=pvoz; starsh:=fi+dr; end;
end;
if nesk=1 then begin writeln(starsh); end else writeln(nesk); end.
Прикрепления: 5659984.jpg (253.7 Kb)


Сообщение отредактировал BKirill - Понедельник, 2011-05-23, 8:54 AM
 
joooohnnyДата: Понедельник, 2011-05-23, 1:13 PM | Сообщение # 28
Абитуриент
Группа: Пользователи
Сообщений: 13
Репутация: 7
Награды: 2
Замечания: 0%
Статус: Offline
Мне понравилось твое решение, правда на экзамене я бы так наверно не додумался))
Я сделал вот так:
http://s1.ipicture.ru/uploads/20110523/5gWSfBdT.gif

Code
var  name,s: string;   {name - имя самого старого человека}
    y_max,y,m,m_max,d,d_max: integer;
    c,d1,d2,m1,m2: char;
    count,n,i: integer;
begin
    readln(n);
    y_max:=2101;
    for i:=1 to n do begin
     s:='';
     repeat    
      read(c);
      s:=s+c;
     until c=' ';   {Считана фамилия}        
     repeat
      read(c);
      s:=s+c;
     until c=' ';   {Считано имя}
              read(d1,d2,m1,m1,m2,c,y);   {Читаем дату}
     d:=(ord(d1)-ord('0'))*10+(ord(d2)-ord('0'));   {Переводим в число день}
     m:=(ord(m1)-ord('0'))*10+(ord(m2)-ord('0'));   {Переводим в число месяц}
     if y<y_max then begin
      y_max:=y;
      d_max:=d;
      m_max:=m;
      name:=s;
      count:=1;
     end
     else
     if y=y_max then begin
      if m<m_max then begin
       d_max:=d;
       m_max:=m;
       name:=s;
       count:=1;
      end
      else
      if m=m_max then begin
       if d<d_max then begin
        d_max:=d;
        name:=s;
        count:=1;
       end
       else if d=d_max then count:=count+1;
     end;
     end;
    end;
    if count=1 then writeln(name) else writeln(count);  readln;
end.

Кто знает сколько баллов могут дать за такое решение???


Информатика - 92
Русский язык - 90
Математика - ~73
Физика - не писал есче


Сообщение отредактировал joooohnny - Понедельник, 2011-05-23, 1:18 PM
 
BKirillДата: Понедельник, 2011-05-23, 3:03 PM | Сообщение # 29
Студент
Группа: Пользователи
Сообщений: 31
Репутация: 2
Награды: 0
Замечания: 0%
Статус: Offline
Если ее работоспособность 100% и нет синтаксических ошибок и адекватный алгоритм , как они пишут - 10 раз не повторялись if else / case of и не запоминаются все строки то все 4 балла. Но в этой задаче они бы разрешили ибо я и сам бы не додумался до своего варианта , дома есть время и придумать что то эдакое не вопрос..
Пока могу посоветовать в общем не использовать два repeat а делать через предохранитель как у меня см (pred) ибо очень удобно + посмотрел твой вариант считывания даты ,тоже интересно ибо можно будет где нибудь его еще использовать .
 
konst@ntinДата: Понедельник, 2011-05-23, 3:24 PM | Сообщение # 30
Абитуриент
Группа: Пользователи
Сообщений: 5
Репутация: 0
Награды: 0
Замечания: 0%
Статус: Offline
Город: Ижевск
duzka, по поводу l1 и l2 действительно описался при наборе текста программы. А вот от символьной переменной temp можно отнимать 48 - меня так учили на курсах. 48 - номер символа "0" в ASCII, следовательно, когда мы вычитаем из номера символа (в данном случае у нас только цифры), то мы получаем саму цифру.
 
ФОРУМ ПОСТУПИМ.РУ » АРХИВ (ТОЛЬКО ДЛЯ ЧТЕНИЯ) » ЕГЭ 2011 по ИНФОРМАТИКЕ » C2 и C4
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск:








© 2006 - 2023 Поступим.ру Информация:
О проекте
Контакты

Регистрация на сайте
Статистика сообщества
Пользовательское соглашение
Разделы:
Поиск репетитора
Форум сообщества
Коллективный блог
Материалы для учебы
ЕГЭ 2021
RSS:
RSS форума
RSS блога