Operators and Expressions Homework 2015


17

Ето моя вариант на домашното.

С този материал вече се влиза малко по-надълбоко, затова ми е интересно как сте подходили към проблемите. :)




Отговори



17
Тук е моят вариант.

от mihaylov (409 точки)


0

Колега на 10та задача някой от инпутите са грешни. Пробвай тази формула за да видиш дали е в кръга :)

 Math.Sqrt((x - 1) * (x - 1)) + ((y - 1) * (y - 1)) <= 1.5;


от NorthMania (97 точки)

0

За 7-мацата направо ме разби тази задача.

Добре че ти си направил така разбираемо , аз го правих без + накрая в скобите, ами със запетая и се чудех що не показва true или false , а и така и не разбрах каква е причината , докато не видях твоето решение днес, че е без запетая. 

Може ли да ми дадеш отговор за това каква е разликата мерси.





6

от topalkata (6442 точки)


2

Здрасти Митко,

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

Успех!



0

Здравей колега,

би ли погледнал решението на задача 3, за делене на 5 и 7.

При зададено число =0, трябва да връща резултат "false".

Успех


от Stelamat (25 точки)



2

Ето и моите решения: Тук

Успех колеги!


от tddold (429 точки)


1
Ето и от мен. До тук успях да стигна.  Ще продължа да мъча последните 2. Имам въпрос за Rectangles. Защо не иска да ми принтира квадрата на площта? И също каква е разликата дали ще напиша :N2 или :F2 когато задавам колко цифри след запетайката да се принтът защото и с двете се получава?

от radd_ko (90 точки)


2

Здравей!

  • Квадратът на площта се принтира перфектно, трябва да си сетнеш конзолата да ти принтира с unicode font, например Lucida Console.
  • Разликата между двете е, че :N2 ще принтира и group separator ',': 123,123.123

от lnikod4s (6538 точки)

0
Ясно. Благодаря. :)

от radd_ko (90 точки)


9

от BoyanTodorov (853 точки)


1
Браво, направо много ме радват точните ти решения с Математиката, която е тоооолкова далечна за мен. Гледах че на повечето в задачата Делимо ли е на 5 и 7 - при зададена 0 отговор е грешен /че е делимо/, при теб е точно както трябва, за което благодаря, много елегантно!

от maryakach (47 точки)

1
Поздравления за решението на 10та задача! Не ми се искаше да гледам чужди решения, но крайният срок е днес и ми се наложи. Много добре измислено.

от todor.voinov (185 точки)



1

Здравейте, 

Това е моето  домашно , без последната задачка




0
Колега, 6 задача може ли така да се реши? Не трябва ли да се вкара цялото число от един вход, а не така по отделно за a, b, c и d? 

от v.todorov (41 точки)

0
Колега, оправи си 6-та задача наистина докато имаш време пак да пратиш домашното. Това е грешно решение. Трябва да се въведе едно 4 цифрено число, а не 4 числа. Успех :)

от dmihalev (17 точки)


1

Ето и моето.

Последната задачка нищо не ми говори. Ако някой може да я обясни, ще е супер. :)


от apomarinov (378 точки)


7

ТУК мисля, че e лесно за разбиране решението.

Четеш число от конзолата.

След това прочиташ още две числа, които са началните позиции на групите от битове, които ще размениш.

На последния ред четеш броя на битове във всяка група.

СЛед като имаш всички входни данни, просто започваш да ходиш едновременно от 2те стартови позиции, например 3 и 10, след това 4 и 11 и т.н. и в случай, че битовете са различни, просто ги XOR-ваш с маска.

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

  p - first start position

  q - second start position

  k - length

 111 in binary is 1101111

 if p=3, q=10, k=3, we exchange 3 with 10, 4 with 11 and 5 with 12
 we get 1010001000111 or 5191 in dec


 |12|11|10|09|08|07|06|05|04|03|02|01|00|
 ----------------------------------------
 | 0| 0| 0| 0| 0| 0| 1| 1| 0| 1| 1| 1| 1|  111
 | 1| 0| 1| 0| 0| 0| 1| 0| 0| 0| 1| 1| 1|  5191


от dentia (12519 точки)

2
Благодаря за отговора :) Реално ми изглежда като предната задача, но леко автоматизирана?

от apomarinov (378 точки)



1
Здравейте ! Ето и моят : Линк



2

от ageorgiev (552 точки)


2

какво точно означава това което се ползва като израз в послените две задачи:

for (int i = 3, j = 24; i < 6; i++, j++)

if (((number >> i) & 1) != ((number >> j) & 1))

и по-конкретно защо местим number с i позиции, какво ни дава това?




2

Накратко:

1 << n returns 2n

x >> n is equal to x / 2n


от lnikod4s (6538 точки)

7

Разглежда се числото в двоична бройна система.

Ще използвам 94 като пример, което в дв. бр. с-ма изглежда като 01011110.

Ако искаме да разберем какъв е 3-я му бит (който се явява 4-ти от дясно на ляво),

го преместваме с 3 позиции надясно (number>>3), което ще изглежда така (01011),

след което с побитово И (&) проверяваме дали (0-ят бит е 1) - сиреч правим маска.

(number>>3)&1 ще ни върне 1, ако битът е 1 и 0 - ако е 0.

Тъй като ние реално не им променяме местата, а променяме самия бит с XOR(^),

трябва да разберем дали битовете на двете позиции, които искаме да разменим

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

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


от dentia (12519 точки)