Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 22.01.2016
Сообщений: 5
1

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

22.01.2016, 20:57. Показов 3581. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
«Курс валюты Зимбабве опустился накануне до рекордно низкого уровня - 1,2 млрд. зимбабвийских долларов за один доллар США»

(Новости от 7.06.2009)

В некоторой стране инфляция достигла таких размеров, что доходы граждан стали выражаться числами, количество знаков в десятичной записи которых доходит до 200. Это сильно усложнило задачу взимания налогов.

Один из налогов на доходы составляет 1%. Напишите программу, которая по введенному числу D (величине дохода гражданина) вычислит этот налог.

При этом применяются следующие правила округления:

1. Если налог выражается целым числом, то он не округляется.

2. Если налог выражается дробным числом, то он округляется в сторону большего целого (в пользу государства).

Входные данные
Вводится одно число D (натуральное, 105 ≤ D < 10200) – величина дохода гражданина.

Выходные данные
Выведите одно натуральное число – величину налога.

Примеры
входные данные
1000001
выходные данные
10001
входные данные
12345600
выходные данные
123456




Написала программу, но при проверке пишет, что решение неполное. Помогите, пожалуйста, найти ошибку:

Pascal
1
2
3
4
5
6
7
8
   var d: double;
begin;
read (d);
d:= d/100;
If (frac(d)>0)
 then writeln (round(d)+1)
 else writeln (round(d));
end.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.01.2016, 20:57
Ответы с готовыми решениями:

Напишите программу, которая по введённому числу n проверяет является ли оно палиндромом
Доброе время суток. Прошу опытных программистов помочь с домашней работой. Работу нужно сдать в...

Напишите программу, которая находит в массиве элемент, самый близкий по величине к данному числу
Напишите программу, которая находит в массиве элемент, самый близкий по величине к данному числу

Напишите программу, которая вычислит ваш возраст в часах
Напишите программу, которая вычислит ваш возраст в часах .Чтобы узнать текущую дату и время,...

Напишите программу, которая вычислит целую часть значения выражения
Напишите программу, которая вычислит целую часть значения выражения

9
22 / 22 / 34
Регистрация: 29.04.2014
Сообщений: 145
22.01.2016, 21:55 2
Цитата Сообщение от ХамелеонВЧерном Посмотреть сообщение
105 ≤ D < 10200
Цитата Сообщение от ХамелеонВЧерном Посмотреть сообщение
входные данные
12345600
выходные данные
123456
А как понимать сие противоречие?
0
0 / 0 / 0
Регистрация: 22.01.2016
Сообщений: 5
22.01.2016, 22:00  [ТС] 3
тут имеется ввиду 10^(200)
0
22 / 22 / 34
Регистрация: 29.04.2014
Сообщений: 145
22.01.2016, 22:16 4
ХамелеонВЧерном, это было не так очевидно, как вам кажется.
Функция Round:
/// Возвращает x, округленное до ближайшего целого
function Round(x: real): integer;
Как видно, возвращаемый тип Integer. Значение D = 10^200 точно не вмещается в тип Integer.
Pascal
1
2
3
4
5
6
7
8
Var
  d, m: BigInteger;
  
Begin
  d := BigInteger.DivRem(BigInteger.Parse(ReadlnString), 100, m);
  If m <> 0 then d += 1;
  Writeln(d);
End.
0
0 / 0 / 0
Регистрация: 22.01.2016
Сообщений: 5
22.01.2016, 22:21  [ТС] 5
Прошу прощения, это на каком языке? 0_0
0
22 / 22 / 34
Регистрация: 29.04.2014
Сообщений: 145
22.01.2016, 22:28 6
ХамелеонВЧерном, паскаль. Ваша задача из раздела "Длинная арифметика". Real-ом здесь не обойтись.
0
0 / 0 / 0
Регистрация: 22.01.2016
Сообщений: 5
22.01.2016, 22:34  [ТС] 7
благодарю, ушла читать
0
Модератор
Эксперт по электронике
8477 / 4335 / 1643
Регистрация: 01.02.2015
Сообщений: 13,462
Записей в блоге: 8
22.01.2016, 23:25 8
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Думаю, что здесь не нужна длинная арифметика (ну или почти не нужна).
1. Достаточно считать в строку string.
2. сравнить 2 последних символа с '00'.
3. Если не равны 00, то организовать сложение с 1 символов от length - 3 до 1.
4. Вывести строку от 1 по length -3.

Добавлено через 12 минут
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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.
Добавлено через 10 минут
Учёл случай '99999999999'.
0
0 / 0 / 0
Регистрация: 22.01.2016
Сообщений: 5
23.01.2016, 00:02  [ТС] 9
спасибо большое за вариант решения! в представленной программе в любом случае выводятся одинаковые числа, не принимая входные данные
0
Модератор
Эксперт по электронике
8477 / 4335 / 1643
Регистрация: 01.02.2015
Сообщений: 13,462
Записей в блоге: 8
23.01.2016, 00:36 10
Цитата Сообщение от ХамелеонВЧерном Посмотреть сообщение
в представленной программе в любом случае выводятся одинаковые числа, не принимая входные данные
Ну, типа это образец, идея, а не готовое решение.
0
23.01.2016, 00:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.01.2016, 00:36
Помогаю со студенческими работами здесь

Напишите программу, которая вычислит площадь геометрической фигуры по ее входным параметрам с клавиатуры
Столкнулся с такой проблемой. Язык начал учить 2 дня назад, а уже лабораторную сдавать и не могу...

Напишите программу, используя подпрограмму-функцию , которая вычислит количество пробелов, запятых в заданном тексте
Пожалуйста , напишите программу , используя подпрограмму-функцию , которая вычеслит количество...

Составить программу, которая по введенному числу n печатает фразу
составить программу которая по введенному числу n печатает фразу &quot;n долларов&quot; в правильной форме &quot;2...

Составить программу, которая по введенному числу определяет, сколько в нем единиц
Составить программу, которая по введенному числу (от 1 до 99) определяет, сколько в нем единиц (5-...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru