Loading...

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

bojankacarski avatar bojankacarski 19 Точки

[Homework] C# Basics - "Математика за програмисти" (Enthusiast)

Здравейте , относно задачите от това домашно , решил съм ги с код , надявам се не е грешно . Разбрах , че не беше нужно да се пише цял код а само отговорите , но имах свободно време и желание да го направя. Ако някой би искал да види решението в код да пише тук , ще ги пейстна в Pastebin и евентуално да го обсъдим с по нахъсаните - добре ли е или не е.

 

п.с. ето ги направо всички форматирани:

http://pastebin.com/76TTDmSm

http://pastebin.com/zEyM9KMT

 http://pastebin.com/j4k26UVa

http://pastebin.com/Q6y5DS3t

http://pastebin.com/wY6Ast04

 http://pastebin.com/3HaEVDp4

Тагове:
5
Programming Basics 19/01/2015 10:38:24
Viktor_Boyanov avatar Viktor_Boyanov 21 Точки

Искам да попитам(напълно начинаещ съм в С#) защо в решението на bojankacarski на 3ти проблем е нужно да се въвеждат 2 BigInteger - num и temp. Не може ли отдолу в цикъла да се използва "num" вместо "temp" и ще се получи: "num = num * x;" и по този начин няма нужда от втория BigInteger?

1
Kamigawa avatar Kamigawa 750 Точки

num се използва като горна граница на for loop-а и ако се променя стойността му ще повлияе на for loop-a - т.е. няма да се изпълнява желания брой пъти, ами повече или по-малко. Затова е използвана втора променлива - temp.

0
21/01/2015 16:14:54
bojankacarski avatar bojankacarski 19 Точки

Kamigawa всъщност Viktor_Boyanov е прав сложил съм излишен big integer - temp защото num не се променя през цялото време има x в for цикъла който се опитва да стане колкото нъм

 

п.с. благодаря на всеки който дава мнение , за да помогне както на мен така и на останалите заинтересовани , да си намирам грешките , които не са малко и са елементарни като гледам :)

1
21/01/2015 16:28:21
Kamigawa avatar Kamigawa 750 Точки

Не мога да се съглася (освен ако не ви разбирам погрешно идеята).Пробвах го(за да бъда не пиша наизуст) и никога не спира loop-a(погледнато реално ще спре като си препълни паметта де), понеже num се увеличава геометрично (заради умножението), докато x се увеличава аритметично(или там както се наричаше, заради събирането с 1).

1
21/01/2015 16:40:02
bojankacarski avatar bojankacarski 19 Точки

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

0
Kamigawa avatar Kamigawa 750 Точки

Мога да ти дам един съвет - поне в началото като се учиш се стреми да излиза вярно решението и кода да е правилно написан (имена на променливи, логически връзки и т.н.), без да те притеснява, че имаш 20 реда код „излишни“. Веднъж като схванеш основите на нещата и правиш гореспоменатото без проблем, тогава може да се притесняваш, че решението е 50 реда, а може да бъде 10.

2
bojankacarski avatar bojankacarski 19 Точки

прав си трябва да има последователност в ученето и мисля , че ако вървя по ред елементарно нещо като правилното именуване трябва да е едно от първите неща , които трябва да свикнем да правим

0
Viktor_Boyanov avatar Viktor_Boyanov 21 Точки

Имам още едно въпросче. Все още нямах възможността да се пробвам да подкарам какъвто и да е код, но доколкото знам като му дам да изпълни кода тогава задавам и параметрите. Съответно като задам, например, "num" да е 250(едно от числата, които търсим), тоагава и първоначалната стойност на "temp" ще бъде 250, следователно ако следваме логиката на цикъла получаваме следното(в числени стойности):

250 = 250 х 1, което е равно на 250

--> 250  = 250 х 2, което е равно на 500

--> 500 = 500 х 3 = 1500 и т.н., докато достигнем максималната стойност на i - 250.

Това, което не мога да разбера е как тази формула е равна на 250х249х248...х1? Според мен така ще получим доста по-голямо число от това, което търсим. Не трябва ли по-скоро да зададем първоначално "х" да е равно на 249, да намаля с 1-ца и по някакъв начин(не знам как :) ) да зададем на цикъла да спре да се изпълнява като "х" стане 1 и по този начин ще получим:

250 = 250 х 249 = 62 250

---> 62 250 = 62 250 х 248 = 15 438 000

---> 15 438 000 = 15 438 000 х 247 = .... и така докато стигнем до стойността на х да е 1?

 

0
bojankacarski avatar bojankacarski 19 Точки

Не мога да се ориентирам, но ако питаш за същата задача там "num" иска да му кажеш факториала на кое число да ти покаже , после в цикъла създаваме променлива "х=1" която всъщност циклим и увеличаваме с единица докато "х " не стане равно на "num" а при всяко увеличаване на "х" го омнужаваме по текущата стойност на "num" , с f10 дебъгваш ред по ред в визуал студио най-лесно ще го разбереш там ако не съм успял да ти обясня 

п.с. или най-добре изчакай лекцията с цикли и там ще ти стане още по-ясно как точно функционират.

1
21/01/2015 19:39:53
Viktor_Boyanov avatar Viktor_Boyanov 21 Точки

Прав си, с дебъг сигурно ще ми стане по-ясно, ако не ще чакам до лекцията :)

0
a_tifonoff avatar a_tifonoff 26 Точки

Абсолютно достатъчно е само temp да е Biginteger, за другите променливи int-а върши работа.  Другото е много добре.  А според мен е добре и отпечатването да излезе извън цикъла. Поне ще се виждат само цифрите на търсеното число.

 

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