Напишите программу, которая по введенному числу 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.
Объяснение кода листинга программы
В этом коде реализована функция вычисления налога на основе введенного дохода.
- Объявляется процедура Tax, которая принимает строку s в качестве параметра и возвращает измененную копию этой строки.
- Внутри процедуры определяется переменная Carry, которая инициализируется значением false.
- Если последние два символа строки не равны '00', то в цикле проверяется каждый символ строки, начиная с предпоследнего.
- Если текущий символ равен '9', то он заменяется на '0', а значение переменной Carry устанавливается в true.
- Если текущий символ не равен '9', то он заменяется на следующий символ в алфавите (например, 'a' становится 'b'), а значение переменной Carry устанавливается в false.
- Если значение переменной Carry равно false, то цикл прерывается.
- Если значение переменной Carry равно true, то к строке добавляется символ '1' в начале.
- В основной части программы определяется строка s, которая инициализируется значением '12345678912345679123456889'.
- Вызывается функция Tax, передавая ей строку s в качестве аргумента.
- Выводится значение переменной s.
- Повторяется пункт 9 для остальных значений переменной s.
- В конце программы выводится значение переменной s.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д