Софтуерно Инженерство
Loading...
NikolayLiubomirov avatar NikolayLiubomirov 78 Точки

Simple Calculations - Задача 20. Дневна печалба - проблем

Ще съм много благодарен, ако някой ми каже защо програмата ми изкарва грешно число. Ред по ред пресмятах с калкулатора и не успях да открия грешка.

using System;

namespace DailyEarning
{
    class Program
    {
        static void Main()
        {
            byte daysPerMonth = byte.Parse(Console.ReadLine());
            double dollarsPerDay = double.Parse(Console.ReadLine());
            double dollarRate = double.Parse(Console.ReadLine());

            var monthSalary = daysPerMonth * dollarsPerDay;
            var yearSalary = monthSalary * 12 + monthSalary * 2.5;
            var tax = yearSalary * (25 / 100); 
            var netIncomeInDollars = yearSalary - tax;
            var netIncomeInLeva = netIncomeInDollars * dollarRate;
            var averageIncomePerDay = netIncomeInLeva / 365;

            Console.WriteLine(Math.Round(averageIncomePerDay, 2));
        }
    }
}

Благодаря, предварително smiley

0
Основи на програмирането 15/03/2017 18:48:43
ThePSXHive avatar ThePSXHive 436 Точки
Best Answer

Според мен, досещането ти да използваш byte за daysPerMonth е много добро. Излишно е да се използва тип с по-голяма "вместимост". За грешката - не е от форматирането, а от фактът, че когато изчисляваш данъкът на следния ред

var tax = yearSalary * (25 / 100);

резултатът от делението е нула. Съответно, стойността на данъкът винаги е 0. Замени го с деление между целочисленна и дробна стойност

var tax = yearSalary * (25 / 100.0);

Останалото е наред, но форматирането на Luko193 е за предпочитане - по-кратко и си спестяваш извикване на метод.

0
NikolayLiubomirov avatar NikolayLiubomirov 78 Точки

Мерси за изчерпателният отговор, това е било!

1