Loading...
HristoDinev avatar HristoDinev 26 Точки

04. Beverage Labels -Проблем със задача

Здравейте колеги,

Пускам решението на задачата си в judge, като преди това съм тествал всеки ход и изход. Изходите са ми точно такива, каквито се искат в решението, но системата ми дава само 10/100. Къде е проблема? Ето и решението ми:

using System;


namespace SoftUniHomework01Task4
{
    internal class Program
    {
        public static void Main(string[] args)
        {
            var ProductName = Console.ReadLine();
            var ProductVolume = int.Parse(Console.ReadLine());
            var ProductEnergy = int.Parse(Console.ReadLine());
            var ProductSugarContent = double.Parse(Console.ReadLine());

            var energy = (ProductVolume*ProductEnergy)/100;

            var sugar =(ProductSugarContent * ProductVolume)/100;
            
            Console.WriteLine($"{ProductVolume}ml {ProductName}:"); 
            Console.WriteLine($"{energy}kcal, {sugar}g sugars");
        }
    }
}

Тагове:
0
Fundamentals Module
v.bonapartov avatar v.bonapartov 18 Точки
Best Answer

Здравей!

 

Извършваш целочислено деление при energy и sugar:

 var energy = (ProductVolume*ProductEnergy)/100;

var sugar =(ProductSugarContent * ProductVolume)/100;

 

Трябва да е:

 var energy = (ProductVolume*ProductEnergy) / 100.00;

 var sugar =(ProductSugarContent * ProductVolume) / 100.00;

 

Поздрави,

Веселин

 

1
HristoDinev avatar HristoDinev 26 Точки

Благодаря за информацията. А защо е необходимо да е с десетична запетая?

0
v.bonapartov avatar v.bonapartov 18 Точки

Защото е нормално резултата, който трябва да получиш да е реално число. В дадените примери се вижда това.

0
inser7 avatar inser7 221 Точки

Здравей,

това е така за да получиш в отговора т.н. израз с floating point,

или по-просто обяснено - ако разделиш 3 / 2 - отговора ще е 1(и преди това си ги декларирал като integer),но ако разделиш 3 / 2.0 или 3.0 / 2, отговорът ще е 1,5.

Има разлика между целочислено деление - отговорът е цяло число, и деление на числа с плаваща запетая(floating point ),

отговорът също ще е число с плаваща запетая.

Поздрави, надявам се да съм бил полезен!

0
VladimirPetukhov avatar VladimirPetukhov 28 Точки

Може е да стане с

var energy = double.Parse(Console.ReadLine())*volume/100;

  var sugar = double.Parse(Console.ReadLine())*volume / 100;

 

0
Vincent avatar Vincent 11 Точки

Здравейте, ако може да ми съдействате с тази задача. Имам проблем с джъдж. Веднъж ми иска резултата в double веднъж в int. къде е проблема. 

https://i.imgur.com/2RA7w9K.png

0
HristoDinev avatar HristoDinev 26 Точки

Промени следните редове:

            var energy = (ProductVolume*ProductEnergy)/100.00;

            var sugar =(ProductSugarContent * ProductVolume)/100.00;

 

Пиши дали разрешава проблема.

0
Vincent avatar Vincent 11 Точки

Благодаря ти за отговора. Проблема е по различен - веднъж се иска без знаци с десетичната запетая, а веднъж се иска с един знак.

Това успях да го преодолея като сложих един If и филтрирах по четни стойности. Джъдж обаче още не ми го приема. Моля за помощ

import java.util.Scanner;

public class Problem01 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        String name = scanner.nextLine();
        double ProductVolume = Double.parseDouble(scanner.nextLine());
        double ProductEnergy = Double.parseDouble(scanner.nextLine());
        double ProductSugarContent = Double.parseDouble(scanner.nextLine());

        double energy =(ProductVolume*ProductEnergy)/100.00;
        double sugar =(ProductSugarContent * ProductVolume)/100.00;

        System.out.printf("%.0fml %s:%n", ProductVolume, name);

        if (sugar%2==0) {
            System.out.printf("%.0fkcal, %.0fg sugars", energy, sugar);
        }
        else {
            System.out.printf("%.0fkcal, %.1fg sugars", energy, sugar);
        }
    }
}
0
HristoDinev avatar HristoDinev 26 Точки

Грешката ти е във форматирането на стойностите в printf. Пробвай така:

import java.util.Scanner;

public class BeverageLabels {

    public static void main(String[] args) {

        Scanner console = new Scanner(System.in);

        String name= console.nextLine();

        double ProductVolume = Double.parseDouble(console.nextLine());

        double ProductEnergy = Double.parseDouble(console.nextLine());

        int ProductSugarContent = Integer.parseInt(console.nextLine());

        double energy =(ProductVolume*ProductEnergy)/100.00;
        double sugar =(ProductSugarContent * ProductVolume)/100.00;


        System.out.printf("%.0fml %s:%n", ProductVolume, name);

        System.out.printf("%.0fkcal, %.1f sugars", energy, sugar);

    }

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