Homework - Using Classes and Objects - 2015


6

Дойде времето на лекциите за методи и бройни системи. Като eстествено продължение следва да се отвори и дискусия за класове и обекти. Споделям моите решения ТУК. Изключително любопитни са ми другите решения на Shunting-yard и обратния полски запис. :)


в C# Advanced от dentia (12519 точки)


Отговори



1
Тук са и моите решения :) 

Arithmetical expressions - задача като за изпит..




1
Да си призная, ако я имам на изпит, няма да ми остане много време за другите, но определено ми е любимата задача от целия курс. :)

от dentia (12519 точки)

1
Ако питаш мен, само Tron 3D да дадат, мисля, че ще е достатъчна за целия изпит C#2. :D

от lnikod4s (6538 точки)



1
Тук са и моите решения. И аз доста си поиграх с последната задача ...

от ageorgiev (552 точки)


3
Ето решения и от мен. :)

от lnikod4s (6538 точки)


0

Колега, една лека забележка относно задача 3. При изчисляване лице на триъгълник при дадени две страни и ъгъл между тях, указваш на потребителя да въведе ъгълът в гради

Console.Write("Enter a real number for the angle between two sides in grad: ");

Методът Math.Sin работи само в радиани, т.е. всякакви други входни данни(в гради или градуси) трябва да се прехвърлят преди това в радиани, за да даде правилен резултат. 

В твоят случай, при примерни входни данни: страна а=3, страна b=4 и ъгъл 100 гради, дава отговор -3,04(трябва да е 6), което е некоректно. Преди това трябва да прехвърлиш градите в радиани, например по формулката 1 radian [rad] = 63.6619772367581 grad [g].

Иначе задачите ти са хубави, за което те поздравявам. Всъщност, няколкото решения, които прегледах масово пляскат директно стойността на ъгъла в Math.Sin, предполагам, не си дават сметка за тази особеност, и така резултатите са изчислени на база ъгълът зададен в радиани. Други конвертират от градуси в радиани, но не указват на потребителя какво да въвежда, и ако той тръгне да въвежда директно в радиани...мазало. Но понеже ти конкретизираш ъгълът да се зададе в гради(което е много добра идея), първо трябва да ги конвертираш. В моето решение искам ъгълът да се въвежда в градуси, после го конвертирам в радиани.


от MarinMarinov (912 точки)


1
Ето и моите решения на задачите. :)

от baretata (934 точки)


1
Ето нещо и от мен. "Arithmetical expressions" може да се оптимизира като код, ама за сега толкова.

от Boray (666 точки)


1

Едно домашно и от мен ТУК със всичките задачи.

Arithmetical expressions-a го правих по лекцията на Ивайло,иначе не виждам как бих могъл да се справя сам.

Другите са лесни като цяло,особено 6-та.


от IvayloAndonov (1994 точки)


0
Коя лекция на Ивайло по - точно, става ли да сложиш един линк.

от mihaylov (409 точки)

2
Предполагам, че става дума за ТОВА видео. :)

от dentia (12519 точки)



5

Ето едно решение на Arithmetical expressions на около 40 реда: source

Идеята е след като потребителя въведе израза, динамично да се компилира код, който съдържа този израз, и от него да се инстанцира обект, който връща пресметнатия резултат. Все едно, ако искате да сметнете колко е (1+1), може да напишете програма с метод, който връща 1 + 1 (буквално "return 1 + 1;"). Само че, не можете да напишете такава програма, защото не знаете предварително какъв израз трябва да сметнете. Затова я създавате runtime и може да й подадете произволен израз :)


от neutrino (3376 точки)


1
Хаха, готино! :)

от dentia (12519 точки)

0

До някъде почти разбрах кода :), само не са ми ясни как действат нещата е Evaluate метода, но е много хитро. То на практика като заместиш математическите изрази със съответните Math.функции си прави нова програмка, която директно го изчислява и връща резултата в текущата или съвсем не съм разбрал :) 

Дано някой ден да мога да го осмисля :)

Браво!!


от ivo.paunov (991 точки)


0

от topalkata (6442 точки)


0
Решения - от първа до шеста задача.



0
Добавям и моите ТУК.

от ilian82 (568 точки)