Loading...
chichovoto avatar chichovoto 31 Точки

Изваждане на определена цифра от число...

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

Нека имаме някакво 4-цифрено число, примерно: 

int number = 2365;

вариант1: int units = number % 10;                    
                  int tens = number / 10 % 10;
                  int hundreds = number / 100 % 10;
                  int thousands = number / 1000 % 10;

вариант2: string numberToString = number.ToString();

                 int units = int.Parse(numberToString[3].ToString());
                 int tens = int.Parse(numberToString[2].ToString());
                 int hundreds = int.Parse(numberToString[1].ToString());
                 int thousands = int.Parse(numberToString[0].ToString());

Аз ползвам основно вариант1. Вариант2 е по-удобен, ако ви трябва определена цифра от първите цифри на голямо число - за да не се занимавате да броите нули. Освен това е по-бавен...

BTW... Не знам до колко тези неща са правилни, неправилни и т.н., но за целите (задачите) на този курс - работят. Приемам критики :)

Поздрави...

 

1
Programming Basics with C#
Iv_Konov avatar Iv_Konov 383 Точки

Здравей, chichovoto,

 

Перфектна идея, а за критики няма място! ;)

 

Само бих допълнил и един под-вариант към Вариант2. Разбира се, ако пречи за разбирането, ще го премахна!

Да приемем, че номерът е в String формат, примерно въведен от Конзола-та (често се въвежда текст като "Stop" и числа от едно място, с евентуално последващо парсване на числата). 


        string number = "2365";
       
        string units = number[3].ToString();
        string tens = number[2].ToString();
        string hundreds = number[1].ToString();
        string thousands = number[0].ToString();

        char unitsCh = number[3];
        char tensCh = number[2];
        char hundredsCh = number[1];
        char thousandsCh = number[0];

        int unitsNum = int.Parse(units);
        int tensNum = int.Parse(tens);
        int hundredsNum = int.Parse(hundreds);
        int thosandsNum = int.Parse(thousands);       

        Console.WriteLine($"In Strings {thousands} {hundreds} {tens} {units}");
        Console.WriteLine($"In Characters {thousandsCh} {hundredsCh} {tensCh} {unitsCh}");
        Console.WriteLine($"Sum with Numbers: {thosandsNum + hundredsNum + tensNum + unitsNum}");

 

Поздрави,

Иван

0
Filkolev avatar Filkolev 4482 Точки

Варианти много.

Вторият обаче е ненужно бавен заради стрингосването и парсването. По-лесен начин да превърнем цифра в число (защото знаем, че имаме само една цифра) е този:

int digit = numberAsString[digitPosition] - '0';

 

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