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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2009, 20:00   #1
theFEAR
Пользователь
 
Аватар для theFEAR
 
Регистрация: 22.04.2009
Сообщений: 10
Печаль Задача на сортировку СРОЧНО!

Помогите решить задачу на курсовую которую нужно было сдать сегодня....

Дан текстовый файл, необходимо отсортировать слова по алфавиту посчитать количество слов и вывести результат в другой файл. Вот мои наработки:
Код:

program sortnames;
type
  ptrNameList = ^nameList;
  nameList = record
    name:String;
    next:ptrNameList;
    end;
var firstElement,element,lastElement:ptrNameList;
    f,g:text;
    nameString:String;
    k:integer;

    function firstElementGreaterThanSecond(element1,element2:ptrNameList):boolean;
  begin
  firstElementGreaterThanSecond := (element1^.name > element2^.name);
  end;

procedure switchElementsContent(element1,element2:ptrNameList);
var temp:String;
  begin
  temp := element1^.name;
  element1^.name := element2^.name;
  element2^.name := temp;
  end;

procedure printList;
var element:ptrNameList;
  begin
  element := firstElement;
  while (element<>nil) do
    begin
    writeln(element^.name);
    element := element^.next;
    end;
  writeln('конец списка');
  end;












begin

{ Чтение списка }

firstElement := nil;
Assign (f, 'c:\1.txt');
reset (f);
while not eof(f) do
  begin
  readln(f,nameString);
  if (firstElement = nil) then
    begin
    new(element);
    firstElement := element;
    end
  else
    begin
    new(element^.next);
    element := element^.next;
    end; { end if }
  element^.name := nameString;
  element^.next := nil;
  end; { end while }
close(f);

{ Сортировка методом пузырька }

element := firstElement;

{ Найдем последний элемент }

while (element<>nil) do
  element := element^.next;
lastElement := element;

while (firstElement<>lastElement) do
  begin
  element := firstElement;
  while (element^.next<>lastElement) do
    begin
    if firstElementGreaterThanSecond(element,element^.next) then
      switchElementsContent(element,element^.next);
    element := element^.next;
    end;
  lastElement := element;
  end;

 Reset(f); {открываем первый файл для чтения}
    Assign(g, 'c:\2.txt'); {устанавливаем связь второй файловой переменной с физическим файлом}
    Rewrite(g); {открываем второй файл для записи}
      While not eof(f) do
    Begin
        Readln(f,nameString);{считываем очередную строку из первого файла}


Writeln(g,nameString); {записываем во второй файл строки, удовлетворяющие условию}

      end;
      close (f);
      close (G);
      end;

function kolslov(st: string): byte;
const
  razdel = ['.', ','];
var
  k, d: integer;
begin
  d := 0;
  repeat
    inc(d);
    if st[d] in razdel then
    begin
      delete(st, d, 1);
      insert(' ', st, d);
    end;
  until d > length(st);
  st := ' ' + st + ' ';//для корректной обработки абзацев
  while pos('  ', st) > 0 do delete(st, pos('  ', st), 1);
  d := pos(' ', st);
  k := -1;//количество слов на 1 меньше кол-ва пробелов
  while d > 0 do

  kolslov := k
end;

var
  t: text;
  slov: longint;
  filname, s: string;
begin
  write('File = '); readln(filname);
  assign(t, filname);
  reset(t);
  while not eof(t) do
  begin
    readln(t, s);{читаем строку}




    inc(slov, kolslov(s));      //3 или 5 пробелов также считаем признаком абзаца


      end;
      end.
theFEAR вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите переделать файловую сортировку на сортировку динамич. списков Taisja Помощь студентам 2 15.06.2008 16:10
Задача на сортировку... Sota Помощь студентам 4 25.05.2008 19:26
Задача на сортировку массива Acid Паскаль, Turbo Pascal, PascalABC.NET 1 17.06.2007 00:16