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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2013, 12:39   #11
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Вот так нормально работает:
Код:
var
  a, b, c, o: string;
  t: char;
  i: longint;

label w;
begin
  assign (input, 'input.txt'); reset(input);
  assign (output, 'output.txt'); rewrite(output);
  a := ''; b := ''; c := '';
  read(t);
  while t <> ' ' do
  begin
    a := a + t;
    Read(t);
  end;
  read(t);
  while t <> ' ' do
  begin
    b := b + t;
    Read(t);
  end;
  while not eoln do
  begin
    Read(t);
    c := c + t;
  end;
  if (length(a) > length(b)) and (length(a) > length(c)) then o := a;
  if (length(b) > length(a)) and (length(b) > length(c)) then o := b;
  if (length(c) > length(a)) and (length(c) > length(b)) then o := c;
  if (length(a) = length(b)) and (length(a) = length(c)) then
  begin
    for i := 1 to length(a) do
    begin
      if (ord(a[i]) > ord(b[i])) and (ord(a[i]) > ord(c[i])) then begin o := a; goto w; end;
      if (ord(b[i]) > ord(a[i])) and (ord(b[i]) > ord(c[i])) then begin o := b; goto w; end;
      if (ord(c[i]) > ord(a[i])) and (ord(c[i]) > ord(b[i])) then begin o := c; goto w; end;
    end;
    o := a;
  end;
  w:
  Write(o);
end.
Насчет сравнения - затупил.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 17.01.2013, 12:53   #12
Ghost3
Ученик в c++
Форумчанин
 
Аватар для Ghost3
 
Регистрация: 28.02.2011
Сообщений: 162
По умолчанию

Мдаа у меня крыша поедет... вроде бы изменений немного и не такие они значительные... но работает.
Wrong answer на 6ом тесте Думаю из-за
Код:
 i: longint;
Ghost3 вне форума Ответить с цитированием
Старый 17.01.2013, 12:58   #13
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Самое главное изменение - while not eoln do, т.е. чтение до конца строки.
i: longint; точно не повлияет, т.к. хватает и integer.
Пока не вижу причин, нужно подумать.
Да, кстати, можно сравнивать же буквы напрямую.
Код:
if (a[i] > b[i]) and (a[i] > c[i]) then begin o := a; goto w; end;
if (b[i] > a[i]) and (b[i] > c[i]) then begin o := b; goto w; end;
if (c[i] > a[i]) and (c[i] > b[i]) then begin o := c; goto w; end;
Цитата:
Ха, почитал обсуждение, предложили ввести "99 100 101" и у меня ничего не вывело =)
И правда, ни одного условия не выполнено.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 17.01.2013 в 13:04.
BDA на форуме Ответить с цитированием
Старый 17.01.2013, 13:00   #14
Ghost3
Ученик в c++
Форумчанин
 
Аватар для Ghost3
 
Регистрация: 28.02.2011
Сообщений: 162
По умолчанию

Ха, почитал обсуждение, предложили ввести "99 100 101" и у меня ничего не вывело =)
Щас буду думать в чем дело...
после а уже понял в чем дело =D
Ghost3 вне форума Ответить с цитированием
Старый 17.01.2013, 13:11   #15
Ghost3
Ученик в c++
Форумчанин
 
Аватар для Ghost3
 
Регистрация: 28.02.2011
Сообщений: 162
По умолчанию

Быстренько добавил вот такой большой шматок кода - Time limit exceeded:
Код:
  
  if (length(a) = length(b)) and (length(a) > length(c)) then
   begin
   for i:=1 to length(a) do
    begin
    if (ord(a[i]) > ord(b[i])) then begin o := a; goto w; end else begin o := b; goto w; end;
    end;
   end;
  if (length(a) = length(c)) and (length(a) > length(b)) then
   begin
   for i:=1 to length(a) do
    begin
    if (ord(a[i]) > ord(c[i])) then begin o := a; goto w; end else begin o := c; goto w; end;
    end;
   end;
  if (length(c) = length(b)) and (length(c) > length(a)) then
   begin
   for i:=1 to length(a) do
    begin
    if (ord(c[i]) > ord(b[i])) then begin o := c; goto w; end else begin o := b; goto w; end;
    end;
   end;
Цитата:
Да, кстати, можно сравнивать же буквы напрямую.
Мб тогда вообще можно напрямую строки сравнивать?
Ghost3 вне форума Ответить с цитированием
Старый 17.01.2013, 13:17   #16
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Хаха, и правда прошло со сравнением строк
Код:
var
  c: char;
  s1, s2, s3: string;

function max(s1, s2: string): string;
begin
  if length(s1) > length(s2) then
    max := s1
    else
  if length(s1) < length(s2) then
    max := s2
    else
  if s1 > s2 then
    max := s1
    else
    max := s2;
end;

begin
  assign(input, 'input.txt'); reset(input);
  assign(output, 'output.txt'); rewrite(output);
  s1 := '';
  s2 := '';
  s3 := '';
  read(c);
  while(c <> ' ') do
  begin
    s1 := s1 + c;
    read(c);
  end; 
  read(c);
  while(c <> ' ') do
  begin
    s2 := s2 + c;
    read(c);
  end;
  readln(s3);
  writeln(max(max(s1, s2), s3));
end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 17.01.2013, 13:25   #17
Ghost3
Ученик в c++
Форумчанин
 
Аватар для Ghost3
 
Регистрация: 28.02.2011
Сообщений: 162
По умолчанию

А можно пример без "function" ?
Ghost3 вне форума Ответить с цитированием
Старый 17.01.2013, 13:31   #18
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

С функцией удобнее.
Код:
var
  c: char;
  s1, s2, s3, max: string;
  
begin
  assign(input, 'input.txt'); reset(input);
  assign(output, 'output.txt'); rewrite(output);
  s1 := '';
  s2 := '';
  s3 := '';
  read(c);
  while(c <> ' ') do
  begin
    s1 := s1 + c;
    read(c);
  end; 
  read(c);
  while(c <> ' ') do
  begin
    s2 := s2 + c;
    read(c);
  end;
  readln(s3);
  if length(s1) > length(s2) then
    max := s1
    else
  if length(s1) < length(s2) then
    max := s2
    else
  if s1 > s2 then
    max := s1
    else
    max := s2;
  if length(s3) > length(max) then
    max := s3
    else
  if (length(s3) = length(max)) and (s3 > max) then
      max := s3;
  writeln(max);
end.
Update 13:45 Можно нажать весы, которые слева внизу поста, но Ваш отзыв пока не повлияет на репутацию.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 17.01.2013 в 13:48.
BDA на форуме Ответить с цитированием
Старый 17.01.2013, 13:36   #19
Ghost3
Ученик в c++
Форумчанин
 
Аватар для Ghost3
 
Регистрация: 28.02.2011
Сообщений: 162
По умолчанию

Большущее всем спасибо, кто здесь отписывался.
Задача решена, почерпнул для себя немало

Ps: неплохо бы плюсики вам поставить :D если бы нашел как

Последний раз редактировалось Ghost3; 17.01.2013 в 13:39.
Ghost3 вне форума Ответить с цитированием
Старый 17.01.2013, 21:04   #20
Izobara
Форумчанин
 
Аватар для Izobara
 
Регистрация: 26.12.2012
Сообщений: 227
По умолчанию

У меня вот так прошло нормально. Не знаю, что я там наваял, но прошло
Код:
Var
q:char;
 a,b,c,max:string;
begin
Assign(input,'input.txt');
Assign(output,'output.txt');
Reset(input);
Rewrite(output);
Read(q); 
a:=''; 
b:=''; 
c:=''; 
While q<>' ' do 
begin 
a:=a+q; 
Read(q); 
end; 

Read(q); 
While q<>' ' do 
begin 
b:=b+q; 
Read(q); 
end; 

Read(q); 
While not eoln do 
begin 
c:=c+q; 
Read(q); 
end; 
c:=c+q;
 if length(a)>length(b) then max:=a else
 if length(b)>length(a) then max:=b else
 if a>b then max:=a
 else if b>=a then max:=b;
 if length(c)>length(max) then max:=c else
 if (length(c)=length(max)) and (c>max) then max:=c;
 Writeln(max);
Close(input);
Close(output);
end.
"I believe I can fly" - C++, "What do you want from me" - Delphi, "Yesterday" - Pascal, "Let it be" - C#... Программисты-музыканты-полиглоты поймут

Последний раз редактировалось Izobara; 17.01.2013 в 21:17.
Izobara вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
олимпиадная задача quade1992 Паскаль, Turbo Pascal, PascalABC.NET 0 17.05.2012 18:57
Олимпиадная задача "Карточки" (Pascal) rustkill Помощь студентам 1 01.05.2012 17:40
Олимпиадная задача Saidoz Паскаль, Turbo Pascal, PascalABC.NET 7 28.10.2011 13:02
олимпиадная задача danzel1 Общие вопросы C/C++ 2 21.10.2011 15:15
Олимпиадная задача Carbon Общие вопросы C/C++ 2 23.05.2007 22:07