Loading...
VladoGenov avatar VladoGenov 45 Точки

[Exercises] - Coding-101 - Simple Loops - Exercise 18 (Equal Pairs)

Здравейте, колеги!
Условието на задачата е: Дадени са 2*n числа. Първото и второто формират двойка, третото и четвъртото също и т.н. Всяка двойка има стойност – сумата от съставящите я числа. Напишете програма, която проверява дали всички двойки имат еднаква стойност или печата максималната разлика между две последователни двойки. Ако всички двойки имат еднаква стойност, отпечатайте "Yes, value=…" + стойността. В противен случай отпечатайте "No, maxdiff=…" + максималната разлика.
Имам проблем с Judge, дава ми 87 точки и в един от тестовете, очаква изход 88, а реалния изход трябва да е 145.
Сметнах го и ръчно, би трябвало макс. разлика да е 145, тъй като сумата на най-малката двойка е 0, а сумта на най-голямата е 145.
Ето и кода, който тествам (с печат на контролни суми): Code in Pastebin
Линка на задачата в Judge: Exercise 18  (Equal Pairs)
Проблема е само при този тест на Judg-а:
n=7
------
34
-33    sum=1
------
52
12    sum=64
------
-32
32    sum=0 (най-малката сума)
------
23
41    sum=64
------
7
25    sum=32
------
34
23    sum=57
------
124
21    sum=145 (най-голямата сума)
MaxDifferences=145-0=145 (а не 88 ???)

The user output text does not contain the expected output text.
Expected output: no maxdiff 88
Your output: no maxdiff 145
-------
Какъв може да е проблема? Аз ли бъркам някъде или в Judge-а този пример е зададен некоректно?
0
Programming Basics
IskrenPenev avatar IskrenPenev 177 Точки

Дадени са 2*n числа. Първото и второто формират двойка, третото и четвъртото също и т.н. Всяка двойка има стойност – сумата от съставящите я числа. Напишете програма, която проверява дали всички двойки имат еднаква стойност или печата максималната разлика между две последователни двойки.

Не си обърнал внимание на това в условието. Няма грешка в тестовете :P

Ето го моето решение http://pastebin.com/cePkyXRD

1
VladoGenov avatar VladoGenov 45 Точки

Благодаря, колега! 
Наистина относно разликата съм пропуснал да забележа в условието думата "последователни", което ообяснява проблема.
Аз съм решил по-сложният вариант smiley, който обаче се оказва, че не е в условието.

0
Daniel.Pavlov avatar Daniel.Pavlov 6 Точки

Здравей колега! Забелязох, че това решение не е правилно дори и Judge да го приема, тъй като трябва да се посочи сумата от всички двойки дали е равна, а не само на последните две двойки. При такъв вход примерно:

4
1
1
2
1
3
3
3
3

Изкарва изход:

Yes, value=6.00

Имаш ли някакви други идеи как да я оправим?

Благодаря :)

0
Daniel.Pavlov avatar Daniel.Pavlov 6 Точки

Здравей отново! Видях къде е проблема. На последния If трябва да е: 

if (maxDiff == 0 || n == 1){
    System.out.printf("Yes, value=%.2f", currSum);
}else {
    System.out.printf("No, maxdiff=%.2f", maxDiff);

Вместо 

if (prevSum == currSum || n == 1){
    System.out.printf("Yes, value=%.2f", currSum);
}else {
    System.out.printf("No, maxdiff=%.2f", maxDiff);
}
0
mnikolov96 avatar mnikolov96 0 Точки

Моля някой да погледне какви съм ги вършил?

Не ми се получават нещата !

https://pastebin.com/eUQkUSh7

0
TeMePyT avatar TeMePyT 142 Точки

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

int number1 = int.Parse(Console.ReadLine());
                int number2 = int.Parse(Console.ReadLine());
                int currentSum = number1 + number2;
                if (i == 0)
                {
                    prevSum = currentSum;
                    sum = currentSum;
                    
                }
                else
                {

на края на цикъла слагаш  prevSum = currentSum; за финал. (Снипета е от моето решение, за това променливите са различни)

0
19/03/2018 16:35:50
slpwlkr avatar slpwlkr 0 Точки

Здрасти!
Благодарности на IskrenPenev за решението! Много готина задачка, която определено ме затрудни с постоянната промяна на стойностите в променливите.
Ето и моето решение: https://pastebin.com/i3kZbpQY  

0
03/05/2018 15:54:17
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.