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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2010, 17:32   #11
Kingdom_Reborn
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 130
По умолчанию

А это 15 вариант, вы в РГУ на 1 курсе учитесь? Кто преподаёт?

А по поводу решения - всё решается достаточно просто, позже приведу пример... Я на 1 курсе это на Borland Pascal писал...
Kingdom_Reborn вне форума Ответить с цитированием
Старый 02.11.2010, 18:10   #12
Macmeprag
Пользователь
 
Аватар для Macmeprag
 
Регистрация: 07.10.2010
Сообщений: 43
По умолчанию

Григорьев преподает..=)
To Cnt
Нельзя потому что тогда 2001 первое подходящее слово будет сравниваться только с первым эл-том массива)
Вот в LettersOrder дельный совет, спасибо, что-то я там загнул)
На самом деле уже сдал, помогло добавление var во все процедуры и ф-ии где используется words -1 сек сразу у меня стало и -2.5 у него.
Спасибо всем)
Macmeprag вне форума Ответить с цитированием
Старый 02.11.2010, 18:14   #13
Kingdom_Reborn
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 130
По умолчанию

Macmeprag, повезло, Григорьев хорошо преподаёт...
Kingdom_Reborn вне форума Ответить с цитированием
Старый 02.11.2010, 18:19   #14
Macmeprag
Пользователь
 
Аватар для Macmeprag
 
Регистрация: 07.10.2010
Сообщений: 43
По умолчанию

А у вас Дёмин чтоли был?
Ну да, повезло, но он требователен ко всему весьма и весьма..=)
Macmeprag вне форума Ответить с цитированием
Старый 02.11.2010, 18:24   #15
Kingdom_Reborn
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 130
По умолчанию

Цитата:
Сообщение от Macmeprag Посмотреть сообщение
А у вас Дёмин чтоли был?
Ну да, повезло, но он требователен ко всему весьма и весьма..=)
У нас другой преподаватель был, он сейчас там уже не работает, но нам тоже повезло, он ещё требовательней Григорьева был.

вот решение вашей задачи, засёк время - 11 мин. ушло на написание.
Код:
program lab21_v15;

{$APPTYPE CONSOLE}
{$R+}

uses
  SysUtils;

const
  Source = 'input.txt';
  Target = 'output.txt';
  Nmax = 2000;
  Alphabet = ['а'..'я', 'А'..'Я', 'ё', 'Ё'];

type TArray = Array[1..Nmax] of String;

function Check(Word: String): Boolean;
var
  i: Integer;
begin
  Word := AnsiUppercase(Word);
  Check := False;
  if Length(Word) < 3 then Exit;
  for i := 1 to Length(Word) - 2 do
    if (Word[i] <= Word[i + 1]) and (Word[i + 1] <= Word[i + 2]) then begin
      Check := True;
      Exit;
    end;
end;

procedure Sort(var A: TArray; const N: Integer);
var
  i, j: Integer;
  tmp: String;
begin
  for i := 1 to N - 1 do
    for j := i + 1 to N do
      if Length(A[i]) > Length(A[j]) then begin
        tmp := A[i];
        A[i] := A[j];
        A[j] := tmp;
      end;
end;

procedure Put(const Word: String; var A: TArray; var N: Integer);
var
  i, Len, Index: Integer;
  W: String;
begin
  W := AnsiUppercase(Word);
  if N < Nmax then begin
    for i := 1 to N do
      if W = AnsiUppercase(A[i]) then Exit;
    Inc(N);
    A[N] := Word;
    Exit;
  end;
  Len := Length(A[1]);
  Index := 1;
  for i := 1 to N do begin
    if W = AnsiUppercase(A[i]) then Exit;
    if Len > Length(A[i]) then begin
      Len := Length(A[i]);
      Index := i;
    end;
  end;
  if Length(Word) < Len then A[Index] := Word;
end;

var
  A: TArray;
  i, N: Integer;
  c: Char;
  Word: String;
begin
  Reset(Input, Source);
  Rewrite(Output, Target);
  while not EOF do begin
    Read(c);
    if c in Alphabet then begin
      Word := '';
      while not EOF and (c in Alphabet) do begin
        Word := Word + c;
        Read(c);
      end;
      if Check(Word) then Put(Word, A, N);
    end;
  end;
  Sort(A, N);
  for i := 1 to N do
    WriteLn(A[i]);
end.

Последний раз редактировалось Kingdom_Reborn; 02.11.2010 в 19:46.
Kingdom_Reborn вне форума Ответить с цитированием
Старый 02.11.2010, 18:36   #16
Macmeprag
Пользователь
 
Аватар для Macmeprag
 
Регистрация: 07.10.2010
Сообщений: 43
По умолчанию

Этож что за зверь то такой..))
как должен выглядеть нулевой чекер для экзекутора, чтобы только время выполнения выдавал?
а то я что-то попробовал его написать, получил все по нулям
Macmeprag вне форума Ответить с цитированием
Старый 02.11.2010, 18:43   #17
Macmeprag
Пользователь
 
Аватар для Macmeprag
 
Регистрация: 07.10.2010
Сообщений: 43
По умолчанию

Пустой аутпут на выходе..но выполнилась очень быстро на самом деле
Macmeprag вне форума Ответить с цитированием
Старый 02.11.2010, 18:49   #18
Kingdom_Reborn
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 130
По умолчанию

можно так написать
Код:
{$I+,O-,Q+,R+,S+}

var fres: TextFile;

begin
  Assign(fres, ParamStr(4));
  {$I-}
  rewrite(fres);
  {$I+}
  if IOResult <> 0 then Halt;

  write(fres, 0);

  close(fres);
end.

Последний раз редактировалось Kingdom_Reborn; 02.11.2010 в 18:51.
Kingdom_Reborn вне форума Ответить с цитированием
Старый 02.11.2010, 19:30   #19
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Kingdom_Reborn
а скажите честно, Вы программу, которую выкладывал автор топика запускали? Файл output.txt получили? Содержимое этого файла видели?
А что Ваше творение создаёт?



Цитата:
Сообщение от Macmeprag
На самом деле уже сдал
Ну и здорово. Поздравляю!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.11.2010, 19:39   #20
Kingdom_Reborn
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 130
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Kingdom_Reborn
а скажите честно, Вы программу, которую выкладывал автор топика запускали? Файл output.txt получили? Содержимое этого файла видели?
А что Ваше творение создаёт?




Ну и здорово. Поздравляю!

Запускал (совю программу), всё там в output.txt нормально записано, а что? Слова с тремя одинаковыми подрядидущими буквами в порядке неубывания длины
.


/////////////////
а ну я условие как то не так прочитал... там буквы должны быть упорядочены
нужно в Check в проверке букв "=" заменить на "<=", делов то...

Последний раз редактировалось Kingdom_Reborn; 02.11.2010 в 19:47.
Kingdom_Reborn вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка текста JRcoker Общие вопросы Delphi 5 31.07.2008 23:35
обработка текста pvleo Фриланс 4 14.07.2008 05:19
Обработка текста Absent Помощь студентам 2 20.05.2008 23:17
Обработка текста Absent Помощь студентам 1 10.05.2008 19:56
Обработка текста GAGARIN-NEW Общие вопросы Delphi 7 06.10.2007 15:25