Loading...
mzografski avatar mzografski 189 Точки

Problem 1.       Odd or Even Integers
Problem 2.       Gravitation on the Moon
Problem 3.       Divide by 7 and 5
Problem 4.       Rectangles
Problem 5.       Tird Digit is 7?
Problem 6.       Four-digit Number
Problem 7.       Point in a Circle
Problem 8.       Prime Number Check
Problem 9.       Trapezoids
Problem 10.     Point Inside a Circle & Outside of a Rectangle
Problem 11.     Bitwise: Extract Bit #3
Problem 12.     Extract Bit from Integer
Problem 13.     Check a Bit at Given Position
Problem 14.     Modify a Bit at Given Position
Problem 15.    To Be Done.
Problem 16.     To Be Done.

2
Plami avatar Plami 373 Точки

В 3 задача в примерите в условието мисля, че има малка грешка във втория пример. При деление на 0 с 7 или с 5 не трябва ли да даде резултат true?

2
TodorovH avatar TodorovH 216 Точки

И аз тъкмо това се чудя в момента!!! Изкарва ми истина по начина по който съм направил програмата! Сравних кодовете на няколко колеги и при тях дава истина!

Дали не трябва да напишем нулата по подразбиране да изписва лъжа като се въведе за начална стойност?!

1
Plami avatar Plami 373 Точки

Може. Но мисля, че и така е вярно - нали 0 може да се дели на нещо, доколкото си спомням от математиката :D

1
ivailozd avatar ivailozd 75 Точки

И ние решихме 16-та задача - двама напълно начинаещи. Ето тук.

Направихме цикъл, с който да смятаме подходящата маска за да решим задачата като 15-та. После слагаме разни иф-ове и една булева за проверки за out of range и overslapping и се получава.

2
IvanStoyanov avatar IvanStoyanov 68 Точки

Може ли някой да ми обясни решението на задача 5, защото не го разбирам? :)

0
TodorovH avatar TodorovH 216 Точки

В задачата се иска да проверим дали в дадето число, третата цифра считано от дясно на ляво е 7!

Да разгледаме числото 4321, че е по-лесно за обяснение! Както знаем от математиката от дясно на ляво цифрите са 1-единици, 2-десетици, 3-стотици, 4-хилядни и така нататък, или числото може да се разбие на 4000 + 300 + 20 + 1, като позициите може да се опишат още като 4х1000, 3х100, 2х10 и 1! За да вземем дадено число от дадена позиция трябва да разделим с остатък и така, за да получим 1 или числото което е на позициятат на единиците трябва да разделим на 10 с остатък, ще се получи 1! За да вземем десетиците трябва да разделим първо на десет без остатък, за да отпаднат единиците и след това на десет с остатък, за да вземем числото, което е било на позицията на десетиците, и така другите се взимат на същия принцип! След като сме взели числото, което е на трета позиция, или стотиците правим проверка дали е равно на 7 или не с булев израз!

Тук може да се приложи принципа на преместване с определен брой позиции наляво или надясно както при битовите операции, само че за преместване на ляво се умножава по десет на някаква степен в зависимост от исканата позиция, а за преместване надясно се разделя на десет пак на степен!

Дано съм ти бил полезен! Ако има нещо неясно питай!

6
IvanStoyanov avatar IvanStoyanov 68 Точки

Благодаря, разбрах го. Примерно, ако трябва да проверим 4-тото число дали е 7, първо на 1000 и след това на 100 да разделим.

0
TodorovH avatar TodorovH 216 Точки

Ако искаш да вземеш 4-тата позиция на числото 4321 да речем, делиш първо на 1000 - получава се 4, тъй като деленето е целочислено, тоест отпада дробната част, която е 321 в случая, и още един път го делиш на 10 с остатък, тук ще остане остатъка и той ти е 4! За четирицифрено число може и да отпадне деленето на 10 с остатък, но ако е за n-числено число ще покаже грешно!

1
micev avatar micev 59 Точки

Fundamentalen вапреки, че решението ти на задача 8 дава точния резултат ,не виждам смисал в това да делиш числото на всичките тези числа. Необходимо е да го разделиш от 2 до sqrt(числото).

ето и моя пример : 

using System;
class Program
{
static void Main(string[] args)
{
Console.Write("enter number 0-100 : ");
int number = int.Parse(Console.ReadLine());
int div = 2;
int maxDiv = (int) Math.Sqrt(number);
bool prime = true;
while (prime && (div <= maxDiv)) {
if (number % div == 0) {
prime = false;
}
div++;
}

if(prime==true)
Console.WriteLine("{0} is Prime",number);
else
Console.WriteLine("{0} is not Prime",number);

}
}

Малко уточнение как работи програмата, давам пример с по-голямо просто число да разберете смисала 

Нека number = 71 което е просто и неговия sqrt(71)= 8

Почваме да делим 71 от 2 до 8. while цикала спира когато 71 е разделило всичките цифри от 2 до 8 или ако prime получи стоиност false, а това може да стане ако остатъка на делението между 71 и цифрите от( 2 до 8 ) == 0.

След като цикъла е прикючил проверяваме prime и отпечатваме резултата.

Надявам се да сам бил полезен :)

0
beBoss avatar beBoss 507 Точки

Програмата ти дава, че 1, -3 и 0 са prime - а това е грешно ;)

1
Mart1n_Vatev avatar Mart1n_Vatev 5 Точки

Ето и от мен максимално съкратени решения на  15* и 16* задача!

 

 

0
hristo.dimitrov avatar hristo.dimitrov 8 Точки

имам въпрос, моля помогнете. 

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

но на 16 дори не мога да разбера условието. какво означава: 

exchanges bits {p, p+1, …, p+k-1} with bits {q, q+1, …, q+k-1}
кои битове трябва да подменя и колко параметри се въвеждат от конзолата- 2 (p i k) или 3 (p, k и q)? 
0
beBoss avatar beBoss 507 Точки

Трябва да въведеш 4 параметъра. 

n - числото

p - тези битовете ще бъдат разменени с битовете на q

q - тези битовете ще бъдат разменени с битовете на p

k - колко бита ще се разменят

 

т.е. p и q ще си разменят битовете.

 

Пример: 

n p q k
2369124121 2 22 10

  

Ше се разменят 10 бита с позиции 2 и 22, на числото 2369124121

3
hristo.dimitrov avatar hristo.dimitrov 8 Точки

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


2 и 22, 3 и 23, 4 и 24.... до 11 и 31 включително, така ли? :)

0
beBoss avatar beBoss 507 Точки

В конкретния пример:

10001101 00110101 11110111 00011001

 

Почваш от вторият бит (битовете се броят от 0 и от дясно наляво) броиш 10 бита и ги разменяш с битовете от позиция 22 пак с 10 бита cool

И да образно казано точно това, което си написал 2 - 22, 3 - 23 tongue-out

3
ivelin_m avatar ivelin_m 0 Точки

Здравей!Може ли да ми обясниш решението си на 11-та задача, че нищо не схванах.

0
ViValDam avatar ViValDam 15 Точки

Без значение кой битове - задаваш винаги 2 бита - първи и втори 

например ако зададеш 3 и 8

почваш да ги разменяш така :

Стойността на 3-ти със стойността на 8 после

стойността на 4 със стойността на 9 -я

5 - 10

6 -11

7 -12 

докато стигнеш за по-голямото число 8 до 31(който е последният бит в uint , той е 32 битов)

 

31-8  = 23+1 заменки, за тези 2 числа 

 

Оверлапинг значи, не трябва да се застъпват ,например ако дадеш числа с малка разлика, като 3 и 8 след 5 заменки  долното число става 8 , тоест то прави оверлап на горното 8 и трябва да съобщиш за грешка

Затова се избират числа с по голяма разлика - например 3 и 23

Защото когато 27 стигне 31 бит (след 4 заменки) 3 ще е станало само 3 +   4 = 7 7 е по-малко от 27 и нямаме оверлап - това е същота задача , като 15, само че в общият случай , а 15 е само за 3 заменки - частен случай на 15

 

Ако искаш ще ти дам и моите решения ! 

 

 

 

1
joanmar avatar joanmar 14 Точки

Някой може ли да ми обясни 10 задача - Point Inside a Circle & Outside of a Rectangle?

0
SimeonStoykov avatar SimeonStoykov 114 Точки

Какво по-точно? Нещо по условието или да обясни решението?

0
joanmar avatar joanmar 14 Точки

решението :)

0
Kamigawa avatar Kamigawa 750 Точки

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

Ето го решението, слагал съм доста коментари насам-натам, може да са от полза.

http://pastebin.com/Z93wujZH

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