моля кажете къде ми е грешката - Софтуерен университет

моля кажете къде ми е грешката - Софтуерен университет

+ Нов въпрос
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);


        }
    }
}
 

Тагове:
svetoslav_0 avatar svetoslav_0 514 Точки

Ейй, казват лудия сън не го ловял.. :D не знаем условието обаче. И не е зле да си слагаш кода в pastebin например и така да го споделяш, за да се чете по-лесно :)

Edit: намерих няколко грешки (и условието): 

1. Когато печаташ резултатите, в тези къдрави скоби трябва да сложиш номерата на променливите, които след това ще изброяваш:

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

Console.WriteLine("Good harvest this year! Total wine: {0} litres. {1} litres left -> {2} litres per person.", 
                madeWine, (madeWine - neededLitreWines), Math.Round((madeWine - neededLitreWines) / numberWorkers ), 0);

2. Крайните променливи не са в оказания формат, излолзвай Math.Floor

3. От вече компилираните резултати от Judge виждам, че някъде имаш или пропуснат space или излишен

4. Judge очаква liters, а не litres

5. При else-а от if-else конструкцията: след total liters: ... Трябва да е на нов ред и да завършва с точка

0
24/01/2018 10:28:04
desimira avatar desimira 3 Точки

При изписването на резултата накрая, в плейсхолдъра {} трябва да има индекс - 0, 1, 2 и т.н., който да съответства на мястото на променливата след запетаята.

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

и

Console.WriteLine("Good harvest this year! Total wine: {0} litres. {1} litres left -> {2} litres per person.",  madeWine, (madeWine - neededLitreWines), Math.Round((madeWine - neededLitreWines) / numberWorkers ), 0);

0
KrIsKa7a avatar KrIsKa7a 28 Точки

Имаш проблем при интерполацията на string-ове. В тези {} скоби трябва да стои число. Например:

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

От по-новия C# се поддържа и следната функция:

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

Като обаче забележи, че ако искаш да работиш по този начин задължително трябва да имаш доларче преди началото на string-a. Хубаво е също ако ще пишеш по този начин, да изкарваш променлива за изчисленията, за да може да вписваш само нея в текста. Например:

var myVariable = neededLitreWines - madeWine;

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

Също така ако ти трябва закръгляне може да използваш два варианта:

  • Math.Round(myVariableName, countOfNumbersAfterDecimalSplitter);
  • Console.WriteLine($"It will be a tough winter! More {myVariable:f2} litres wine needed."), където числото след f в конструкцията f2 е равно на броя символи след десетичната запетая.
0
24/01/2018 07:16:22
svetoslav_0 avatar svetoslav_0 514 Точки

Не става въпрос просто за закръгляне, а за закръгляне към по-високото и по-ниското цяло число. Math.Round ще го закръгли на 4.2 -> 4, но 4.6 -> 5, така че с него ще има грешки

0
24/01/2018 10:26:41
KrIsKa7a avatar KrIsKa7a 28 Точки

Колегата не е пуснал условие на задачата така че не съм особено на ясно за какво закръгляне става въпрос точно. Целта беше по-скоро да му обясня за интерполацията на стрингове и че с нея също може да се закръгля.

0
TodorovP avatar TodorovP 175 Точки

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

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

0
jessi23 avatar jessi23 0 Точки

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

 

От лозе с площ 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 195 Точки

Здравей,
Проблемът при теб е, че в някой случай може "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 195 Точки

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

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

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

0
Stanil7 avatar Stanil7 -1 Точки

Благодаря много за помоща. Най - накрая разбрах къде сбърках. 

0