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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2014, 20:29   #1
Алькер
Пользователь
 
Регистрация: 07.04.2014
Сообщений: 26
Восклицание Паскаль abc-В текстовом файле поменять порядок слов на обратный

В текстовом файле поменять порядок слов на обратный, т.е. первое слово поменять с последним, второе - с предпоследним и т.д.
Алькер вне форума Ответить с цитированием
Старый 23.04.2014, 13:35   #2
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

На маленьких текстах хорошо отрабатывает. Попробую погонять на больших. Не уверен, что препод примет Загонять текст в массив Кхее, кхее
Загнал текст на 5 мб, чуть подправил код. Можно сдавать
Код:
const
  limits = [#0..#32,'.',',',':',';','!','?','"'];
  MaxWords = 100;
  MaxLimitWords =100000;
type
  TWords = array[1..MaxWords] of string[80];
  AllWords = array[1..MaxLimitWords] of string[80];
var
  text : string[80];
  words : TWords;
  mywords:allwords;
  f : textfile;
  i,count:dword; // правка !
  nwords:word;

function GetWords(s : string; var w : TWords) : Word;
var
  i,back,n : word;
begin
  i := 1;
  n := 0;
  while(i<=length(s)) do
    begin
      while(i<=length(s)) and (s[i] in limits) do
        inc(i);
      if i<=length(s) then
        begin
          back := i;
          while(i<=length(s)) and not(s[i] in limits) do
            inc(i);
         inc(n);
         w[n] := copy(s, back, i-back);
       end;
    end;
  GetWords := n;
end;

begin
  assignfile(f,'example.txt');
  reset(f);
  count:=0;
  while not eof(f) do
    begin
      readln(f,text);
      nwords:=getwords(text,words);
      for i:=1 to nwords do
        mywords[i+count]:=words[i];
      count:=count+nwords;
    end;
  closefile(f);
  for i:=1 to count div 2 do
    begin
      text:=mywords[i];
      mywords[i]:=mywords[count-i+1];
      mywords[count-i+1]:=text;
   end;
  for i:=1 to count do
    write(mywords[i],' ');
  readln;
end.
Изображения
Тип файла: jpg 2014-04-23 13-32-03 Free Pascal IDE.jpg (87.5 Кб, 117 просмотров)

Последний раз редактировалось ZX Spectrum-128; 23.04.2014 в 14:02.
ZX Spectrum-128 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите составить программу (Lazarus): Дано натуральное число п. Поменять порядок цифр числа на обратный. Ляйсан9517 Lazarus, Free Pascal, CodeTyphon 8 15.04.2014 13:46
Поиск слов по первой букве в текстовом файле (Pascal ABC.NET) Razdolbai Паскаль, Turbo Pascal, PascalABC.NET 4 12.11.2012 21:24
Изменить порядок слов в документе на обратный arthur_92 Microsoft Office Word 1 07.06.2011 00:14
Поменять порядок следования символов на обратный ProAndrew Паскаль, Turbo Pascal, PascalABC.NET 1 10.12.2010 14:29
Поменять порядок следования отрицательных элементов на обратный JeyKip Общие вопросы C/C++ 1 14.01.2010 01:23