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

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

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

> Очереди, queue
Гость_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:41
Сообщение #2


Гость






Цитата
Так вот я и прошу переделать программу!


Поймите, нельзя переделать программу, не зная точного алгоритма

Цитата
в конец очереди (другой вариант - в начало)


Цитата
возвращает false если очередь пуста(по-моему - а может когда переполнение??


это алгоритм? lol.gif
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Гость_Boris   Очереди   9.11.2004 20:04
volvo   Гость_Boris Вы же сами себе противоречите...   9.11.2004 20:20
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


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

 



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