Личный кабинет

ЕГЭ по информатике (2)

Продолжаем тему "ЕГЭ по информатике"
Роман Еннер ( Пользователь )
Продолжаем тему ЕГЭ по информатике
Андрей Сидоров ( Пользователь )
Вопрос по задаче:

На вход программе подается последовательность символов, среди которых встречаются и цифры.
Ввод символов заканчивается точкой. Требуется написать программу, которая составит из тех цифр, которые встречаются во входных данных, максимальное число.

При составлении итогового числа каждая цифра может быть использована только один раз.
Если во входных данных цифры не встречаются, то следует вывести «-1».
Например, пусть на вход подаются следующие символы:

14ф73п49.

В данном случае программа должна вывести

97431



Код
var  
  c: char;
  st, res:string;

begin
  readln(st);
  for c:= '9' downto '0' do
    if pos(c, st)>0 then res:=res+c;
  if res='' then res:='-1';
  write(res)
end.


Будет ли снижена оценка за такое решение потому, что не может быть обработан текст, содержащий более одной строки длиной 255 символов?

(на всякий случай - я знаю, как правильно решать)

Станислав Михалкович ( Пользователь )
Может, просто написать, что программа составлена на Delphi?
Андрей Сидоров ( Пользователь )
В ответах из сборника Якушкина-Ушакова (вар.2 и 3) среднее арифметическое с точностью до целых вычисляется с помощью целочисленного деления. То есть, если 10 учеников в сумме набрали 19 баллов, то средний балл с точностью до целых получается равен 1.
Это действительно считается правильным решением?

Цитата (Михалкович Станислав, 27.01.2010, 23:06) <{POST_SNAPBACK}>
Может, просто написать, что программа составлена на Delphi?

А лучше - на пресловутом Руби :) Вообще одной строки хватит:

puts (s=gets.scan(/\d/).uniq.sort.reverse.join)>''? s:-1
Станислав Михалкович ( Пользователь )
Ну, на Дельфи - строки - длинные, и приведенная вами программа должна работать при любой длине строки.

Гораздо интересней вопрос, что сделает проверяющий, если увидит решение на Руби. Для меня это - загадка :) Особенно как они будут оценивать эффективность программы и считать количество проходов :))) Я бы сразу зарубил - нечего тут Руби всякие использовать.
Роман Еннер ( Пользователь )
Цитата (Андрей Сидоров, 27.01.2010, 21:09) <{POST_SNAPBACK}>
Вопрос по задаче:

[i]На вход программе подается последовательность символов, среди которых встречаются и цифры.
Ввод символов заканчивается точкой. Требуется написать программу, которая составит из тех цифр, которые встречаются во входных данных, максимальное число.

...

я бы снизил обязательно при такой формулировке задания,
а вот насколько... стоит пообсуждать
Федор Ткачев ( Пользователь )
Цитата (Roman Enner, 28.01.2010, 07:21) <{POST_SNAPBACK}>
я бы снизил обязательно при такой формулировке задания,
я бы тоже.
Андрей Сидоров ( Пользователь )
Вопрос по задаче С4 вар. 8 из сборника Якушкин-Лещинер-Кириенко.

На вход программе подается последовательность строчных английских букв. Ввод этих символов заканчивается точкой (другие символы, отличные от "." и букв "a"…"z", во входных данных отсутствуют).
Напечатать буквы, встречающиеся во входной последовательности, в порядке увеличения частоты их встречаемости.
Каждая буква при этом должны быть распечатана один раз.
Если какие-то буквы встречаются одинаковое число раз, то они выводятся по алфавиту.

Например, пусть на вход подаются следующие символы:
baobaba.
В данном случае программа должна вывести
oab


Будет ли снижена оценка за такое решение и если да, то почему?

Код
var
    i,num:integer;
    c:char;
    a: array['a'..'z'] of integer;  
      
begin
    read(c);
    while c<>'.' do
    begin
       inc(a[c]);
       inc(num);
       read(c);
    end;
          
    for i:=1 to num do
      for c:='a' to 'z' do
        if a[c]=i then write(c)
end.

Роман Еннер ( Пользователь )
оригинальное решение, но с сортировкой во многих случаях было бы гораздо быстрее.
я бы придрался обязательно к тому, что не инизиализированы переменные num и a
Андрей Сидоров ( Пользователь )
Цитата (Roman Enner, 28.01.2010, 13:20) <{POST_SNAPBACK}>
оригинальное решение, но с сортировкой во многих случаях было бы гораздо быстрее.
я бы придрался обязательно к тому, что не инизиализированы переменные num и a

1) Согласен, но является ли это достаточным формальным основанием для снижения балла? 

2) Насчет инициализации меня давно интересует - с какой стати я должен выполнять ее в современных вариантах Паскаля? Тем самым я:  

а) демонстрирую свою неосведомленность о том, что по умолчанию переменные инициализируются нулями, 

б) пишу лишний код.



footer logo © Образ–Центр, 2018. 12+