Loading...

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

yana_neykova avatar yana_neykova 3 Точки

Simple loops - Odd and even sum

Здравейте, може ли малко помощ с една от задачите от лекцията за цикли - четна/нечетна сума.

Като си напиша кода тръгва във VBA, не дава грешки, но накрая не изписва резулата (

Yes

Sum = 70, съответно - No;  Diff = 1.

 

Ето го и кода, който ползвам : http://pastebin.com/eqSKmuCx . 

Благодаря предварително! :)

Тагове:
0
Programming Basics
ThePSXHive avatar ThePSXHive 436 Точки

Не разбрах защо условието в цикъла е

i <= ( 2*n - 1)

Принципно цикълът трябва да се изпълнява до n. Като изключим (поправим) това, дясната част от тези проверки е излишна

else if (i % 2 != 0)// #1
else if (evenSum != oddSum)// #2

Замени ги единствено с else. Понякога не се получават точки в Judge защото изходът на програмата не е оформен стриктно по някакви изисквания. Прегледай отново условието и по-специално частта с текста, придружаващ финалния резултат, защото аз получавам 100/100 при това извеждане на резултатът:

if (evenSum == oddSum)
{
    Console.WriteLine("Yes Sum = {0}", evenSum);
}
else 
{
    Console.WriteLine("No Diff = {0}", diff);
}

но е възможно ситуацията да е по-гъвкава и да не се налага точно това оформление. Не разполагам с условието в момента, но останалата част от кода е наред.

0
21/02/2017 08:06:00
maleksieva avatar maleksieva 0 Точки

Здравейте, имам проблем със същата задача -условието е: 

Да се напише програма, която чете n-на брой цели числа, подадени от потребителя, и проверява дали сумата от числата на четни позиции е равна на сумата на числата на нечетни позиции. При равенство да се отпечата "Yes" + сумата; иначе да се отпечата "No" + разликата. Разликата се изчислява по абсолютна стойност. Примери:

вход

изход

коментар

 

вход

изход

коментар

 

вход

изход

коментар

4

10

50

60

20

Yes

Sum = 70

10+60 = 50+20 = 70

4

3

5

1

-2

No

Diff = 1

3+1 ≠ 5-2

Diff =
|4-3| = 1

3

5

8

1

No

Diff = 2

5+1 ≠ 8

Diff =
|6-8| = 2

 

Кода ми е следния: https://pastebin.com/RtAz8PHi

Но конзолата ми връща следния отговор за първия пример: 

4

10

No, max diff = 10

PP.Моля да ми кажете и как ога даоценявам вашата помощ (виждам, че има точковастема, но не мога да разбера как да я ползвам)?

0
svetlio_b1 avatar svetlio_b1 2 Точки

Направи цикъла от 0 до < n и мисля, че ще се оправи.

0
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

така значи няколко неща едно по едно.

Първо точковата система в judge е автоматична,ако преминеш през всичките проверки с кода си получаваш 100 точки. Иначе ако само частично успееш ще вземеш процент от точките и ще ти покаже при кои тестове грешиш.Това са примерни тестове с числа или поредица от символи тестващи кода.

Сега за твоето решение,значи колегата е прав направила цикъла си грешно. както си го направила. При примерен вход от 4 числа.

 Става for(int i=1;i<n;i++) 1 въртене  i=2 2ро въртене i=3 и цикъла ти спира.

Ще попиташ защо но така си го направила с i++ показваш на компилатора да увеличи i+1 след като  направи завъртането. Затова променяш първо  i=0  и i<n и сега завъртаме на ново твоя цикъл с 4 примерни числа. 1во завъртане i=0  число 10 2ro завъртане i=1 число =50 3то завъртане i=2 число =60 4то завъртане i=3<n тук цикъла ти спира i=3 числото =20 и проверяваме числата ти 10+60 равно на =20+ 50  в случая това е така и пишеш "yes" и сумата =70.

 

0
19/06/2017 13:09:16
maleksieva avatar maleksieva 0 Точки

Здравейте, промених кода, но отново имам същия проблем.Май нещо не схващам :(

https://pastebin.com/sDcS6h8G

0
ThePSXHive avatar ThePSXHive 436 Точки

Здравейте,

 

Малко по-късно отговарям, но коригираният код може да намерите на този линк. Колегите по-горе са прави за контролната променлива в цикъла; когато условието в цикъла е

i < n

то тогава проверката е строга. Както в математиката, това означава, че цикълът ще приключи изпълнението си при стойност n - 1 на контролната променлива i, защото строгата проверка изключва крайната стойност (n) в десен интервал. За да коригирате условието в цикъла при начална стойност на контролната променлива i = 1, трябва да итерирате до n (т.е. нестрого условие i <= n). Но това не е основната грешка в кода. Забележете къде извършвате сравнението - в цикъла! Тази проверка трябва да бъде извършена извън него. Най-напред сумирате стойностите на четните и нечетните позиции, и едва след това - извън цикъла - намирате разликата на сумите и сравнявате резултатите.

0
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

Кода ти е наред просто смени i с num проверката ... защото в момента примерно имаш n= 4  тоест падават ти 4 числа ти проверяваш 0 1 2 3 дали са четни или нечетни тоест номера на цикъла си.А числото което ти подават го взимаш и не правиш нищо с него. Объркала си просто на коя променлива да правиш проверка. И да затвори цъкала преди да проверяш двете семи на телефона не го видях добре но колегата е прав последната проверка за изписване на резултата се прави извън цикъла като имаш крайните стойности.Но и това е лесно въпрос на преместване на една }   скоба

0
22/06/2017 13:27:31
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки
Колега хубаво дълъг коментар и примерен код но тя да проверява и няма смисъл.. Трябва да си провери num които влиза... то иначе i винаги е 0=i
0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.