IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
Closed Topic Открыть новую тему 
> БНФ, очередь и стек
сообщение
Сообщение #1


Гость






вот условие:
Используя очередь и стек из входного текстового файла F проанализировать текст
сбалансированный по скобкам
<Текст>::=<пусто> |
<элемент><текст>
<элемент>::=<буква> |
(<текст>)
Напечатать упорядоченные пары номеров открывающих скобок.

в общем вот пример входного файла a(b©)

объясните или сделайте пожалуйста мне эту задачу,очень срочно надо
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






вот правильный пример входного файла a(b (с) ),выше был неправильный
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






у меня есть решение на Делфях,а как эту задачу сделать на Турбо Паскале?
файл читается без очереди. А из Мемо. но нужно чтобы обязательно была очередь

Есть входной файл :

123456789(1234(6789(123456789)sdfs)df)



Код
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls;

type
 TForm1 = class(TForm)
   Memo1: TMemo;
   Button1: TButton;
   OpenDialog1: TOpenDialog;
   Label1: TLabel;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
i,y:integer;
stek:Integer; //Для стека достаточно одного символа
str:string;
begin



IF openDialog1.Execute then
 Memo1.Lines.LoadFromFile(OpenDialog1.FileName);

stek:=-1;

For i:= 0 to MEmo1.Lines.Count-1 do
 For y:= 1 to Length(Memo1.Lines[i]) do
  Begin
    str:=Memo1.Lines[i];

    If ( str[y]='(' ) then
      if ( stek<0 ) then
        Begin
         Stek:=y;
        end
      else
        Begin
         Label1.Caption:=Label1.Caption+IntToStr(stek)+'-'+IntToStr(y)+'  ';
         Stek:=-1;
        end;


  End;

end;

end.

Результатом будет :
10-15
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






в общем я уже голову себе сломал с этими Дельфями,помогите пожалуйста...пост выше мой
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






вот ещё есть на Паскале решение,но мне надо на Турбовом решить
Код
procedure TForm1.Button1Click(Sender: TObject);    
var    
i,y:integer;    
stek:Integer; //Для стека достаточно одного символа    
str:string;    
begin    
IF openDialog1.Execute then    
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);    
stek:=-1;    
For i:= 0 to MEmo1.Lines.Count-1 do    
For y:= 1 to Length(Memo1.Lines[i]) do    
Begin    
str:=Memo1.Lines[i];
If ( str[y]='(' ) then    
      if ( stek<0 ) then    
        Begin    
         Stek:=y;    
        end    
      else    
        Begin    
         Label1.Caption:=Label1.Caption+IntToStr(stek)+'-'+IntToStr(y)+'  ';    
         Stek:=-1;    
        end;    
  End;    
end;    
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Ну, так в чем дело? Есть ведь алгоритм, ну и реализуй его на Турбо-Паскале:
function intToStr(x: integer): string;
var s: string;
begin
str(x, s);
intToStr := s;
end;

var
y:integer;
stek:Integer;
caption, str:string;
f: text;
begin
assign(f, '_t_.txt');
reset(f);

stek := -1;
while not eof(f) do begin
readln(f, str);
for y := 1 to length(str) do begin
if str[y] = '(' then
if stek < 0 then begin
stek := y;
end
else begin
Caption := Caption + IntToStr(stek)+'-'+IntToStr(y)+' ';
writeln(caption);
Stek := -1;
end;
end;
end;
close(f);
end.


Вместо того, чтобы работать напрямую со строкой, можешь загнать ее в очередь, и работать с очередью символов, если это тебе нужно... Алгоритмы и исходники работы с очередями - в FAQ (или поиск)... В общем, смотри мою подпись smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






спасибо за совет,но кто-нибудь может мне здесь помочь с реализацией на Турбо Паскаль этого алгоритма?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Ты по-русски не понимаешь? Сказано, все это есть в FAQ-е...
FAQ: Стеки
FAQ: Очереди

В Поиске посмотри... Ты думаешь, только тебе это нужно сделать? Или тебе самому думать "в лом", хочется получить все готовое? Тогда ты ошибся...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






да ладно постараюсь сам

Продолжай изобретать колесо (даже НЕ велосипед, именно колесо !!!) и лезть в окно, когда дверь - то открыта. Я же тебе и адреса дал, что, ВСЁ надо сделать и выложить на блюдечке? Этого не будет...

Закрыто


Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 

Closed Topic Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 14.05.2024 15:10
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name