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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2011, 07:04   #1
sergey8100
Новичок
Джуниор
 
Регистрация: 18.03.2011
Сообщений: 1
По умолчанию написать программу для работы с двумя очередями.

Доброго времени суток.

Прошу помощи в следующем вопросе.

Нужно написать программу для работы с двумя очередями.

"Пусть даны две очереди X и Y, содержащие вещественные числа. Из каждой очереди одновременно извлекается по одному числу X и Y. Если X<Y, то число (x+y) помещается в конец очереди X, иначе число x-y помещается в конец очереди Y. Вычисления заканчиваются, когда одна из очередей становится пустой. Подсчитайте число шагов, через которой одна из очередей станет пустой.Очереди реализовать в двух вариантах: на массиве и с использованием динамического распределения памяти. Исходные данные считываются из файла."

И собственно просят реализовать очереди как массив и с использованием динамического распределения памяти.

Я немного не понимаю что значит реализовать как массив, у меня есть работающая программа, которую я немного переделал (основу нашел в интернете), собственно так-же хочется узнать в ней реализованы очереди с динамическим распределением памяти?

Прошу любой помощи и консультации.

Собственно код:
type ukazatel=^s;
s=record
dan:real;
next:ukazatel;
end;
Var h,i:integer;
g,g1,y,u,x,u1:ukazatel;
s1,s2:string;
f:text;

procedure see;
begin
writeln('');
u1:=u;
while u1<>nil do begin
write(u1^.dan:3:0);
u1:=u1^.next;
end;
writeln('');
g1:=g;
while g1<>nil do begin
write(g1^.dan:3:0);
g1:=g1^.next;
end;
writeln;
end;
begin
assign(f, '3.txt');
reset(f);
while not eof (f) do
begin
readln (f, s1);
readln (f, s2);
end;
writeln(s1);
writeln(s2);
h:=0;
new(u);
u^.dan:=StrToInt(s1[1]);
u^.next:=nil;
x:=u;
for i:=2 to 5 do begin
x^.next:=new(ukazatel);
x:=x^.next;
x^.dan:=StrToInt(s1[i]);
x^.next:=nil
end;

new(g);
g^.dan:=StrToInt(s2[1]);
g^.next:=nil;
y:=g;
for i:=2 to 5 do begin
y^.next:=new(ukazatel);
y:=y^.next;
y^.dan:=StrToInt(s2[i]);
y^.next:=nil
end;

see;
repeat
if u^.dan<g^.dan then begin
x^.next:=New(ukazatel);
x:=x^.next;
x^.next:=nil;
x^.dan:=u^.dan+g^.dan
end
else begin
y^.next:=New(ukazatel);
y:=y^.next;
y^.next:=nil;
y^.dan:=u^.dan-g^.dan
end;
u1:=u;
u:=u^.next;
dispose(u1);
g1:=g;
g:=g^.next;
dispose(g1);
h:=h+1;
see;
until (u=nil) or (g=nil);

writeln('chislo shagov =',h);
readln;
end.
sergey8100 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать программу (Delphi) для работы с простенькой базой данных(Interbase) kitty19 Фриланс 8 01.01.2011 11:07
Написать программу для работы с очередью manik136 Помощь студентам 0 28.11.2010 18:48
Написать программу с двумя условными операторами.PASCAL 7.0 Сержuk Помощь студентам 0 24.10.2010 16:13
Форма для работы с двумя таблицами scofieldsj Microsoft Office Access 1 06.12.2009 15:13