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

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

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

 
 Ответить  Открыть новую тему 
> Стеки и очереди, завтра последний день сдачи!!
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






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


Новичок
*

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

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


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

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


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

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


Гость






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


Новичок
*

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

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


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

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


Я так понимаю, что надо, чтобы цифры сохранились в строке, т.е. так: "пр12ив334ет12334"
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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-м сообщении)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

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

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


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

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

 





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