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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2009, 09:50   #1
Yashanov
Новичок
Джуниор
 
Регистрация: 29.04.2009
Сообщений: 1
По умолчанию Динамические структуры данных

Дана такая задача:
Дана непустая последовательность слов, максимальная длина слов заранее не известна.; между словами - пробел, за последним словом - точка. Напечатать эти слова по алфавиту, указав для каждого из них число его вхождений в эту последовательность.
Есть вот такой код программы, только данныя программка выводит слова по алфовиту записаные в файле в столбец. Помогите преобразочать код под условия задачи, тоесть преобразование последовательность слов из строки...
Код:
program sortnames;
type
  ptrNameList = ^nameList;
  nameList = record
    name:String;
    next:ptrNameList;
    end;
var firstElement,element,lastElement:ptrNameList;
    f:text;
    nameString:String;

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('konec spiska');
  end;


begin;

{ Chtenie spiska }

firstElement := nil;
assign(f,'list.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);

{ Pechat ishodnogo diska }

writeln('Ishodnii spisok');
printList;

{ Sortirovka }

element := firstElement;

{ Naidem posledniy Element }

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;

{ Pechat rezyltata }

writeln('Otsortirovannii spisok');
printList;
end.

Последний раз редактировалось Stilet; 29.04.2009 в 09:55.
Yashanov вне форума Ответить с цитированием
Старый 29.04.2009, 10:11   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну если навскидку то :
Код:
{ Chtenie spiska }
var s,k:string;i:integer;
...
firstElement := nil;nameString:='';
s:='Я знаю что вы делали прошлым летом: План планировали.';
 i:=0; while (i<=length(s)) do begin
  begin
 if s[i]<>' ' then nameString:=nameString+s[i]
  else begin
   inc(i); 
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;
  nameString:='';
  end;
  inc(i);
 end;
   { end while }
close(f);
Смысл ясен?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамические структуры данных - списки FoOtBaLiIsT Общие вопросы C/C++ 0 18.03.2009 22:10
ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ shvarz Общие вопросы C/C++ 1 10.05.2008 19:48
Динамические структуры данных в Паскале ЯншинаВера Помощь студентам 2 30.03.2008 13:10