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

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

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

«Курс валюты Зимбабве опустился накануне до рекордно низкого уровня - 1,2 млрд. зимбабвийских долларов за один доллар США» (Новости от 7.06.2009) В некоторой стране инфляция достигла таких размеров, что доходы граждан стали выражаться числами, количество знаков в десятичной записи которых доходит до 200. Это сильно усложнило задачу взимания налогов. Один из налогов на доходы составляет 1%. Напишите программу, которая по введенному числу D (величине дохода гражданина) вычислит этот налог. При этом применяются следующие правила округления: 1. Если налог выражается целым числом, то он не округляется. 2. Если налог выражается дробным числом, то он округляется в сторону большего целого (в пользу государства). Входные данные Вводится одно число D (натуральное, 105 ≤ D < 10200) – величина дохода гражданина. Выходные данные Выведите одно натуральное число – величину налога. Примеры входные данные 1000001 выходные данные 10001 входные данные 12345600 выходные данные 123456 Написала программу, но при проверке пишет, что решение неполное. Помогите, пожалуйста, найти ошибку:
Листинг программы
  1. var d: double;
  2. begin;
  3. read (d);
  4. d:= d/100;
  5. If (frac(d)>0)
  6. then writeln (round(d)+1)
  7. else writeln (round(d));
  8. end.

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

textual
Листинг программы
  1. program Test;
  2.  
  3.   procedure Tax(var s: string);
  4.   var
  5.     i: integer;
  6.     Carry: boolean;
  7.   begin
  8.     if copy(s, length(s) - 1, 2) <> '00' then
  9.     begin
  10.       Carry := False;
  11.       for i := length(s) - 2 downto 1 do
  12.       begin
  13.         Carry := (s[i] = '9');
  14.         if Carry then
  15.           s[i] := '0'
  16.         else
  17.           s[i] := succ(s[i]);
  18.         if not Carry then
  19.           break;
  20.       end;
  21.     end;
  22.     Delete(s, length(s) - 1, 2);
  23.     if Carry then
  24.       s := '1' + s;
  25.   end;
  26.  
  27. var
  28.   s: string;
  29. begin
  30.   s := '12345678912345679123456889';
  31.   writeln(s);
  32.   Tax(s);
  33.   writeln(s);
  34.   s := '12345678912345679123456500';
  35.   writeln(s);
  36.   Tax(s);
  37.   writeln(s);
  38.   s := '12345678912345679123999989';
  39.   writeln(s);
  40.   Tax(s);
  41.   writeln(s);
  42.   s := '99999999999999999999999989';
  43.   writeln(s);
  44.   Tax(s);
  45.   writeln(s);
  46. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы