Здравейте! Имам проблем с тази задача, във vs code работи коректно, но при срещата с джъдж е тотал щета, според мен не имплементирам правилно входните данни, които трябва да получа в кода, когато я променям на синтаксиса на джъдж. Ако някой има решение на задачата, ще съм благодарен да го сподели, за да го видя и да разбера, къде бъркам. Ето условието:
Min Max Sum Average
Description
Write a program that reads from the console a sequence of N real numbers and returns the minimal , the maximal number, the sum and the average of all numbers (displayed with 2 digits after the decimal point).
The input starts by the number N (alone in a line) followed by N lines, each holding an real number.
The output is like in the examples below.
Input
On the first line, you will receive the number N .
On each of the next N lines, you will receive a single real number.
Output
You output must always consist of exactly 4 lines - the minimal element on the first line, the maximal on the second, the sum on the third and the average on the fourth, in the following format:
Здравей!
Конкретно в тази задача е указано, че входните числа ще са между -10 000 и 10 000.
Т.е. всяко въведено ще е по-голямо от -10 001, респ. - по-малко от 10 001. Затова първоначално са инициализирани като най-голямо и най-малко
Ако нямах такава информация, щях да ползвам Double.MAX_VALUE и Double.MIN_VALUE.
Поздрави!
Ясно, че е оказано, че числата са в определен рейндж, само не разбирам защо, когато търсим от подадените числа най-голямото и най-малкото ги сравняваме с този рейндж, на минимално и оптимално число?
Искаме да определим от въведените числа, кое е най-голямото, за да го запишем в max променливата, и кое е най-малкото, за да го запишем в min променливата. По-късно ги принтираме
int lines = scanner.nextInt();
double average = 0;
double sum = 0;
double max = -10000;
double min = 10000;
for (int i = 0; i < lines; i++) {
double temp = scanner.nextDouble();
average = average + temp;
sum = sum + temp;
if (max < temp) {
max = temp;
}
if (min > temp) {
min = temp;
}
}
average = average/lines;
System.out.printf("min= %.2f %n",min);
System.out.printf("max= %.2f %n",max);
System.out.printf("sum= %.2f %n", sum);
System.out.printf("avg= %.2f",(average));
import java.text.DecimalFormat;
import java.util.Scanner;
public class MinMaxSumAverage {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int lines = scanner.nextInt();
double average = 0;
double sum = 0;
double max = -10001;
double min = 10001;
for (int i = 0; i < lines; i++) {
double temp = scanner.nextDouble();
sum = sum + temp;
if (max < temp) {
max = temp;
}
if (min > temp) {
min = temp;
}
}
average = sum / lines;
System.out.printf("min=%.2f %n",min);
System.out.printf("max=%.2f %n",max);
System.out.printf("sum=%.2f %n", sum);
System.out.printf("avg=%.2f %n",(average));
}
}
Кодът ти работи чудесно с малките промени, които описах.
Много благодаря да помощта, в действителност бях пропуснал двете - дефиниция за класа import java.text.DecimalFormat; както и коректното дефиниране на ограниченията за стойностите на min и мах (не 10000 а 10001)
Поздрави