Вопрос о псевдокоде для HW - PullRequest
0 голосов
/ 24 июня 2010

У меня следующий вопрос, и что меня больше всего смущает, так это как сделать логику для определения, если чек опоздал на один месяц или нет.

Вопрос:

"Написать псевдокод для программы, которая рассчитывает плату за обслуживание, которую клиент должен заплатить за плохой чек. Программа принимает имя клиента, дату, когда чек был написан (год, месяц и день), текущую дату (год) , месяц и день) и сумма чека в долларах и центах. Программа продолжается до тех пор, пока не будет найдено значение eof. Плата за обслуживание составляет 20 долларов плюс 2 процента от суммы чека, плюс 5 долларов за каждый прошедший месяц с момента написания чека. Чек опаздывает на один месяц, как только начинается новый месяц, поэтому плохой чек, написанный 30 сентября, на 1 октября просрочен на один месяц. "

Пока что я пишу:

Start
  string Name
  num AmountOwed
  num DateCheckWritten
  num CurrentDate
  num CheckAmount
  get Name, DateCheckWritten, CurrentDate, CheckAmount
  while eof

Ответы [ 4 ]

1 голос
/ 24 июня 2010

Поскольку вам не нужно иметь дело с днями, алгоритм очень прост:

MonthsLate = (CurrentDate.Year - DateCheckWritten.Year) * 12 
                  + (CurrentDate.Month - DateCheckWritten.Month)

Удачи в решении остальной проблемы!

0 голосов
/ 24 июня 2010

Я собираюсь предположить, что это домашнее задание, и поэтому я постараюсь указать вам правильное направление.

Если вы присваиваете номера каждому месяцу (январь = 1, февраль = 2 и т. Д.), То количество месяцев между двумя датами легко определить - сколько месяцев между сентябрем (= 9) и маем (= 5 )

Другая вещь, которую необходимо учитывать, - это год - для каждого года чек опаздывает, вам также придется добавить еще двенадцать месяцев. Это работает так же, как в течение нескольких месяцев.

Нужна дополнительная информация, не стесняйтесь, дайте мне знать.

0 голосов
/ 24 июня 2010

Упростите, поразите основные моменты, а затем разбивайте его все больше и больше, напишите его так, как бы вы сказали своей бабушке, что оно работает.

Вы можете начать с чего-то вроде

Start
While there are more bad checks
  get the service charge 
  add the service charge to the account
record the updates

get the service charge
  charge starts at $20
  add to the charge $5 multiplied by number of months
0 голосов
/ 24 июня 2010

Я не уверен, в чем ваша проблема, но я думаю, что у вас есть две проблемы для решения:

  1. Какое определение в конце?
  2. Сколько месяцев опоздалоэто чек?

Так что в моем псевдокоде у меня есть шаг, который определяет, как поздно чек, а затем еще один шаг для расчета комиссии.На первом этапе вы можете просто вычесть дни и разделить.Но в указаниях говорится, что как только наступает новый месяц, он опаздывает на один месяц.Так что все, что вам действительно нужно сделать, это вычесть месяцы.

Не уверен, что еще вы спрашиваете, но, похоже, вы просите руководство, а не код.Надеюсь, это поможет.

...