Здравейте,
При тази задача: https://learn.telerikacademy.com/mod/page/view.php?id=4848
Получавам 40 точки с този код: https://pastebin.com/YWShB8fF
Проблема е, че не мога да разбера какво не е наред с кода.
Здравейте,
При тази задача: https://learn.telerikacademy.com/mod/page/view.php?id=4848
Получавам 40 точки с този код: https://pastebin.com/YWShB8fF
Проблема е, че не мога да разбера какво не е наред с кода.
Здравей,
Това, което виждам на пръв поглед е че не правиш проверки за това дали N и числата са в дадения в условието интервал.
Здрасти,
Не мисля, че проблема е в това.
Имаше малък проблем със форматирането и със сбора. Въпреки че в условието пише че всички дадени цифри ще бъдат integers, като се загледах в отговорите които дава от judge системата се вижда че повечето от тях не са изобщo integers а са floating point numbers. Сбора ти беше float, а от системата получаваше doubles. Това става проблем когато събираш doubles които имат по-голяма точност след десетичната запетая във float, които имат по-малка точност. На теория разликата е малка, но за системата която гледа всеки символ е достатъчно да даде грешка. Във форматирането не съм изцяло сигурен какъв беше проблема, не ми се занимаваше да преглеждам всеки символ понеже не съм много наясно с този начин на форматиране в Java, но ти беше декларирал DecimalFormat, но не го използваше. Просто гугълнах набързо как да го използвам и след това работеше перфектно =) Ето кода : https://pastebin.com/cCyEvTpt
Благодаря много за доброто обяснение и за помощта!
какво не е наред в кода ми. InteliJ го смята перфектно но Judge ми дава 0.
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double n = Double.parseDouble(scanner.nextLine());
double sum = 0;
double avg = 0;
double min = Double.MAX_VALUE;
double max = Double.MIN_VALUE;
for (int i = 1; i <= n; i++) {
double num = Double.parseDouble(scanner.nextLine());
if (num > max) {
max = num;
}
if (num < min) {
min = num;
}
sum = sum + num;
avg = sum / n;
}
System.out.printf("min %.2f%n", min);
System.out.printf("max %.2f%n", max);
System.out.printf("sum %.2f%n", sum);
System.out.printf("average %.2f%n", avg);
}
}
От този код няма ли да ти принтира “min 1.00”? В sample output на задачата пише че трябва да е “min=1.00”, т.е. липсва равното
Видях и го коригирах с = но пак ми дава 0 точки.
Искаш ли да погледнеш моето решение?
import java.util.Scanner;
public class Main {
private static final String MIN_PRINT_TEMPLATE = "min=%.2f";
private static final String MAX_PRINT_TEMPLATE = "max=%.2f";
private static final String SUM_PRINT_TEMPLATE = "sum=%.2f";
private static final String AVERAGE_PRINT_TEMPLATE = "avg=%.2f";
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int number = Integer.parseInt(scanner.nextLine());
double[] numbersArray = new double[number];
for (int index = 0; index < number; index++) {
numbersArray[index] = Double.parseDouble(scanner.nextLine());
}
double minNumber = 1001;
for (int i = 0; i < numbersArray.length; i++) {
if (numbersArray[i] < minNumber) {
minNumber = numbersArray[i];
}
}
System.out.printf(MIN_PRINT_TEMPLATE, minNumber).println();
double maxNumber = -1001;
for (int i = 0; i < numbersArray.length; i++) {
if (numbersArray[i] > maxNumber) {
maxNumber = numbersArray[i];
}
}
System.out.printf(MAX_PRINT_TEMPLATE, maxNumber).println();
double sum = 0.0;
for (int i = 0; i < numbersArray.length; i++) {
sum += numbersArray[i];
}
System.out.printf(SUM_PRINT_TEMPLATE, sum).println();
System.out.printf(AVERAGE_PRINT_TEMPLATE, sum / number).println();
}
}
благодаря много