Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Паскаль] стековая программа, сделал я программу правильно или нет 
:(
    Опции темы
maksimla
Дата 6.12.2009, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 31.3.2009

Репутация: нет
Всего: нет



Такое задание
На мобильном телефоне можно писать простые программы. Процессор держит в памяти команду стека (на английском 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;
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 MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0672 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.