Loading...

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

Tomo_Radomirski avatar Tomo_Radomirski 6 Точки

Coins - от "While" упражнението - без кастване

Здравейте, на всички които мога да помогна с решението си и които могат да го коментират (предварително Благодаря).

Задачата е за рестото на монетите от вендинг машината. Оказва се (за начинаещитите като мен), че Java прави малко нежелани промени като смята дабълите. На упражнението изписахме "String.format", които нямах щастието да разбера, въпреки, че бяха обяснени многократно.

Решил съм задачата, като съм прехвърлил "сумата" в стотинки и съм закръглял след всяко изчисление в отделните while-ове. Правил съм по while за всеки тип монета (дори и да е малко тромаво).

Judge ми даде 100/100.

 

import java.util.Scanner;

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

        double amount = Double.parseDouble(input.nextLine());
        double stotinki = amount * 100;
        int coins = 0;

        while (stotinki >= 200){
            stotinki -= 200;
            Math.round(stotinki);
            coins++;
        }

        while (stotinki >= 100){
            stotinki -= 100;
            Math.round(stotinki);
            coins++;
        }

        while (stotinki >= 50){
            stotinki -= 50;
            Math.round(stotinki);
            coins++;
        }

        while (stotinki >= 20){
            stotinki -= 20;
            Math.round(stotinki);
            coins++;
        }

        while (stotinki >= 10){
            stotinki -= 10;
            Math.round(stotinki);
            coins++;
        }

        while (stotinki >= 5){
            stotinki -= 5;
            Math.round(stotinki);
            coins++;
        }

        while (stotinki >= 2){
            stotinki -= 2;
            Math.round(stotinki);
            coins++;
        }

        while (stotinki >= 1){
            stotinki -= 1;
            Math.round(stotinki);
            coins++;
        }

        System.out.println(coins);

    }

}
Тагове:
1
Module: Java Advanced
I.P.Ivanov avatar I.P.Ivanov 7 Точки

Може в цикъл, в който имаш операциите с 5*100, 2*100 и 1*100 (500 го елиминирашс if). Управляващата променлива се дели на 10  - с 5*10,2*10,1*10 и накрая с 5,2,1.

Може и съвсем без цикъл. Докато измислиш цикъла ще си написал решението.

0
milensky avatar milensky 32 Точки

Благодаря за решението - идеята с умножение по 100 е много добра. Аз се бях овъртял с по-малките от 0.1 числа накрая.

0
Val3ntinV avatar Val3ntinV 20 Точки

Math.round nujen li e ? Moje i bez nego spored men...Ako da ..to za kakvo se izpolzva?

0
dido1092 avatar dido1092 38 Точки

Да не пускам нова тема за същата задача аз я решавам само с един цикъл и не виждам къде греша, но получавам в judge 80/100

https://pastebin.com/9CeewYqW

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