Професионална програма
Loading...
+ Нов въпрос
VanessaShopping avatar VanessaShopping 48 Точки

Homework Simple Loops - Problem 18 Equal Pairs

Здравейте

Нещо зациклих с тая задача. Пробвах доста вариянти. Смятам ,че грешката ми е малка , но нещо не мога да я видя :). в Джъджа ми дава 62 точки.

Ето го кода http://pastebin.com/f4Kvbx0P . Моля за малко помощ :)

Тагове:
0
Programming Basics
petar.dimitrov.86 avatar petar.dimitrov.86 450 Точки
Best Answer

Здравей, по начина по който си въвел previousSum той си остава постоянно константа във for цикъла. Първоначално трябва да се вкара само n и вече чак през цикъла да се въртят другите променливи.

П.П. 

Давам ти още малко подсказки, и ако не успееш да се справиш пускам начина, по който би трябвало да изглежда кода, но го погледни чак когато се предадеш напълно. Значи за maxDiff не е нужно да е int.MinValue, тъй като разликата няма как да е отрицателна. A currentDiff може спокойно да почне от 1 тъй като това е минималната стойност, която може да се покаже като разлика. Също така в if-а трябва да помислиш какво ще стане ако има само една стъпка във for цикъла, т.е. можеш в if-a да вкараш, че i>=2 (за да се провери if-a само ако се появи допълнителен чифт за сравняване)

http://pastebin.com/EgGg4wbH

2
16/02/2016 20:32:58
VanessaShopping avatar VanessaShopping 48 Точки

Благодаря много за помоща. Получи се :) Видях си грешките .

Реално се чудех как да запиша предишната сума от а и б в отделна променлива и затова в началото на кода след въвеждане на Н , се въвеждаше А и Б и след това се сумираха в previousSum.

Идеята ми беше --> Въвеждам N, след това А и Б като ги сумирам в отделна променлива. После в цикъла зададох i да почва от 1 и да достига N - 1 , понеже вече съм въвел първата двойка в началото. Заблудих се от това ,че като писах кода в самото начало след цикъла сложих един Console.WriteLine който ми принтира А и видях ,че се е променила. От там ми тръгна заблудата ,че след всяко въртене на цикъла в горната променлива previousSum ще се промени стойноста, което е доста глупаво от моя страна понеже това реално няма как да стане :) . Задачата ми се получи след като ВЪТРЕ в цикъла зададох стойноста на currentSum да се запиша в previousSum и така вече сметките ми станаха точни :)

0
16/02/2016 21:05:45
petar.dimitrov.86 avatar petar.dimitrov.86 450 Точки

Да, тая част за това каква стойност да се даде на една от сумите е малко врътлива и по-нестандартно се стига до тая логика. Особено ако е въведен само един чифт, и не се знае другата сума какви стойности приема. Ти вкара ли в if-a ( && i>=2) или по друг начин отдели случая, в който се вкарва само един чифт? Може да пуснеш пак финалния код направо да видя как изглежда финалното решение. 

1
VanessaShopping avatar VanessaShopping 48 Точки

Кода  стана точно като твоя. Добавих в if-а (&& i > 1) . Там стана магията ,ако има само една двойка. То точно заради това в джъджа винаги ми  излизаше "No diff = " , понеже в if-a първото условие ,за да се изпълни , е currentDiff > maxDiff , а currentDiff винаги ще е по-голямо :) и по тоя начин maxDiff като приеме стойноста на  currentDiff , maxDiff никога няма да е == 0 .

0
GeorgiGG avatar GeorgiGG 6 Точки

Реших по-подобен начин моята задача, но пробвах (неуспешно) да направя въвеждането на двойките числа с още един for, вложен в първия. Възможно ли е това да стане? Проблема, който срещнах, е че currentPairSum (При мен това е сумата от всяка двойка числа) ми се натрупа с всяко ново въвеждане.

0
petar.dimitrov.86 avatar petar.dimitrov.86 450 Точки

Качи си кода в pastebin.com да може да погледнем къде се объркват нещата

0