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

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

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

 
 Ответить  Открыть новую тему 
> стековская программа гудка, запутался я с ней можете обьснить
сообщение
Сообщение #1


Знаток
****

Группа: Пользователи
Сообщений: 324
Пол: Мужской
Реальное имя: maksim

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


Такое задание
На мобильном телефоне можно писать простые программы. Процессор держит в памяти команду стека (на английском stack) и команду счетчика (ks) которого значение исполняется командным номером. Поэтому начиная
исполнять от первой команды ks в начале равно 1, а стек пустой В программе команды считаются от единицы.
В программе есть только две команды:
ZAVUT X. KS начинается с единицы и его значение вкладывается в конец стека.Потом KS значение становится X
PYPT. Процессор распространяет одной секунды сигнал (гудка). Потом процессор стирает последнего стека сохраненное значение и значение присваивается команде счетчика. Если стек был пустой то программа кончает работа.
Задание Напишите программу которая напечатала команды телефонные последовательные, по таким требованиям
1 ее выполнив былабы выполнен точно k секунд сигнал гудка,
2 в телефонной программе былабы не больше 100 команд,
3 Команда PYPT должна быть один и последний раз.

Начальные данные хранятся в файле duom.txt. На первой и единственной строчке записано целое число
K (0 < K < 10000) - желаемой звуковой продолжительности секундами.
Результат записываем в файл rez.txt. На каждой строчке должна быть написано по одной команде (с начала).
Если возможны несколько вариантов подходящий под требования то тогда любой вариант запишите. Конечно такую программу сделать всегда возможна.
Пример
Первичные данные
4
результат
ZAVUT 4
ZAVUT 4
ZAVUT 4
PYPT
Обьяснение
После первой команды (ZAVUT 4) стек пополняется другой команды номером 1+1=2 становится [2] о ks становится 4
Тогда выполняется 4-тая команда (PYPT) производит звуковой сигнал - гудка одну секунду и тогда стек становится пустой о ks становится 2
Тогда выполняется 2-тая команда (ZAVUT 4) стек пополняется другой команды номером 2+1=3 становится [3] о ks становится 4
Тогда выполняется 4-тая команда (PYPT) гудок второй секунду и тогда стек становится пустой о ks становится 3
Тогда выполняется 3-тая команда (ZAVUT 4) стек пополняется другой команды номером 3+1=3 становится [3] о ks становится 4
Тогда выполняется 4-тая команда (PYPT) гудок третию секунду и тогда стек становится пустой о ks становится 4
Тогда снова выполняется 4-тая команда (PYPT) и тогда четвертую секунду гудок, но уже стек пустой и команды больше не выполняется то тогда завершает программа работу.
Выполняя эту программу всего было гудков 4 раза поэтому всего получено черырех секундный звуковой сигнал.

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

Вот написал простую программу и так и с рекурсией но без стека
program Bevarde0;
var duom,rez:text;
k{,ks}:integer;
Procedure Zavut(n:integer);
begin
if n<>1 then zavut(n-1);
if n<>k then writeln(rez,'ZAVUT ',k)
else Writeln(rez,'PYPT');
end;
begin
Assign (duom,'duom.txt');
Reset (duom);
Assign (rez,'rez.txt');
rewrite(rez);
readln(duom,k);
Zavut(k);
{ ks:=1;
repeat
writeln(rez,'ZAVUT ',k);
inc(ks)
until ks=k;
Writeln(rez,'PYPT');
}
Close (duom);
Close (rez);
end.


Сообщение отредактировано: maksimla -


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 324
Пол: Мужской
Реальное имя: maksim

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


А может у вас есть какието маленкие легкие задачки со стеком которые показывают что происходит со стеком и как он стек работает


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Знаток
****

Группа: Пользователи
Сообщений: 324
Пол: Мужской
Реальное имя: maksim

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


вот что я еще сделал кажется со стеком в книшках покапался и чтото странное вышло lol.gif
program Bevarde0;
Type
stek = ^ST;
ST = record
x : integer;
Next : stek;
end;
var duom,rez:text;
k,ks:integer;
s:stek;
begin
Assign (duom,'duom.txt');
Reset (duom);
Assign (rez,'rez.txt');
rewrite(rez);
readln(duom,k);
ks:=1;
repeat
writeln(rez,'ZAVUT ',k);
new(s);
writeln(ks);
s^.x:=ks;
inc(s^.x);
ks:=s^.x;
writeln(ks,'posl');
dispose(s);
until ks=k;
Writeln(rez,'PYPT');
readln;
Close (duom);
Close (rez);
end.


Добавлено через 10 мин.
сказали что ненадо гудка звукового это просто так как пример привели

Сообщение отредактировано: maksimla -


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Знаток
****

Группа: Пользователи
Сообщений: 324
Пол: Мужской
Реальное имя: maksim

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


ну меня совсем запутали я даже незнаю как делать помогите
сказали что сто каманд это в результат записываем неможет привышать 100
и еще что это можно подругому сделать
первичные данные
4
результат
ZOVUT 2
ZOVUT 3
PYPT

нечего непонимаю можете обьяснить мне


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Знаток
****

Группа: Пользователи
Сообщений: 324
Пол: Мужской
Реальное имя: maksim

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


пожалста посмотрите может эта програмка правильна у меня
program Bevarde0;
uses crt;
Type
stek = ^ST;
ST = record
x : integer;
Next : stek;
end;
var duom,rez:text;
k,ks:integer;
s:stek;
begin
Assign (duom,'duom.txt');
Reset (duom);
Assign (rez,'rez.txt');
rewrite(rez);
readln(duom,k);
ks:=1;
if k-99>=0 then ks:=k-99;
repeat
new(s);
s^.x:=ks;
inc(s^.x);
ks:=s^.x;
if ks<>k then
writeln(rez,'ZAVUT ',ks);
dispose(s);
until ks=k;
Writeln(rez,'PYPT');
Close (duom);
Close (rez);
end.


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Знаток
****

Группа: Пользователи
Сообщений: 324
Пол: Мужской
Реальное имя: maksim

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


ну вот и некто нечего незнает мне завтро в в 20.00 здать а я незнаю как ее решить еще


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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