Проблем със задача "Harvest" от предишен изпит
Здравейте!
Не мога да открия грешката си в кода. Четох, търсих, уж всичко е както трябва да е, а джъджа гърми пак и пак и пак. Моля, помогнете! Очаквам отговорите ви с нетърпение. А ето и задачата:
От лозе с площ X квадратни метри се заделя 40% от реколтата за производство на вино. От 1 кв.м лозе се изкарват Y килограма грозде. За 1 литър вино са нужни 2,5 кг. грозде. Желаното количество вино за продан е Z литра.
Напишете програма, която пресмята колко вино може да се произведе и дали това количество е достатъчно. Ако е достатъчно, остатъкът се разделя по равно между работниците на лозето.
Вход
Входът се чете от конзолата и се състои от точно 4 реда:
- 1ви ред: X кв.м е лозето – цяло число в интервала [10 … 5000];
- 2ри ред: Y грозде за един кв.м – реално число в интервала [0.00 … 10.00];
- 3ти ред: Z нужни литри вино – цяло число в интервала [10 … 600];
- 4ти ред: брой работници – цяло число в интервала [1 … 20];
Изход
На конзолата трябва да се отпечата следното:
- Ако произведеното вино е по-малко от нужното:
- “It will be a tough winter! More {недостигащо вино} liters wine needed.”
- Резултатът трябва да е закръглен към по-ниско цяло число
- “It will be a tough winter! More {недостигащо вино} liters wine needed.”
- Ако произведеното вино е повече от нужното:
- “Good harvest this year! Total wine: {общо вино} liters.”
- Резултатът трябва да е закръглен към по-ниско цяло число
- “{Оставащо вино} liters left -> {вино за 1 работник} liters per person.”
- И двата резултата трябва да са закръглени към по-високото цяло число.
- “Good harvest this year! Total wine: {общо вино} liters.”
Ето и моя код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Harvest
{
class Program
{
static void Main(string[] args)
{
var area = int.Parse(Console.ReadLine());
var kg = double.Parse(Console.ReadLine());
var wantedWine = int.Parse(Console.ReadLine());
var workers = int.Parse(Console.ReadLine());
var harvest = area * kg;
var harvestWine = (40 / 100.0) * harvest;
var liters = harvestWine / 2.5;
if (liters<wantedWine)
{
var wineMore = Math.Floor(wantedWine - liters);
Console.WriteLine("It will be a tough winter! More {0} liters wine needed. ", wineMore);
}
else if (liters>wantedWine)
{
var litersLeft = Math.Ceiling(liters - wantedWine);
var litersPerson = Math.Ceiling(litersLeft / workers);
Console.WriteLine("Good harvest this year! Total wine: {0} liters.", liters);
Console.WriteLine("{1} liters left -> {2} liters per person.", litersLeft, litersPerson);
}
}
}
}
Имаш право. Поправих го, и въпреки това джъджа пак ми дава 80/100 :(
При извеждането на изхода, литрите се закръглят надолу (Math.Floor()), а и един допълнителен случай (при равенство) трябва да бъде покрит. Ето го твоето решение с корекциите. Разгледай и авторското решение.
100/100. Благодаря ти! Разбрах грешките си.