Loading...
Slav402 avatar Slav402 1 Точки

[Homework] C# Basics - Operators and Expressions - Problem{5}

Здравейте, приятели

аз нямам въпрос а само споделям моето решение на задача 5 от домашното към лекцията за оператори и изрази.

какво мислите каква е вашата преценка и коментар? Признавам ползвах идеи на други хора от форума но изработката на кода е от мен. (Специални благодарности на тези колеги, те ще познаят подхода си ;) ) Ще се радвам ако с това помогна на някой за тази привидно проста задача!

Mod Edit: Нарушена точка 12 от правилата на форума: Във всеки пост е позволено цитирането на не повече от 15 реда код. Ако искате да споделите по-дълъг код, използвайте сайтове като Pastebin и Github Gist). Също така си редактирай името на темата (виж т. 9), иначе ще бъде изтрита.

Тагове:
0
Programming Basics 11/03/2015 15:51:15
GalyaGeorgieva avatar GalyaGeorgieva 88 Точки

Моето решение е доста кратко, но работи. Проверявам остатъка дали е 7, но първо деля на 100, за да стигна до числото на позиция 3.

            int num = int.Parse(Console.ReadLine());
            num = num / 100;
            Console.WriteLine(num % 10 == 7 ? true : false);

f.e:

701/100 = 7;(целочислено, защото е int)

7 % 10 = 7; - true           

1
Filkolev avatar Filkolev 4482 Точки

Достатъчно е накрая да напишеш: Console.WriteLine(num % 10 == 7);

2
11/03/2015 11:17:08
KatyaMarincheva avatar KatyaMarincheva 572 Точки

Аз пък използвах този метод:

    static int GetDigit(int number, int digit)
    {
        return (number / (int)Math.Pow(10, digit - 1)) % 10;
    }

Коментиран е в много форуми, например:

http://stackoverflow.com/questions/203854/how-to-get-the-nth-digit-of-an-integer-with-bit-wise-operations

http://expertland.net/question/n9185n52r1ju4c4234c2y7aatma521f192/detail.html

Харесвам ми защото е универсален - може да се използва не само за трети, а за всеки digit.

А това е кодът на цялата задача (с comments overkill ;)  ):

http://pastebin.com/45RABVE4

1
Filkolev avatar Filkolev 4482 Точки

Бих ти препоръчал да разбиеш малко сметките в метода и да смениш digit с друго име, понеже не е много точно. Например така:

 private static int GetDigit(int number, int position)
{
int powerOfTen = 1;

for (int i = 0; i < position - 1; i++)
{
powerOfTen *= 10;
}

int digit = (number / powerOfTen) % 10;

return digit;
}

Math.Pow() е метод, който е бавен, понеже работи по-сложно с идеята да може да се смятат степени с реални числа. При повдигане на степен цяло число е доста по-лесно да се ползва цикъл, а ако и основата е цяло число след това няма да се налага кастване (което също бави).

3
KatyaMarincheva avatar KatyaMarincheva 572 Точки

Идеята е супер!

Аз вече и от опит знам че специално на изпити Math.Pow() трябва да се избягва - на изпита по C#2 в Телерик на една задачите изкарах 100 точки  точно защото не използвах Math.Pow() а custom method.

0
ZlatinDimitrov avatar ZlatinDimitrov 11 Точки

Това е моето решение тук.Успех,колеги!

0
enisslkglu avatar enisslkglu 10 Точки

 Това е моето решение. Кратко е както Галя е писал но аз използвах тип " bool ". Намерих един код който прилича на моето но той беше с  "Math.Abs". Аз провах без и стана защото още този тип не ми беше ясно.

            int number = int.Parse(Console.ReadLine());

            bool isSeven = (number / 100) % 10 == 7;

            Console.WriteLine(isSeven);

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