![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 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. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Написать программу (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 |