1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
| Гость_Boris |
9.11.2004 20:04
Сообщение
#1
|
|
Гость |
Как видно из задания, задача будет идти о очередях.
Если кто забыл - напоминаю: основное правило очереди - первым вошёл - первым вышел! Итак. Пусть дан одномерный массив (он задаёт количество элементов). Задача заключается в следующем: с помощью функций put и get реализовать распечатку текста на экране. .Например: get(1) get(2) writeln(get) writeln(get) Причём если следующая команда get будет превышать массив, то число будет !!!!!записываться в конец очереди (другой вариант - в начало)!!!!!!!!!!!! пример: put(1) put(2) put(3) get get get ; здесь массив состоит из 2-х элементов и происходит переполнение ... ВАЖНО: функции имеют слежующий вид: function put(i:integer):boolean; (возвращает false если очередь пуста(по-моему - а может когда переполнение??) и true, если переполнения нет) function get:integer; Вот и всё: ПОМОГИТЕ бедному студенту.! P.S: Вот я написал, но при переполнении не то, совсем не то: Код uses crt; const m=10; var n:array[0..m] of integer; i,j: integer; procedure Init; begin for i:=1 to m do n[i]:=0; n[0]:=1; end; function put(a:integer):boolean; begin put:=false; if n[0]<=m then begin n[n[0]]:=a; n[0]:=n[0]+1; put:=true; end; end; function get: integer; begin if n[0]>1 then begin get:=n[1]; n[0]:=n[0]-1; for i:=1 to m-1 do n[i]:=n[i+1]; end; end; begin init; clrscr; writeln; put(1); put(2); put(3); writeln(get); writeln(get); put(4); writeln(get); writeln(get); readln; end. |
![]() ![]() |
| volvo |
9.11.2004 20:20
Сообщение
#2
|
|
Гость |
Гость_Boris
Цитата Если кто забыл - напоминаю: основное правило очереди - первым вошёл - первым вышел! Цитата Причём если следующая команда get будет превышать массив, то число будет !!!!!записываться в конец очереди (другой вариант - в начало)!!!!!!!!!!!! Вы же сами себе противоречите! До переполнения очереди - все в порядке. Но как только произошло переполнение, следующий элемент записывается первым, и тут Вы пытаетесь взять элемент из очереди... Что получилось? Нарушилось правило очереди (FIFO), т.к. элемент, который вошел последним, выйдет первым Решите уже для себя, очередь это или какая-то другая структура данных... С очередями такой трюк не проходит... |
Гость_Boris Очереди 9.11.2004 20:04
GoodWind
может при переполнении стоит сдвигать очередь впе... 9.11.2004 20:31
Гость_Boris Так вот я и прошу переделать программу! 9.11.2004 20:32
volvo
Поймите, нельзя переделать программу, не зная то... 9.11.2004 20:41
Гость_Boris А функцию get тогда как переделать?
Или всё тоже с... 9.11.2004 20:42
GoodWind
а разве переполненность очереди влияет на get ?? 9.11.2004 20:46
Гость_Boris Ещё как...а в принципе ... дайте подумать...наврно... 9.11.2004 21:00
GoodWind Нет не тестил :no:
Предоставлю Вам сию почетную... 9.11.2004 21:03
Гость_Boris Только что тестил ...
при m=3 b
put(1) pu(2) pu(3)... 9.11.2004 21:06
GoodWind дык вы пытаетесь из очереди длиной 3 элемента взят... 9.11.2004 21:12
Гость_Boris Так я же и говорю: если в друг очередь больше то п... 9.11.2004 21:26
volvo Попробуйте так:
const
m = 3;
var
... 9.11.2004 21:54
Гость_Boris Спасибо..юработает.
Спасибо большое.
Добавлено (9... 9.11.2004 22:33
volvo Гость_Boris
Комментарии к программе добавлены 9.11.2004 23:07
Гость_Boris Thank - спасибо
[b]Добавлено (10.11.04 14:30):
[... 10.11.2004 9:03
volvo Гость_Boris
Скажите, Вы не догадываетесь о сущест... 10.11.2004 15:47
Гость_Boris Всё равно пишет : 1 3 4
а должен : 1 3 0 4 10.11.2004 17:07
volvo Ну что мне, EXE выслать? Какой компилятор?
P.S. А... 10.11.2004 17:28
Altair ЗЫ: я так понял задача решена (раз за нее взялся v... 10.11.2004 17:50
Гость_Boris m=3.
Вот.Можешь *.pas выложить. Но всё рвно - я же... 10.11.2004 18:43
volvo Гость_Boris
Ну Вы же свои посты-то хоть читайте... 10.11.2004 19:04
GoodWind
можт промазал мимо клавиши ;) :D 10.11.2004 21:22
Гость_Boris Да, извини.
Тогда как ты написал должно получится:... 10.11.2004 21:59
volvo Гость_Boris
const
m = 2;
var
a... 10.11.2004 22:15
Гость_Boris It's good. I am glad. Thank all and good bye.
... 11.11.2004 10:31
Гость_Boris А можно вместо этих "конечных" нулей нап... 11.11.2004 17:25
volvo Ну не выводит моя программа нули при полной очеред... 11.11.2004 17:30
Гость_Boris 2 недели ... и то не охотно.
Ну что - можно? 11.11.2004 17:39
volvo :angry: Если
то нельзя. Я могу помочь с решением... 11.11.2004 22:30
Altair :P
Абалдеть :rolleyes:
он еще и не доволен...
Г... 12.11.2004 7:27
Гость_Boris Ну а как этц цифру 0 преоразовать в символ и добав... 12.11.2004 8:39
APAL Как-как - читай встроенный HELP.
Если с английск... 12.11.2004 11:36![]() ![]() |
|
Текстовая версия | 8.12.2025 22:51 |