Решаем задачи Абрамян на Паскале. While15

While15. Начальный вклад в банке равен 1000 руб. Через каждый месяц размер вклада увеличивается на $$P$$ процентов от имеющейся суммы ($$P$$ — вещественное число, $$0 < P < 25$$). По данному $$P$$ определить, через сколько месяцев размер вклада превысит 1100 руб., и вывести найденное количество месяцев $$K$$ (целое число) и итоговый размер вклада $$S$$ (вещественное число).

Решение:

Решение от Андрея:

Решение следующее из решения Андрея:

$$s=1000*exp(ln(1+p/100)*k)$$
$$s/1000=exp(ln(1+p/100)*k)$$
$$ln(s/1000)=ln(1+p/100)*k$$
$$ln(s/1000)/ln(1+p/100)=k$$
$$k=ln(s/1000)/ln(1+p/100)$$

 

 

Другие задачи из раздела While можно посмотреть здесь.

Комментарии:

Комментарии 16

  • Есть такой вариант…

    P.S. Строго не судите, я только учусь) У вас очень полезный сайт.

    • да, вполне решение, только k не определено… надо перед циклом сказать k:=1; что бы заработало.

    • А у формулы «s:=1000*exp(ln(1+p/100)*k);» есть название?
      Я просто не задумывался никогда, как считать капитализацию.
      А используя вашу формулу можно решить данную задачу вообще без цикла:
      s=1000*exp(ln(1+p/100)*k)
      s/1000=exp(ln(1+p/100)*k)
      ln(s/1000)=ln(1+p/100)*k
      ln(s/1000)/ln(1+p/100)=k
      k=ln(s/1000)/ln(1+p/100)
      при этом s у нас известна 1100
      поэтому
      k=ln(1100/1000)/ln(1+p/100);
      ну и запишем это в код:

      • «Да, вполне решение, только k не определено… надо перед циклом сказать k:=1; что бы заработало.»
        Работает и в моем варианте, и в Вашем. Ответы одинаковы, но может с k:=1; будет правильнее в каком-то смысле, я ведь только учусь.
        Формула капитализации найдена в Гугле, раздел с картинками — FV=PV*(1+i)^n , где FV -будущая стоимость , PV — текущая стоимость , i — процентная ставка , n — число периодов начисления процентов .

        • Если не определить k, перед его использованием, то оно может принимать любое начальное значение. например код:

          На моём компьютере, на моём компиляторе (Delphi 7), в данный момент выводит значение:

          у вас это значение будет другим.
          И чтобы ваш код работал на любом компьютере, и на большинстве компиляторах, нужно не только объявлять переменную, но и явно её назначать. Это верно для большинства языков программирования.

          • Ошибку понял, буду следить за этим, но разве автоматом переменной 0 не присвоит значение(у меня 0 присваивает)?

            • На это нельзя рассчитывать. То есть абсолютно. Выделение участка памяти под переменную и назначение значения переменной, это совсем разные весчи.
              В объектных языках появляется процесс инициализации при объявлении класса. И там уже можно не сильно задумываться обнулением переменных, так как для создания и уничтожения объекта существуют специальные механизмы. (Просто надо знать эти механизмы и ими пользоваться 🙂
              Но когда мы работаем не с объектами, а с переменными на прямую. То нужно задать значение переменной, перед её использованием. Множество современных компиляторов будут выдавать ошибку, при попытке использовать переменную без указания предварительно её значения.

              • Спасибо! Хотелось бы спросить как у более опытного человека,что изучать после Паскаля(планирую стартовать в веб, ибо других вакансий в городе нет, а дальше смена места жительства и что-то серьезней чем веб),именно какие языки? Что нужно знать и уметь обязательно любому программисту? На что акцентировать внимание при изучении программирования? Может книги какие посоветуете(алгоритмизация… да что угодно). Буду очень благодарен за такого рода помощь.

                • ЭЭ…. ну чесн говоря веб это такая весчь… в которой я не очень… если хотите в этом убедиться посмотрите на метки моего сайта 🙂
                  я бы начал с того, что попытался устроиться на работу… плакал бы сказал, что буду работать за еду… деньги.?!.. никогда не слышал. 🙂
                  Когда вас выгонят, вы будете точно знать, что вам нужно. И за что вас выгнали. 🙂
                  Я развивался примерно так, только меня мало выгоняли, и я всегда требовал денег. 🙂
                  Читать книги… блин конечно могу сказать HTML, PHP….
                  «С» никогда не помешает…
                  но я вас уверяю… всё это без практики не канает… и один день на работе заменяет неделю книжек… особенно если вокруг люди которые знают в разы больше… 🙂

      • Андрей просто за компьютер решил отпахать 😀

  • В решении без цикла int(x) возвращает целую часть x в Real типе, тут нужна ceil(x)

  • первое решение неправильное, потому что прибавляет константный % от тыщи, а не % от суммы с процентами. 2й правильный, но это 1000*exp(ln(1+p/100)*k); слишком трудно для осмысления. Вот людской вариант:
    var
    p,s:real;
    k:integer;
    begin
    readln(p);
    p:=p/100;
    s:=1000;
    while s<1100 do
    begin
    inc(k,1);
    writeln (' число месяцев ',k);
    s:=s+s*p;
    writeln (' сумма ',s);
    end;
    writeln ('k=',k,' s=',s:4:2);
    end.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *