Loading...
dim4o avatar dim4o 288 Точки

[Домашно] Loops - цялото

Problem 1.       Numbers from 1 to N

Problem 2.       Numbers Not Divisible by 3 and 7

Problem 3.       Min, Max, Sum and Average of N Numbers

Problem 4.       Print a Deck of 52 Cards

Problem 5.       Calculate 1 + 1!/X + 2!/X2 + … + N!/XN

Problem 6.       Calculate N! / K!

Problem 7.       Calculate N! / (K! * (N-K)!)

Problem 8.       Catalan Numbers

Problem 8.       Catalan Numbers

Problem 9.       Matrix of Numbers

Problem 10.       Odd and Even Product

Problem 11.       Random Numbers in Given Range

Problem 12.       * Randomize the Numbers 1…N

Problem 13.       Binary to Decimal Number

Problem 14.       Decimal to Binary Number

Problem 15.       Hexadecimal to Decimal Number

Problem 16.       Decimal to Hexadecimal Number

Problem 17.       * Calculate GCD

Problem 17.       * Calculate GCD

Problem 18.       * Trailing Zeroes in N!

Problem 19.       ** Spiral Matrix

Catalan Numbers съм я решил по 2 начина, но единия работи само до N=30, защото не използва BigInteger. Реших, че ще е интересно да се направи оптимизация, така че да се изстиска максимума от примитивните типове променливи. Евентуално може да се направи да работи и до N=36 ако се подобри алгоритъма още малко; Идеята е още когато въртим в цикъл да съкращаваме това, което можем, а не да изчисляваме просто първо числителя после знаменателя и накрая да делим.

28
zontak avatar zontak 457 Точки

dim4o, задача 10 от твоето домашно нещо ми се струва грешничка малко ;д Ти там ако не се бъркам делиш всяко едно число на 2.. и случайно ако не се дели го слагаш към нечетните ;д Аз мисля,че в задачата се иска четни и нечетни в реда в които са написани.. а не да разбираш дали всяко едно число е четно ;д ако е написано 2 1 1 6 3 умножаваш 2 * 1 * 3 = 6.. и 1 * 6 = 6.. което ги прави равни.В твоята задачка всяко число се дели на 2.. :) Оправи я малко или ме поправете мен ако бъркам.. :)

2
dim4o avatar dim4o 288 Точки

Не мисля, че греша. Аз не деля числото на нищо, а просто проверявам дали индекса на масива се дели на 2. Ако се дели на 2 или самия индек се 0, позицията на числото е нечетна, а иначе е четна, т.е. позициите с индекси 0, 2, 4, ... са нечетни, а тези с индекси 1, 3, 5,.. са четни. Логиката е правилна, а и кода си работи с правилно с всички редици, които пробвах. Ти се бършаш, защото си мислиш, че деля числата, а то не е изобщо така.

3
zontak avatar zontak 457 Точки

Да.. прав си .. моя е грешката.. видях го после но нямах време да драсна.. занимават ме с глупости ;д

1
dim4o avatar dim4o 288 Точки

И аз имам много разсейващи фактори и наистина не е изключено да съм сгафил нещо. Сега гледам, че това || index == 0 е излишно. Пуснах тук задачите с надеждата, че ще излезят бъгове, които не мога да видя сам.

0
zdgeorgiev avatar zdgeorgiev 57 Точки

Относно задача 14 - нужно е да принтираш стринга отзад напред, за да е коректен изходът ;)

Поздрави :)

0
zontak avatar zontak 457 Точки

dim4o.. аз пак до теб опрях.. ;д гледам задачка 16.. но изкарва отговорите на обратно.. Трябва някъде в края да сложиш едно revers-че .. :))

2
zdgeorgiev avatar zdgeorgiev 57 Точки

За задача 16 - отново същия проблем като 14-та (нужно е да се принтира изхода на обратно). При switch case-овете не е нужно да добавяш натрупания до момент string. 

 case 10: hexNumber += "A" + hexNumber(излишно е); break;

И последно - цикъла е нужно да върти докато числото е различно от 0.

Cheers man :)

2
zontak avatar zontak 457 Точки

Без това +hexNumber  ще го изкарва в обратен ред.. но с него би трябвало да ги разменя.. Сега си играя с дебъгера да видя защо го прави..

 

Едит: .. Махаш тези дето каза колегата.. +hexNumber и отдолу слагаш един цикъл които да ги завърти.. така при мен се получи ;)

2
dim4o avatar dim4o 288 Точки

zdgeorgiev, oтносно Problem 14 :

не мога да разбера какво имаш впредвит. Кода си работи коректно. Примерно:

236476736
1110000110000101100101000000
Press any key to continue . . .

Това си е с коректен изход. binNumber = remain + binNumber; Той все едно казва: "Постави най-старшия разряд най-отпред" - както и трябва да бъде. Затова и изхода е коректен, а не обърнат.

zontak, zdgeorgiev, относно Problem 16:

Благодаря, че обърнахте внимание, защото изхода наистина не е коректен. Там проблема е, че съм копирал стар код. Просто навсякъде, където има "+=" трябва да се замести само с "=" и кода си работи правилно - пробвайте. Сега се сещам, че бях сложил "+" да тествам нещо. Но пак казвам, че няма никаква причина написан така кода да изкарва резултат в обратен ред. Логиката е като при задача 14. Да, сега забелязвам, че не съм обработил случая с вход 0. Ще го оправя. Благодаря за коментарите ! :)

4
dim4o avatar dim4o 288 Точки

zdgeorgiev, логиката в случая case 10: hexNumber = "A" + hexNumber; break; е различна. hexNumber ="A"+ hexNumber; дава различен резултат от hexNumber +="A"; Аз нарочно съм гонил това. Освен това while ( decNumber> 0) и while (decNumber != 0) в случая дават еднакъв резултат

1
zdgeorgiev avatar zdgeorgiev 57 Точки

dim4o, прав си наистина! Грешката при мен, от която идва нуждата да принтирам стринга на обратно е свързана с това, че го пълня по следния начин : binaryNumber += remainder(14-та задача). 

Относно 16-та задача - same story! 

Благодаря за забележките, наистина бяха от полза. Cheers man :)

1
MomchilDishev avatar MomchilDishev 20 Точки

 7-ма задача не работи при n=99 и k=98.

Прилагам решение с един цикъл. Задача 7.

2
MomchilDishev avatar MomchilDishev 20 Точки

ЗДРАСТИ! КОЛЕГА, АЛГОРИТЪМъТ на зад.17 не работи ако второто 4исло е по-голямо от първото.

-1
aska93 avatar aska93 8 Точки

Много добри решения! Много ми помогнаха! Благодаря, че си ги споделил :))

1
ipandeliev avatar ipandeliev 0 Точки

dim4o  при 8-ма задача една малка корекция за да работи при n=0 втория ред е:

if (num >= 0 && num < 31)

добавил съм само едно = преди нулата.

0
The.wolf1985 avatar The.wolf1985 0 Точки

Здравейте! На мене ли ми се струва или става все по-трудно. Явно трябва да си доста умен да схващаш всички тези цикли, масиви и т.н.

0
07/04/2016 19:23:54
Vacheva avatar Vacheva 154 Точки

 

 

 

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