Below and Above Average Java Arrays

Здравейте,

Имам странен казус. Опитвам се да намеря average на масив. Ето кодът.

https://pastebin.com/JPWLwz8i

Когато принтя average - принтирам 0.0, а сумата ми е 8, а дължината на масива - 9 като се ползва примерния инпут:
3,-12,0,0,13,5,1,0,-2
Т.е. би трябвало да се случи делението и математиката, но не.

Имате ли идея защо може да е така?

здравей,
проблема е в 21 - промени с average=(double)sum/array.length
това е

Защо? Какъв е проблемът?

Аз декларирам оригинално average като double. Защо трябва да го каствам?

Здравейте :slight_smile:
Приемете един съвет. Винаги когато има някакво несътветствие може да дебъгнете и да видите разликите. Всеки тип данни имам своя специфика, не винаги е ясна на пръв поглед и винаги се проявява в неточния момент :smiley:

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

Успех, нинджи :wink:
Диди

1 Like

Здравей,
като делиш int на int, получаваш int, без значение какво си декларирал/а
(sum/counter)

можеш да го излъжеш, като подадеш double counter = array.length; и останалото го оставиш както си е.

Поздрави!

Благодаря на всички.

Диана, и аз се опитвах да дебъгвам и видях, че там се счупва. Ама като тотално неук си чешох по празната кратуна и се чудех защо не става.

Ама го оправих. Благодаря на всички за съдействието. Научих нещо ново! :slight_smile:

1 Like

Здравейте и от мен! Искам да помоля за помощ за оптимизиране на кода, judge не ми го приема на две от проверките. защото >0.300s
https://pastebin.com/VGn5KmAa
Благодаря :slight_smile:

Здравей,

Аз пуснах твоето решение през judge и проработи на 100%. Всички минават за под 0.300 секунди.

благодаря ти за отговора, пробвах втори път със същото решение, първия тест кейс пак мина над 0.300 и пробвах трети път със същото решение и мина 5/5 :smiley:

Здравейте,

И аз имам проблем с тази задача, това е кодът ми: https://pastebin.com/1XRUrqK3
На втория тест : 0,1,-1 за below ми излиза : 0,-1 а не трябва да има 0.
Бихте ли ми казали къде греша?

Благодаря :slight_smile:

1 Like

Здравей,

Преправи това:

else {
 below.add(numbers.get(i));
}

На това:

else if (numbers.get(i) < average) {
  below.add(numbers.get(i));
}

П.С. Можеш да ползваш за в бъдеще комбинацията от ctrl + alt + L в Intelij, което форматира автоматично кода, като оправя разстоянието между думите - много е полезно.

Поздрави,
Петър

1 Like

Супер, благодаря много :slight_smile:

Лека вечер!
ПОздрави,
Алесандра

Здравейте , Имам проблем с тази задача : BelowAndAboveAverage .
При вход 0,1,-1 → дава резултат: above: 1 , т.е. -1 го презкача и не влиза изобщо в цикъла. Ето кода ми: BelowAndAboveAverage - Pastebin.com
?

Здравей,

с този лууп не влизаш в последната стойност от array-а: for (int i = 0; i < input.length - 1; i++)
трябва да е for (int i = 0; i <= input.length - 1; i++) или for (int i = 0; i < input.length; i++)

Успех! :slight_smile:

imam problem sus Bellow and above average :

Submission Info

Status: Wrong Answer

Language: JavaScript

Points: 20

Time: 0.008 s

Memory: 7.78 MB

Date: 17/05/2023 15:54

Test cases

Test case #1: Wrong Answer [0.008 s, 7.78 MB]

Your output (clipped)

avg: 0.00
below: -1
above: 1

Test case #2: Accepted [0.008 s, 7.78 MB]

Your output (clipped)

avg: 0.00
below: -1
above: 1

Test case #3: Wrong Answer [0.008 s, 7.78 MB]

Your output (clipped)

avg: 0.00
below: -1
above: 1

Test case #4: Wrong Answer [0.007 s, 7.78 MB]

Your output (clipped)

avg: 0.00
below: -1
above: 1

Test case #5: Wrong Answer [0.008 s, 7.78 MB]

Your output (clipped)

avg: 0.00
below: -1
above: 1

Submitted code

let input = ‘0,1,-1’;

let print = this.print || console.log;
let gets = this.gets || ((arr, index) => () => arr[index++])(input.split(‘,’), 0);

let numbers = input.split(‘,’).map(Number);

let sum = 0;
for (let i = 0; i < numbers.length; i++) {
sum += numbers[i];
}
let average = sum / numbers.length;

let belowAverage = [];
let aboveAverage = [];

for (let i = 0; i < numbers.length; i++) {
if (numbers[i] < average) {
belowAverage.push(numbers[i]);
} else if (numbers[i] > average) {
aboveAverage.push(numbers[i]);
}
}

print(‘avg: ’ + average.toFixed(2));
print(‘below: ’ + belowAverage.join(’,’));
print(‘above: ’ + aboveAverage.join(’,'));