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

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

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

> Стеки и очереди, завтра последний день сдачи!!
Athen
сообщение 6.06.2007 11:50
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Женский

Репутация: -  0  +


Умоляю помогите!!! !help.gif 2 задачи:
1. Используя очередь, содержимое текстового файла f, разделенное на строки, переписать в текстовый файл g, перенося при этом в конец каждой строки все входящие в нее цифры (с сохранением исходного взаимного порядка как среди цифр, так и среди остальных литер строки).

2.Постфиксной формой записи выражения a∆b называется запись, в которой знак операции размещен за операндами: ab∆.
Примеры:
a-b → ab-
a*b+c → ab*c- (т.е.(ab*)c+)
a*(b+c) → abc+* (т.е. a(bc+)*)
a+b2c2d*e → abc2d2e*+
Написать программу, которая вычисляет как целое число значение выражения (без переменных), записанное в постфиксной форме в текстовый файл postfix.
Использовать следующий алгоритм вычисления. Выражение просматривается слева направо. Если встречается операнд (число), то его значение (как целое) заносится в стек, а если операции, то из стека извлекаются два последних элемента (это операнды данной операции), над ними выполняется операция, и ее результат записывается в стек. В конце концов в стеке останется только одно число – значение всего выражения.

Насчет 2 задачи в faq находила, только мне надо наоборот... да я чет никак со стеками разобраться не могу!!!:ypriamii: Помогите!! Завтра последний день сдачи... а потом... mega_chok.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 6)
volvo
сообщение 6.06.2007 12:02
Сообщение #2


Гость






Цитата
Насчет 2 задачи в faq находила, только мне надо наоборот...
Наоборот (в смысле, вычисление значения, заданного в постфиксе) - здесь: Задача на Обратную Польскую Нотацию (постфикс)
 К началу страницы 
+ Ответить 
Athen
сообщение 6.06.2007 14:19
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Женский

Репутация: -  0  +


Цитата(volvo @ 6.06.2007 15:02) *

Наоборот (в смысле, вычисление значения, заданного в постфиксе) - здесь: Задача на Обратную Польскую Нотацию (постфикс)


Пасиба огромное! я не на это наткуналась, а нашла то, как наоборот преобразовывать выражение в постфиксную форму.

А что с 1-м?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 6.06.2007 14:29
Сообщение #4


Гость






В первом задании имеется в виду, что строка "пр12ив334ет", например, будет преобразована в "привет12334", и записана во второй файл, или дублирующиеся цифры не нужны?
 К началу страницы 
+ Ответить 
Athen
сообщение 6.06.2007 14:48
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Женский

Репутация: -  0  +


Цитата(volvo @ 6.06.2007 17:29) *

В первом задании имеется в виду, что строка "пр12ив334ет", например, будет преобразована в "привет12334", и записана во второй файл, или дублирующиеся цифры не нужны?


Я так понимаю, что надо, чтобы цифры сохранились в строке, т.е. так: "пр12ив334ет12334"
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 6.06.2007 15:05
Сообщение #6


Гость






Вообще-то было сказано "перенося", а не "копируя"... Ну, в общем, если понадобится - сама изменишь:

type
item = char;
pqueue = ^tqueue;
tqueue = record
data: item;
next: pqueue;
end;

queue = record
head, tail: pqueue;
end;

procedure init_queue(var q: queue);
begin
q.head := nil;
q.tail := nil;
end;

procedure put(var q: queue; X: item);
var p: pqueue;
begin
new(p);
p^.data := X;
p^.next := nil;

if q.head = nil then q.head := p
else q.tail^.next := p;

q.tail := p;
end;
function get(var q: queue): item;
var T: pqueue;
begin
if q.head <> nil then begin
get := q.head^.data;
T := q.head;
q.head := q.head^.next;
dispose(T);
end
else get := #0;
end;

procedure concat_queue(var q1, q2: queue);
begin
if q1.head <> nil then begin
q1.tail^.next := q2.head;
end;
end;

var
q_one, q_two: queue;
f_in, f_out: text;

s: string;
i: integer;

begin

assign(f_in, 't1.txt'); reset(f_in);
assign(f_out, 't2.txt'); rewrite(f_out);

while not eof(f_in) do begin
init_queue(q_one); init_queue(q_two);
readln(f_in, s);

for i := 1 to length(s) do begin
put(q_one, s[i]);
if s[i] in ['0' .. '9'] then put(q_two, s[i]);

{
if s[i] in ['0' .. '9'] then put(q_two, s[i])
else put(q_one, s[i]);
}
end;


concat_queue(q_one, q_two);

s := '';
while q_one.head <> nil do
s := s + get(q_one);

writeln(f_out, s);

end;
close(f_out);
close(f_in);

end.


(закомментированный код делает так, как я показал в 4-м сообщении)
 К началу страницы 
+ Ответить 
Athen
сообщение 6.06.2007 15:30
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Женский

Репутация: -  0  +


Спасибо огромное!! просто там ведь было написано: "с сохранением исходного взаимного порядка как среди цифр, так и среди остальных литер строки"
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 23.06.2025 0:40
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"