Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2017, 21:40   #1
LaSTiqq
Новичок
Джуниор
 
Регистрация: 20.04.2017
Сообщений: 2
По умолчанию есть 200 тонн цемента, в первый день я трачу 5 тонн, дальше каждый день на 20% больше. Как при помощи цикла while заставить программу показать, через сколько дней цемент кончится?

Суть проблемы такова - учусь последний год и у нас есть основы программирования на базе паскаля (он же Lazarus у нас). Заключительная работа по циклам. Задача стоит следующая: есть 200 тонн цемента, в первый день я трачу 5 тонн, дальше каждый день на 20% больше. Как при помощи цикла while заставить программу показать, через сколько дней цемент кончится? (Пользователь в данном задании ничего не вводит)
Заранее спасибо за выручку.
LaSTiqq вне форума Ответить с цитированием
Старый 21.04.2017, 10:12   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Код:
var mas, inday, count_day : integer;
begin
  mas := 200000; {в кг, т.к. будем округлять значения до килограмма}
  inday := 5000; {в начале тратим 5000 кг в день}
  count_day := 0;

  while mas>= inday do begin
     inc(count_day);
     mas := mas - inday;
     WriteLn('День ',count_day,' потратили цемента ', inday,' остаток ',mas);
     inday := inday + (inday div 5); { это деление на 5, т.к. 20% - это 1/5}
  end;

  WriteLn('Цемента хватит на ',count_day,' дней ');
  Readln
end.
p.s. если число процентов будет не кратно целому числу,
тогда можно использовать такую формулу:
Код:
  inday := trunc(inday * 1.20);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.04.2017, 16:04   #3
LaSTiqq
Новичок
Джуниор
 
Регистрация: 20.04.2017
Сообщений: 2
Хорошо Спасибо за ответ!

Анализируя данный код пришел к выводу, что при собственных попытках программа в строке "inday:=inday+(inday/0.2)" отказывалась работать. Похоже понял почему, integer не позволяет делить (или выполнять какие либо другие действия) не на целое число, а при помощи div это удалось обойти.
LaSTiqq вне форума Ответить с цитированием
Старый 21.04.2017, 17:47   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от LaSTiqq Посмотреть сообщение
что при собственных попытках программа в строке "inday:=inday+(inday/0.2)" отказывалась работать.
Похоже понял почему, integer не позволяет делить (или выполнять какие либо другие действия) не на целое число
не совсем.
Integer позволяет делить на любое* число (* кроме нуля, конечно
но результат получается ВЕЩЕСТВЕННЫЙ (см. типы данных float, double)
поэтому, выхода три:
1) если переменные нужны типа Integer, тогда можно выполнять целочисленное деление (с помощью DIV )
или
2) если переменные нужны типа Integer, тогда можно выполнять деление вещественное, а результат приводить к целому значению с помощью trunc()( при этом дробная часть отбрасывается
3) перейти к вещественным числам. Тогда можно делить без всяких хитростей - будут получаться вещественные (дробные) значения.

какой способ выбрать - зависит от самой задачи и от программиста.

успехов в учёбе
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить задачу через цикл For. загрузить грузовик грузоподъемностью Р тонн контейнерами трех видов: по А, В и С кг. Определить, какое количество контейнеров каждого вида Belzan Паскаль, Turbo Pascal, PascalABC.NET 1 02.12.2016 09:31
С++ Лыжник, начав тренировки, в первый день пробежал n км. Каждый следующий день он увеличивал пробег на m% от пробега предыдущего дня. Сколько километров он пробежит за k дней. marina46 Помощь студентам 9 23.11.2016 18:27
Как будет выглядеть скрипт, вычисляющий целое число центнеров и тонн из кг? Rin PHP 1 27.12.2012 21:33
по дате рождения и текущей дате (день, месяц, год) определить сколько дней до дня рождения (код на ПАСКАЛЕ) Николай1 Помощь студентам 1 16.02.2012 09:07
определить день недели по заданному числу (считать в месяце 30 дней и первый день месяца понедельник dan1991 Помощь студентам 1 01.03.2009 20:59