0 / 0 / 1
Регистрация: 22.04.2013
Сообщений: 15
1

Линейные динамические структуры

22.05.2013, 00:34. Показов 1511. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Построить стек, элементы которого русские слова фиксированной длины. Подсчитать число совпадающих слов.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.05.2013, 00:34
Ответы с готовыми решениями:

Динамические структуры данных, списковые структуры (надо разобраться что делает программа)
дана программа, надо помочь выяснить что в ней делает каждая подпрограмма unit Unit6; ...

Динамические структуры данных
Народ помогите с задачей!! С чего начать? Написать прогу для слияния двух отсортированных списков...

Динамические структуры.объекты
Создать базу сотовых компаний.вроде все по порядку делала.но при компиляции выскакивает непонятная...

Динамические структуры данных
Списки.Задание: Двусвязный список: создание, добавление в начало, удаление первого элемента...

1
13105 / 5886 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
23.05.2013, 14:27 2
Лучший ответ Сообщение было отмечено anreisorsk как решение

Решение

Как я понял, надо подсчитать число слов, для которых имеются совпадения. Например, пускай у нас имеются слова: слово1 слово2 слово1 слово3 слово1 слово4. Здесь только одно слово ("слово1") имеет повторы, поэтому ответ: 1.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
program Project1;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils, Windows;
 
type
  {Основные данные элемента стека.}
  TData = String;
  {Указатель на элемент стека.}
  TPElem = ^TElem;
  {Элемент стека.}
  TElem = record
    Data : TData; {Основные данные.}
    PNext : TPElem; {Указатель на следующий элемент стека.}
  end;
  {Для стека отдельный тип можно не создавать. Стек будет представлен в виде
  указателя на элемент, расположенный на вершине стека. Поэтому, переменная,
  представляющая стек, будет иметь тип TPElem.}
 
{Добавление элемента на вершину стека.}
procedure Push(var aPStack : TPElem; const aData : TData);
var
  PElem : TPElem;
begin
  New(PElem);
  PElem^.Data := aData;
  PElem^.PNext := aPStack;
  aPStack := PElem;
end;
 
{Изъятие элемента с вершины стека.
Если стек не пуст, то с вершины стека изымается элемент и его значение
(основные данные) возвращается через параметр aData. В этом случае, функция
возвращает значение True. Если стек пуст, то операция отменяется, а функция
возвращает значение False.}
function Pop(var aPStack : TPElem; var aData : TData) : Boolean;
var
  PElem : TPElem;
begin
  Pop := False;
  if aPStack = nil then Exit;
 
  PElem := aPStack;
  aPStack := PElem^.PNext;
  aData := PElem^.Data;
  Dispose(PElem);
  Pop := True;
end;
 
{Освобождение памяти, занятой стеком (очистка стека).}
procedure Free(var aPStack : TPElem);
var
  Data : TData;
begin
  while Pop(aPStack, Data) do;
end;
 
const
  {Множество разделителей слов.}
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
var
  PSt1, PSt2 : TPElem;
  Data1, Data2 : TData;
  S : String;
  Cnt : Integer;
  B : Boolean;
begin
  {Переключение окна консоли на кодовую страницу CP1251 (Win-1251).
  Если после переключения русские буквы показываются неверно,
  следует открыть системное меню консольного окна - щелчком мыши в левом
  верхнем углу окна консоли и выбрать:
  Свойства - закладка "Шрифт" - выбрать шрифт: "Lucida Console".}
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
 
  {Начальная инициализация стеков.}
  PSt1 := nil;
  PSt2 := nil;
 
  repeat
    Writeln('Задайте слова.');
    Writeln('Для завершения ввода оставьте пустую строку и нажмите Enter.');
    repeat
      Write('Слово: ');
      Readln(Data1);
      if Data1 <> '' then
        Push(PSt1, Data1)
      else
        Writeln('Ввод завершён.');
    until Data1 = '';
 
    {Решение задачи.}
    {Количество слов, для которых были найдены совпадения.}
    Cnt := 0;
    {Извлекаем слова из первого стека.}
    while Pop(PSt1, Data1) do begin
      {Поиск совпадений. Слова, которые совпадают с текущим - удаляем.
      Несовпадающие слова записываем во второй стек.}
      B := False;
      while Pop(PSt1, Data2) do
        if Data1 = Data2 then
          B := True
        else
          Push(PSt2, Data2);
      if B then Inc(Cnt);
      PSt1 := PSt2;
      PSt2 := nil;
    end;
 
    Writeln('Количество совпадающих слов: ', Cnt);
 
    {Освобождаем память, занятую для стеков. Сейчас стеки и так пусты,
    но грамотно построенный код должен содержать код освобождения памяти.
    Это повышает надёжность кода.}
    Free(PSt1);
    Free(PSt1);
    Writeln('Память, выделенная для стеков, освобождена.');
    Writeln;
 
    Writeln('Повторить - Enter. Выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
0
23.05.2013, 14:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.05.2013, 14:27
Помогаю со студенческими работами здесь

динамические структуры данных.нужна срочно!
опишите процедуру,формирующую список L, включив в него по одному разу элементы,которые входят в...

Типы данных. Командные кнопки. Линейные структуры
Создать проект, который содержит два рисунка, расположенных в правой и левой части окна. При...

Динамические структуры данных. Организация данных в списковые структуры
Написать программу, формирующую два списка, заполняя их числами из файлов. Объединить оба списка в...

Динамические структуры данных
Никогда д этого не приходилось работать с динамическими типами данных, помогите решить такую вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru