Професионална програма
Loading...
+ Нов въпрос
daniela_dobreva avatar daniela_dobreva 1 Точки

Задача 6 от предварителния изпит Judge ме оцени със 70 точки, не мога да намеря грешката, а съм изключително любопитна къде греша.

package com.company;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int location = Integer.parseInt(scanner.nextLine());
        for (int i = 0; i < location; i++) {
            double avrExtraction = Double.parseDouble(scanner.nextLine());
            int days = Integer.parseInt(scanner.nextLine());
            double sumExtraction = 0.0;
            for (int j = 0; j < days; j++) {
                double extraction = Double.parseDouble(scanner.nextLine());
                sumExtraction += extraction;
            }
            double average = sumExtraction /days;
            if(average >= avrExtraction) {
                System.out.printf("Good job! Average gold per day: %.2f.\n",average);
            }else {
                System.out.printf("You need %.2f gold.", avrExtraction - average);
            }
        }
    }

}
0
Programming Basics with Java
MANEKENA avatar MANEKENA 26 Точки

Дай условието на задачата :)

0
daniela_dobreva avatar daniela_dobreva 1 Точки

Задача 6. Златна мина

Група ентусиасти обикалят по различни локации, където има златни мини. Вашата задача е да им помогнете като напишете програма, която да приема броя на локациите и очакван среден добив на злато за ден за една локация. За всеки ден ще получавате колко злато са добили на локацията. Проверете дали са постигнали очаквания добив за дадена локация или не.

Вход:

Първоначално от конзолата се прочита едно числоброй локациицяло число в интервала [1.. 100]

За всяка една локация се четат две числа, по едно на ред:

  1. На първия ред – очакван среден добив на ден злато реално число в интервала [0.00.. 10000.00]
  2. На втория ред – брой дни, в който ще се копае на дадената локацияцяло число в интервала [1.. 30]

За всеки ден се чете по едно число:

  • Добито злато за деняреално число в интервала [0.00.. 1000.00]

Изход:

След приключване на копаенето на дадена локация се печата един ред според случая:

  • Ако средният добив злато за ден достига или надвишава очаквания среден добив на ден злато:
    • "Good job! Average gold per day: {среден добив на ден за дадената локация}."
  • Ако средният добив злато за ден е под очаквания среден добив на ден злато:
    • "You need {злато, което не е достигнало за достигане на очакваният среден добив} gold."

Резултатът да бъде форматиран до вторият знак след десетичният разделител.

0
navroniev avatar navroniev 1 Точки

Предполагам проблемът е, че няма нов ред в края на принта в else блока -

System.out.printf("You need %.2f gold.\n", avrExtraction - average);

Това е разликата при моето решение.

0
daniela_dobreva avatar daniela_dobreva 1 Точки

Благодаря, за това не се бях досетила :)

0
daniela_dobreva avatar daniela_dobreva 1 Точки

Разбира се, може ли да дадеш условието и да кажеш къде се затрудняваш.

0
CvetanSavov avatar CvetanSavov 0 Точки

Задача 4. Подаръци от Дядо Коледа

Дядо Коледа започва да обикаля от град на град за да носи подаръци на всички послушни деца. Той ви моли да напишете програма, която да принтира на конзолата всички адресни номера от М до N, които се делят едновременно на 2 и на 3 без остатък, тъй като Дядо Коледа, знае че там живеят само послушни деца. От конзолата ще се чете още един номер на адрес S. Ако някой от адресните номера от  M до N, които се делят на 2 и 3, е равен на адреса S, този адрес не трябва да се принтира и програмата трябва да приключи. В противен случай се принтират всички адресни номера до N, които отговарят на условието.

Вход:

От конзолата се четат точно 3 числа, всяко на отделен ред:

  • Nцяло число 0 <= N < M
  • Mцяло число – N < M <= 10000
  • Sцяло числo – N <= S <= M

Изход:

На конзолата се принтират на един ред, всички адресни номера отговарящи на условията, разделени с интервал.

Примерен вход и изход:

Вход

Изход

Обяснения

1

30

15

30 24 18 12 6

Адресните номера от M = 30 до N = 1, които се делят едновременно на 2 и на 3 без остатък, са: 30 24 18 12 и 6.

Като S = 15 не прекъсва редицата, защото не е равно на нито един адрес, който се дели на 2 и на 3 едновременно.

Вход

Изход

 

1

36

12

36 30 24 18

Адресните номера от M = 36 до N = 1, които се делят едновременно на 2 и на 3 без остатък, са: 36 30 24 18.

Като S = 12  е равно на адреса 12, който се дели на 2 и на 3, затова спираме до 18 и не печатаме адреса 12.

Вход

Изход

20

1000

36

996 990 984 978 972 966 960 954 948 942 936 930 924 918 912 906 900 894 888 882 876 870 864 858 852 846 840 834 828 822 816 810 804 798 792 786 780 774 768 762 756 750 744 738 732 726 720 714 708 702 696 690 684 678 672 666 660 654 648 642 636 630 624 618 612 606 600 594 588 582 576 570 564 558 552 546 540 534 528 522 516 510 504 498 492 486 480 474 468 462 456 450 444 438 432 426 420 414 408 402 396 390 384 378 372 366 360 354 348 342 336 330 324 318 312 306 300 294 288 282 276 270 264 258 252 246 240 234 228 222 216 210 204 198 192 186 180 174 168 162 156 150 144 138 132 126 120 114 108 102 96 90 84 78 72 66 60 54 48 42

0