Loading...
zonax avatar zonax 4 Точки

2. Poll (April 14-15)

Здравейте. Днес се натъкнах при проблем с решаването на втора задача от изпита през 14-15 април и не мога да разбера къде ми е грешката. Първоначално в judge ми изписваха грешките и самият вход при който се получават. Оправих ги и след като пробвах отново, получавах същите резултати в IDE-то. След като я submit-нах в judge-а ми изписа, че имам 50/50, но не ми показва самата грешка и входа, при който се получава. Оставям кода и условието. Благодаря предварително :)

Условие - https://softuni.bg/downloads/svn/programming-basics/2018-02/Exam/Problem%2002%20-%20Poll.pdf

Код:

 

package April14_15;

import java.util.Scanner;

public class Poll {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int participants = Integer.parseInt(scanner.nextLine());
        int votesForLanguageOne = Integer.parseInt(scanner.nextLine());

        double votesForLanguageTwo = votesForLanguageOne - (votesForLanguageOne * 0.20);
        double votesForLanguageThree = votesForLanguageTwo - (votesForLanguageTwo * 0.10);
        double votesForTheFirstThreeLanguages = votesForLanguageOne + votesForLanguageTwo + votesForLanguageThree;
        String text1 = "First three languages have";
        String text2 = "votes more";
        String text3 = "votes less of half votes";

        double difference = Math.abs(votesForTheFirstThreeLanguages - (participants/2));

        if (votesForTheFirstThreeLanguages >= (participants/2)) {
            System.out.printf("%s %.0f %s", text1, difference, text2);
        } else {
            System.out.printf("%s %.0f %s", text1, difference, text3);
        }
    }
}

 

Тагове:
0
Programming Basics with Java
marin2112 avatar marin2112 38 Точки

Здрасти колега , имам същия проблем , според мен проблема е, че в резултата изкарва "doulble" , а трябва да е цяло.
До този извод стигнах ползвайки дебъг. 
С кастване стигнах до 80/100 , прилагам моя код за да погледнеш и да видиш моя резултат.

https://pastebin.com/DXWbDcTy

0
zonax avatar zonax 4 Точки

Здравей. Помогнаха ми за проблема. Грешката се получава, защото след като намерим сумата от 3-те езика, не използваме Math.floor(). С цели числа работи и при мен, но ако от входа се получат дробни числа няма да стане и слагаме Math.floor(), защото ако имаме 24.88(например), все още не е цял глас :) Ако го използваш, ще имаш 100/100.

1
17/06/2018 21:21:03
Tanasis avatar Tanasis 39 Точки
Здрасти! Ето по този начин ще получиш 100/100. Първо, както каза колегата zonax,
закръгляш общия брой гласове до по-ниското число, след това кастваш diff2 към Int и ще ти се получи без 36.0. Дано да съм помогнал !

package Exam;

import java.util.Scanner;

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

            int people = Integer.parseInt(scanner.nextLine());
            int firstPlace = Integer.parseInt(scanner.nextLine());

            double secPlace = firstPlace - (firstPlace * 0.2);
            double thirdPlace = secPlace - (secPlace * 0.1);
            double allThree = firstPlace + secPlace + thirdPlace;
            allThree = Math.floor(allThree);
            double halfVotes = people / 2;

            if (allThree >= halfVotes) {
                double diff = allThree - halfVotes;
                double diff2 = (int) diff;
                System.out.printf("First three languages have %s votes more", (int)(diff2));
            } else {
                double diff = halfVotes - allThree;
                double diff2 = (int) diff;
                System.out.printf("First three languages have %s votes less of half votes", (int)(diff2));
            }

        }
    }
}
0
17/06/2018 21:31:11
marin2112 avatar marin2112 38 Точки

Благодаря , качвам кода с Math.floor() , за да може и за напред да се провери от ноякого , ако има нужда ;) Благодаря !!! 
https://pastebin.com/vWNiDKpy

1
Tanasis avatar Tanasis 39 Точки

Здравей колега! Пробвай по този начин, защото по твоя като пробвам с дадените примери получаваш 35 вместо 36. По този начин би трябвало всичко да е наред. :)

 

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