Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

Stanil7 avatar Stanil7 -1 Точки

моля кажете къде ми е грешката

Моля ви, кажете къде ми е грешката. Опитвам се да разбера, а нямам идея...

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace task3
{
    class Program
    {
        static void Main(string[] args)
        {
            var sqMetresGrapes = int.Parse(Console.ReadLine()); // квадратни метра лозе
            var eachSqMeterGrapesKilos = double.Parse(Console.ReadLine()); // кг грозде на кв. метър
            var neededLitreWines = int.Parse(Console.ReadLine()); // необходими литри вино
            var numberWorkers = int.Parse(Console.ReadLine()); // брой работници
            var useAbleGrape = (sqMetresGrapes * eachSqMeterGrapesKilos) * 0.40; // грозде използвано за вино
            var madeWine = useAbleGrape / 2.5; // направено вино
            if (madeWine < neededLitreWines)
            {
                Console.WriteLine("It will be a tough winter! More {} litres wine needed.", neededLitreWines - madeWine);
            }
            else Console.WriteLine("Good harvest this year! Total wine: {} litres. {} litres left -> {} litres per person.", 
                madeWine, (madeWine - neededLitreWines), Math.Round((madeWine - neededLitreWines) / numberWorkers ), 0);


        }
    }
}
 

Тагове:
0
Programming Basics
TodorovP avatar TodorovP 177 Точки

Може да използваш и този формат с $ и оттам нататък стринга, като в къдравите скоби поставиш резултата или промеливата:

Console.WriteLine($"It will be a tough winter! More {neededLitreWines - madeWine} litres wine needed.",);

0
jessi23 avatar jessi23 1 Точки

Здравейте, и аз имам проблем със същата задача. Ето условието все пак.

 

От лозе с площ 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.”
      • Резултатът трябва да е закръглен към по-ниско цяло число
  • Ако произведеното вино е повече от нужното:
    • “Good harvest this year! Total wine: {общо вино} liters.”
      • Резултатът трябва да е закръглен към по-ниско цяло число
    • “{Оставащо вино} liters left -> {вино за 1 работник} liters per person.”
      • И двата резултата трябва да са закръглени към по-високото цяло число

 

Ето го моя код: https://pastebin.com/zAFj3UkL, тук може да тествате: https://judge.softuni.bg/Contests/Practice/Index/233#1

Judge ми дава 90/100 точки.

 

 

0
Thedi avatar Thedi 200 Точки

Здравей,
Проблемът при теб е, че в някой случай може "allWine" да се окаже дробно число. За това трябва където го принтираш да го закръглваш. В твоят случай на този ред:

Console.WriteLine("Good harvest this year! Total wine: {0} liters.", allWine);

По условие на задачата трябва да закръглиш "allWine" към по-ниско цяло число. Това би изглеждало така:

  Console.WriteLine("Good harvest this year! Total wine: {0} liters.", Math.Floor(allWine));

 

0
Thedi avatar Thedi 200 Точки

Здравей @TodorovP
Моля прочетете кода преди да правите такива коментари. @jessi23 е направила тези закръгления там където декларира litersLeft и wineForWorkers

   double litersLeft = Math.Ceiling(allWine - neededWine);
   double wineForWorkers = Math.Ceiling(litersLeft / workers);

Което означава, че по никакъв начин не е нужно да го прави където принтира. 
Не е хубаво да се дават грешни насоки.

0
jessi23 avatar jessi23 1 Точки

Да, така стана. Благодаря :) Мислех че като съм закръглила при присвояването на стойностите горе, няма нужда и при отпечатването, но явно има :)

0
Thedi avatar Thedi 200 Точки

@jessi23
Щом при декларацията са закръглени и не са пипани не е нужно да се закръглят и при изхода.
Проблема при теб е всъщност, че ти не закръгляваш allWine. Ако се вгледаш в кодът ти: 
 

double allWine = (Math.Floor(allGrape * 0.40)/ 2.5);

Може да забележиш, че в функцията Math.Floor ти подаваш само (allGrape * 0.40) , а пък това закръглено го делиш на 2.5:
(Math.Floor(allGrape * 0.40)/ 2.5);
Само зелените скобички са за Math.Floor
Поради тази причина allWine в някой от случайте си остава дробно число и трябва да го закръглиш при принтирането. 

За тази задача това обаче ти е плюс, защото не трябва да закръглиш цялото вино преди проверките, а чак когато принтираш. 
Ако го закръглиш още тук където си се опитала след това долу в проверките ще минава на грешните проверки. Идеята е да сравниш целия allWine с neededWine, а пък после да закръглиш когато го принтираш. В противен случай при закръглянето ще се случи така, че тази проверка да влезе все едно виното не ти стига, а пък то да стигне.

0
24/01/2018 11:13:07
jessi23 avatar jessi23 1 Точки

@Thedi, благодаря за насоките. Сега вече разбрах защо не ставаше. Оставих закръглянето само на изхода, и работи както трябва. :)

0
TodorovP avatar TodorovP 177 Точки

За втория изход по условие

"И двата резултата трябва да са закръглени към по-високото цяло число .".

Следователно там изходът трябва да е:

Console.WriteLine("Good harvest this year! Total wine: {0} liters.", Math.Ceiling(allWine));

Console.WriteLine("{0} liters left -> {1} liters per person.", Math.Ceiling(litersLeft), Math.Ceiling(wineForWorkers));

-1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.