Loading...
Somma avatar Somma 6 Точки

...задачата от учебника 03 Stop Number и поведението на Джъдж-а?!...

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

Ще коментирам задачата от учебника „03. Stop Number“ и поведението на Джъдж-а, за да коментираме дали случайно съм открил бъг или логиката ми е грешна.

С две думи при мен се получи недоразбиране как Джъдж-а връща различни резултати за едно и също решени?! Както ще забележите съм добавил само една if(){} else{} конструкция за проверка (валидиране) на входните данни от конзолата и Джъдж-а гърми на два от резултатите:

 

Ето кодът с 80/100 точки, като връща:

Тест №4 (Грешен отговор)

Използвано време: 0.087 s

Използвана памет: 0.68 MB

… … …

Тест №7 (Грешен отговор)

Използвано време: 0.056 s

Използвана памет: 1.11 MB

 

import java.util.Scanner;

public class StopNumberWithWHILEcycle1 {

   public static void main (String[] args) {

      Scanner inputData = new Scanner(System.in);

         int n = Integer.parseInt(inputData.nextLine());

         int m = Integer.parseInt(inputData.nextLine());

         int s = Integer.parseInt(inputData.nextLine());

 

         if (0 <= n && n < m && m <= 10000 && n <= s && s <= m) {

            while (true) {

               if (m % 2 == 0 && m % 3 == 0) {

                  if (s == m) {

                     break;

                  } else if (m >= n) {

                     System.out.print( m + " ");

                  } else {

                     break;

                  }

               }

               m--;

            }

         } else {

            System.out.println("Я пак, че:   ");

            System.out.printf("0 <= %d(n) и n < %d(m) ?%n", n, m);

            System.out.printf("n <= %d(m) и m <= 10000 ?%n", m);

            System.out.printf("s >= %d(n) и s <= %d(m) ?%n", n, m);

         }

   }

}

 

Само премахването на if(){} else{} конструкцията за проверката и резултат е 100/100 точки?!?

 

import java.util.Scanner;<br> public class StopNumberWithWHILEcycle1 {

   public static void main (String[] args) {

      Scanner inputData = new Scanner(System.in);

      int n = Integer.parseInt(inputData.nextLine());

      int m = Integer.parseInt(inputData.nextLine());

      int s = Integer.parseInt(inputData.nextLine());

 

      while (true) {

         if (m % 2 == 0 && m % 3 == 0) {

            if (s == m) {

               break;

            } else if (m >= n) {

               System.out.print( m + " ");

            } else {

               break;

            }

         }

         m--;

      }

   }

}

 

Моля, коментирайте след като сте тествали кода и след като и при вас се получава такъв проблем. При мен впечатлението си остава, че е бъг и трябва Джъдж-а да се „пренастрой“, защото явно подава грешни данни, които са извън условието на задачата.

 

Успех: Somma!

 

Тагове:
0
Programming Basics with Java 06/08/2020 15:42:43
MANEKENA avatar MANEKENA 118 Точки

От кой учебник е тази задача ?

0
Somma avatar Somma 6 Точки

Здравей, Манекена! 

Учебника, който чета в момента е: https://java-book.softuni.bg/

Но аз ползвам PDF версията, която е на адрес https://github.com/SoftUni/Programming-Basics-Book-Java-BG/blob/master/resources/Programming-Basics-Java-v2017.pdf

Задачата в PDF-а е на 299 страница - : "Задача: спиращо число"!

А в уеб варианта е 4-тат задача от "Глава 7.2. По-сложни цикли – изпитни задачи"

Somma!

 

0
MANEKENA avatar MANEKENA 118 Точки
import java.util.Scanner;
// created by J.M.
public class StopNumber {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = Integer.parseInt(scan.nextLine());
        int m = Integer.parseInt(scan.nextLine());
        int s = Integer.parseInt(scan.nextLine());
        if (0 <= n && n < m && m <= 10000 && s <= m) {
            for (int i = m; i >= n; i--) {
                if (i % 2 == 0 && i % 3 == 0) {
                    if (s == i) {
                        break;
                    } else {
                        System.out.print(i + " ");
                    }
                }
            }
        }
    }
}

 

Така работи 100/100 и проблема в твоята проверка е (n <= s) ,но в случая с тази задача не ти искат валидиране на входните данни и няма нужда от тази if  проверка .Може да е печатна в грешка книгата това 

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