Напишите программу, которая по введенному числу D (величине дохода гражданина) вычислит налог - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

«Курс валюты Зимбабве опустился накануне до рекордно низкого уровня - 1,2 млрд. зимбабвийских долларов за один доллар США» (Новости от 7.06.2009) В некоторой стране инфляция достигла таких размеров, что доходы граждан стали выражаться числами, количество знаков в десятичной записи которых доходит до 200. Это сильно усложнило задачу взимания налогов. Один из налогов на доходы составляет 1%. Напишите программу, которая по введенному числу D (величине дохода гражданина) вычислит этот налог. При этом применяются следующие правила округления: 1. Если налог выражается целым числом, то он не округляется. 2. Если налог выражается дробным числом, то он округляется в сторону большего целого (в пользу государства). Входные данные Вводится одно число D (натуральное, 105 ≤ D < 10200) – величина дохода гражданина. Выходные данные Выведите одно натуральное число – величину налога. Примеры входные данные 1000001 выходные данные 10001 входные данные 12345600 выходные данные 123456 Написала программу, но при проверке пишет, что решение неполное. Помогите, пожалуйста, найти ошибку:

Решение задачи: «Напишите программу, которая по введенному числу D (величине дохода гражданина) вычислит налог»

textual
Листинг программы
program Test;
 
  procedure Tax(var s: string);
  var
    i: integer;
    Carry: boolean;
  begin
    if copy(s, length(s) - 1, 2) <> '00' then
    begin
      Carry := False;
      for i := length(s) - 2 downto 1 do
      begin
        Carry := (s[i] = '9');
        if Carry then
          s[i] := '0'
        else
          s[i] := succ(s[i]);
        if not Carry then
          break;
      end;
    end;
    Delete(s, length(s) - 1, 2);
    if Carry then
      s := '1' + s;
  end;
 
var
  s: string;
begin
  s := '12345678912345679123456889';
  writeln(s);
  Tax(s);
  writeln(s);
  s := '12345678912345679123456500';
  writeln(s);
  Tax(s);
  writeln(s);
  s := '12345678912345679123999989';
  writeln(s);
  Tax(s);
  writeln(s);
  s := '99999999999999999999999989';
  writeln(s);
  Tax(s);
  writeln(s);
end.

Объяснение кода листинга программы

В этом коде реализована функция вычисления налога на основе введенного дохода.

  1. Объявляется процедура Tax, которая принимает строку s в качестве параметра и возвращает измененную копию этой строки.
  2. Внутри процедуры определяется переменная Carry, которая инициализируется значением false.
  3. Если последние два символа строки не равны '00', то в цикле проверяется каждый символ строки, начиная с предпоследнего.
  4. Если текущий символ равен '9', то он заменяется на '0', а значение переменной Carry устанавливается в true.
  5. Если текущий символ не равен '9', то он заменяется на следующий символ в алфавите (например, 'a' становится 'b'), а значение переменной Carry устанавливается в false.
  6. Если значение переменной Carry равно false, то цикл прерывается.
  7. Если значение переменной Carry равно true, то к строке добавляется символ '1' в начале.
  8. В основной части программы определяется строка s, которая инициализируется значением '12345678912345679123456889'.
  9. Вызывается функция Tax, передавая ей строку s в качестве аргумента.
  10. Выводится значение переменной s.
  11. Повторяется пункт 9 для остальных значений переменной s.
  12. В конце программы выводится значение переменной s.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.867 из 5
Похожие ответы