1. Java / Говнокод #25998

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    import java.util.Scanner;
    
    public class ComputeTax {
    
    public static void main(String[] args) {
    // Create a Scanner
    Scanner input = new Scanner(System.in);
    
    // Prompt the user to enter filing status
    System.out.print(
        "(0-single filer, 1-married jointly or qualifying widow(er)",
        + "\n2-married separately, 3-head of household)\n" +
        "Enter the filing status: ");
    int status = input.nextInt();
    
    // Prompt the user to enter taxable income
    System.out.print("Enter the taxable income: ");
    double income = input.nextDouble();
    
    // Compute tax
    double tax = 0;
    
    if (status == 0) {// Compute tax for single filers
        if (income <= 8350)
              tax = income * 0.10;
        else if (income <= 33950)
              tax = 8350 * 0.10 + (income - 8350) * 0.15;
        else if (income <= 82250)
              tax = 8350 * 0.10 + (33950 - 8350) * 0.15 +
             (income - 33950) * 0.25;
        else if (income <= 171550)
              tax = 8350 * 0.10 + (33950 - 8350) * 0.15 +
             (82250 - 33950) * 0.25 + (income - 82250) * 0.28;
        else if (income <= 372950)
              tax = 8350 * 0.10 + (33950 - 8350) * 0.15 +
              (82250 - 33950) * 0.25 + (171550 - 82250) * 0.28 +
              (income - 171550) * 0.33;
        else
              tax = 8350 * 0.10 + (33950 - 8350) * 0.15 +
             (82250 - 33950) * 0.25 + (171550 - 82250) * 0.28 +
             (372950 - 171550) * 0.33 + (income - 372950) * 0.35;
    }
    else if (status == 1) {
    // Left as exercise
    // Compute tax for married file jointly or qualifying widow(er)
    }
    else if (status == 2) {
    // Compute tax for married separately
    // Left as exercise
    }
    else if (status == 3) {
    // Compute tax for head of household
    // Left as exercise
    }
    else {
        System.out.println("Error: invalid status");
        System.exit(1);
    }
    // Display the result
    System.out.println("Tax is " + (int)(tax * 100) / 100.0);
    
    }

    Запостил: Ksyrx, 26 Октября 2019

    Комментарии (52) RSS

    • Считаем нологи.
      Ответить
      • Сколько ты ноложил!

        При изменении ставки строки 24-41 придётся кромсать и несколько раз перепроверять, чтобы не ошибиться?
        Ответить
    • vanished
      Ответить
      • Нет, не похоже что это стертор. https://github.com/maximhesed за несколько минут я его гитхаб нагуглил, сишечка в основном. У стертора был бы поцкал и дельфи
        Ответить
        • vanished
          Ответить
        • А где он так наследил, что можно связать эти профили?
          Ответить
          • Пфф... зайди например в https://github.com/maximhesed/matrix и там ник Ksyrx будет. Да и на аватарке в гитхабе тоже какая-то хуйня с черепом, так что это наверняка он
            Ответить
            • Но в любом случае это не Стептоп: Стептопа настолько выворачивает от консольных программ, что он даже с файки не стал бы отправлять код, в котором есть вывод в консоль.
              Ответить
            • слшы, сам ты хуйня с черепом охуел блядь
              нахуй я тогда ставил эту аву? чтобы её хуйнёй с черепо назвали? мудак бля сука ээ
              Ответить
    • import java.util.stream.Stream;
      import java.util.stream.DoubleStream;
      import java.util.Arrays;
      import java.util.function.Function;
      
      public class ComputeTax {
          static final double[] percents   = {0.10, 0.15, 0.25, 0.28, 0.33, 0.35};
          static final double[] thresholds = {8350, 33950, 82250, 171550, 372950};
      
          public static void main(String[] args) {
              double[] partialSums = Stream.iterate(0, n -> n + 1).limit(5).mapToDouble(
                  (i) -> thresholds[i] * (percents[i] - percents[i + 1])
              ).toArray();
      
              Function<Double, Double> computeTax = (income) -> {
                  int level = (int)Arrays.stream(thresholds).reduce(0, (x, y) -> x + new Boolean(income > y).compareTo(false));
      
                  return Arrays.stream(partialSums).limit(level).reduce(0, (x, y) -> x + y) + income * percents[level];
              };
      
              double tax = computeTax.apply(100000.0);
              double controlValue = 8350 * 0.10 + (33950 - 8350) * 0.15 +
                  (82250 - 33950) * 0.25 + (100000 - 82250) * 0.28;
              System.out.println("Tax is " + (int)(tax * 100) / 100.0);
              System.out.println("Control value is " + (int)(tax * 100) / 100.0);
          }
      }


      https://ideone.com/pJJBbr

      Куик!
      Ответить
      • Я невнимательная обезьяна. В 25-й строчке должно быть controlValue вместо tax:
        https://ideone.com/UbM7mL

        Тем не менее, программа всё посчитала правильно.
        Ответить
        • И на всякий случай проверим все диапазоны:
          https://ideone.com/stNfjy
          Ответить
          • Ребят, пожалуйста не юзайте double для таких вычислений, мне плакать хочется когда я вижу такое, у вас же есть bigdecimal
            Ответить
      • > new Boolean(income > y).compareTo(false)
        govnokod detected
        Ответить
        • vanished
          Ответить
        • А как правильно кастовать булев тип в число? Я тупая обезьяна и Жабу не знаю.
          Ответить
          • new Boolean(income > y ).compareTo(false)
            пздц плохо
            Boolean.valueOf(income > y ).compareTo(false)
            плохо
            Boolean.compare(income > y, false)
            а на буя?
            (income > y ? 0 : 1)
            збс
            Ответить
          • y ? 1 : 0
            Ответить
            • В языке «Йажа» инты и другие типы неявно не конвертятся в булеан.

              И это правильно. Именно поэтому я за «Йажа».
              Ответить
          • https://cs11.pikabu.ru/images/big_size_comm_an/2019-02_5/1550813983116645743.gif
            Ответить
        • Ого, олд! У тебя ник с точкой!
          Ответить
    • Я за «итеративные алгоритмы».
      _PERCENTS   = 0.10, 0.15, 0.25, 0.28, 0.33, 0.35
      _THRESHOLDS = 8350, 33950, 82250, 171550, 372950
      
      
      def compute_tax(income):
          tax = 0
          for percent, threshold, prev_threshold in zip(_PERCENTS, _THRESHOLDS, (0,) + _THRESHOLDS):
              if income <= 0:
                  break
              income_part = min(income, threshold - prev_threshold)
              tax += income_part * percent
              income -= income_part
          
          if income > 0:
              tax += income * _PERCENTS[-1]
          
          return tax

      https://ideone.com/KI7dLZ
      Ответить
    • https://twitter.com/HistoryFoto/status/1188785072826130433

      с праздником
      Ответить
    • То ли дело в России
      return 0.13;
      Ответить

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