Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.07.2012, 21:49   #11
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Всем привет,
согласен со всем вышесказанным, а также хочу внести свои 5 коп. Думаю, нечто типа такого будет и в меру компактно, и быстро..
Код:
var
  b,i,min: integer;
  s: string;

begin
  readln(s);
  min:= 2;  // исправлено, см. посты ниже
  for i:=1 to Length(s) do begin
    b:= Ord(UpCase(s[i]));
    case b of
      48..57: dec(b,47);
      65..90: dec(b,54);
      else begin
        min:= -1;
        break
      end
    end;
    if min<b then min:=b
  end;
  writeln(min)
end.
Если есть желание, можно раскрыть смысл "магических чисел", записав их через функцию Ord().
Предпочитаю на "ты".

Последний раз редактировалось TinMan; 12.07.2012 в 23:16. Причина: исправление ошибки
TinMan вне форума Ответить с цитированием
Старый 12.07.2012, 22:00   #12
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Добрый день! Не представляете как приятно находить ошибки таких гениев программирования как Вы) Если ввести 0, то Ваша программа выдаст 1, а такой с.с. не сущ. (ну насколько мне известно!)
А решение очень красивое) (Ну очень!)
А вот так, все идет :
Код:
var
  b,i,min: integer;
  s: string;

begin
  assign(input, 'input.txt');
  reset(input);
  assign(output, 'output.txt');
  rewrite(output);
  readln(s);
  min:= 0;
  for i:=1 to Length(s) do begin
    b:= Ord(UpCase(s[i]));
    case b of
      48..57: dec(b,47);
      65..90: dec(b,54);
      else begin
        min:= -1;
        break
      end
    end;
    if min<b then min:=b
  end;
    if (min = 0) or (min = 1) then
        WriteLn ('2')
    else
  writeln(min)
end.
и еще раз тесты :
Код:
            Poma][a                       eoln                              TinMan
1           0,087                       0,093                          0,187
2           0,159                       0,277                          0,183
3           0,165                       0,199                          0,161
4           0,179                       0,198                          0,171
5           0,166                       0,201                          0,19
6           0,164                       0,191                          0,185
7           0,172                       0,191                          0,172
8           0,161                       0,186                          0,192
9           0,17                        0,189                          0,17
10          0,163                       0,185                          0,183
Тоесть однозначный вывод по эффективности двух алгоритмов сделать трудно (наверно даже не возможно).
P.S. Огромное спасибо Всем!
P.P.S. И все-таки лидером в этой тройке я делаю(лично для себя) алгоритм TinMan'a, решение не обычное, красивое, и эффективное!
P.P.P.S. И данные из выше предствленной таблицы не могут считаться достоверными на 100%(наверно даже на 70)

Последний раз редактировалось Poma][a; 12.07.2012 в 22:32.
Poma][a вне форума Ответить с цитированием
Старый 12.07.2012, 22:56   #13
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от 'Poma
Если ввести 0, то Ваша программа выдаст 1, а такой с.с. не сущ. (ну насколько мне известно!)
сиб за комплименты ),
да, я с нулем я лопухнулся, понял это когда уже запостил и ехал в машине (прекрасное время проанализировать содеянное). Спасибо за исправление (+1, если движок позволит)), но проще все же, мне кааца, инициализировать переменную b значением 2 - тогда не нужно доп проверок. Кстати, мысль о том, что что-то не так, появилась именно тогда, когда я проинициализировал ее нулем, сам не понимая, почему (народная примета: делаешь "как обычно" - делаешь неправильно)).

И, кстати, еще вопрос: что должна выдать прога в случае пустой строки? Думаю, что все же 2, хотя могут быть и другие толкования..

Что касается тестов - лучше синтезировать их самому, с акцентом на то, что проверяешь (быстродействие, например).

P.S.
- не-а, не дает.. параноидальная антинакруточная сисетма на страже справедливости, млин.. лан, прибавлю позже )
Предпочитаю на "ты".

Последний раз редактировалось TinMan; 12.07.2012 в 23:14.
TinMan вне форума Ответить с цитированием
Старый 12.07.2012, 23:04   #14
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

пока царапал свою версию, TinMan написал почти тоже ...
Код:
var
  s : string;
  max,c : char;
  i:integer;
begin
  assign(input, 'input.txt'); reset(input);
  assign(output, 'output.txt'); rewrite(output);
  Readln (s);
  max:='1';
  for i:=length(s) downto 1 do
   begin
    c:=s[i];
    if (c>'Z') or (c<'0') or ( (c<'A') and (c>'9') )
     then
      begin
       writeln(-1); halt
      end
     else
      if c > max then max := c;
   end;
  if max>'9' then writeln(byte(max)-54) else  WriteLn (byte(max)-48)
end.
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 12.07.2012, 23:09   #15
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Уважаемый Step_UA, ваше решение рушится при тесте 123 (выводит 3, а не 4)

Код:
if max>'9' then writeln(byte(max)-54) else  WriteLn (byte(max)-47)
Огромное спасибо!


И что-то забылся я, почему-то не правка жамкнул.... да, надо заканчивать с ночными постами....

Последний раз редактировалось Stilet; 15.07.2012 в 08:57.
Poma][a вне форума Ответить с цитированием
Старый 12.07.2012, 23:13   #16
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Уважаемый Step_UA, ваше решение рушится при тесте 123 (выводит 3, а не 4)
есть такое, даже не гонял ... пока писал пост вы уже исправили ))
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 12.07.2012, 23:45   #17
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
И, кстати, еще вопрос: что должна выдать прога в случае пустой строки? Думаю, что все же 2, хотя могут быть и другие толкования..
Не уверен, но
Цитата:
Входной файл INPUT.TXT содержит в единственной строке входную строку. Длина строки не превышает 255. Все символы строки имеют коды от 32 до 127.
, а пустая строка небудет иметь символов => их ASCII коды не будут в данном промежутке (или возможно там будет служебный символ с ASCII кодом 00 (NULL))

Цитата:
но проще все же, мне кааца, инициализировать переменную b значением 2 - тогда не нужно доп проверок.
Вы снова правы,эх надо обзавестись автомобилем...

Цитата:
Что касается тестов - лучше синтезировать их самому, с акцентом на то, что проверяешь (быстродействие, например).
Спасибо за совет! Только на полный набор тестов уйдет минимум 10-15 минут... А время GetTime'oм мерять?

Цитата:
P.S.
- не-а, не дает.. параноидальная антинакруточная сисетма на страже справедливости, млин.. лан, прибавлю позже )
Да забудьте, эти + для меня ничего не значат!Это мне Вам надо где-нить + поставить за Кнута) Сказали спасибо мне уже приятно) А про ошибку запишу и потом буду детям рассказывать)

Последний раз редактировалось Stilet; 15.07.2012 в 08:59.
Poma][a вне форума Ответить с цитированием
Старый 13.07.2012, 07:53   #18
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

Выкладываю свои результаты:
Код:
Тест	Результат	Время	Память
1	Accepted	0,021	   856 Кб
2	Accepted	0,006	   856 Кб
3	Accepted	0,006	   856 Кб
4	Accepted	0,006	   856 Кб
5	Accepted	0,006	   856 Кб
6	Accepted	0,006	   856 Кб
7	Accepted	0,006	   856 Кб
8	Accepted	0,007	   856 Кб
9	Accepted	0,007	   856 Кб
10	Accepted	0,007	   856 Кб

acm_315.jpg
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана

Последний раз редактировалось Plague; 13.07.2012 в 08:19.
Plague вне форума Ответить с цитированием
Старый 13.07.2012, 07:56   #19
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Не уверен, но , а пустая строка небудет иметь символов => их ASCII коды не будут в данном промежутке (или возможно там будет служебный символ с ASCII кодом 00 (NULL))
Это неверно. Пустая строка не содержит символов вне указанного диапазона, а потому удовлетворяет условиям задачи.
Значит, ее также нужно обрабатывать.
s-andriano вне форума Ответить с цитированием
Старый 13.07.2012, 08:48   #20
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
Это неверно. Пустая строка не содержит символов вне указанного диапазона, а потому удовлетворяет условиям задачи.
Значит, ее также нужно обрабатывать.
Хм... щас посмотрим

Цитата:
Выкладываю свои результаты
Поражает!(Очень!) был бы Вам очень признателен за код
Poma][a вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
даны три квадратные матрицы третьего порядка.вывести на экран ту из них,норма которой наименьшая. в качестве нормы матрицы взять м ayoka Паскаль, Turbo Pascal, PascalABC.NET 0 16.05.2012 18:28
Массив (наименьшая сумма) Dmitriy_B C++ Builder 4 18.02.2012 01:25
наименьшая цифра числа в delphi SALOmandra Помощь студентам 2 22.04.2008 15:57