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

Как да извадя само четните или само нечетните цифри от едно число?

Здравейте!

Сава въпрос за задачата Angry female GPS от този изпит. Как да събера само четните и само нечетните цифри от произволно число тип long?

Също ме интересува и как да разделя произволно число на лява и дясна част и да оперирам с тях по отделно при задачата Drunken Numbers от ето този изпит.

Благодаря!

0
Programming Basics
easlavov avatar easlavov 72 Точки

В тази тема са предложени решения на задачите от изпита с Angry Female GPS, а скоро ще бъде качен и клип с решението: https://softuni.bg/forum/questions/details/559

За Drunken Numbers - за да работиш поотделно с всяка цифра на едно число, удобно е да го разгледаш като string, което ти позволява да достъпваш всяка от цифрите поотделно с индексатор.

2
deliivanov avatar deliivanov 1 Точки

Мерси много, а от другия изпит, който съм посочил има ли някъде решенията?

0
easlavov avatar easlavov 72 Точки

Ето и темата с решения от целия изпит: ТЕМА Там са още и авторовите решения и тестовете на задачите.

2
Dekameron avatar Dekameron 481 Точки

Привет!

Само да вмъкна, че винаги можеш да правиш какво си искаш с дадени числа.

В случая аз вкарвам входа в string, след това проверявам с for цикъл всеки един елемент по следния начин:

if(Char.GetNumericValue(inputLikeString[i]) % 2 == 0) - дали е четно

...

if(Char.GetNumericValue(inputLikeString[i]) % 2 != 0) - дали е нечетно

...

 

Peace of cake wink

7
maya.p avatar maya.p 2 Точки

И аз реших да пробвам тази задачка, но излезе проблем.Уж ми я решава на конзолата, но в bgcoder ми дава само 70 точки. Ето го моето решение:

http://pastebin.com/eeyyWEzB

Ако някой открие грешка, моля да помага :)

0
shan0 avatar shan0 53 Точки

Здравей Мая, това което ти липсва е проверка на входа, още в началото ти трябва този ред:

 

if(N < 0)
{
N = -N;
}

тоест ако на входа се подаде отрицателно число, директно да го обръща в положително. Успех :)

2
maya.p avatar maya.p 2 Точки

Благодаря ти! Получи се :)

Не знаех, че има нужда от проверка, точно заради този ред от условието:

The input data will always be valid and in the format described. There is no need to check it explicitly.

 

0
plamenti avatar plamenti 28 Точки

Да де:)

Форматът е integer number N, което си означава от -2,147,483,648 до 2,147,483,647

В твоя код е достатъчно да добавиш едно TrimStart с параметър '-'. 

Ето така:

long N = long.Parse(Console.ReadLine().TrimStart('-'));

1
ViValDam avatar ViValDam 15 Точки

Ами , като делиш числото на % 2 - и ако резултата е 0 числото е четно , ако резултата не е нула, числото е нечетно. % дава остатъка от делението / дава цялата част на делението 4 / 2 = 2 ; 5%2 = 1 !=0; числото е нечетно 4/2 =2; 4%2 =0; - числото е четно

1
g.stoyanov avatar g.stoyanov 776 Точки

Въпроса е като имаме числото 123456 да извадим 135 и 246. Иначе да ако за проверка на дадено число/цифра твоя вариант върши работа. Също така number & 1 ако върне 1 то числото е нечетно - това може би е най - бързия начин.

1
ViValDam avatar ViValDam 15 Точки

За да извадиш цифрите на числото по отделно последователно го делиш на с % и / на 10на някаква степен според позицията на цифрата, която искаш да извадиш - вече решавахме такива задачи за домашно в началото . например : 321 %10 =1 - проверка на 1 за четност и нечетност р после 321%100 = 21; 21/10 = 2; проверка на 2 за четност и нечетност и тн

1
ViValDam avatar ViValDam 15 Точки

МОD това с битовете е супер smile- все повече заобичвам битовите операции

1
ViValDam avatar ViValDam 15 Точки
Интежер на английски означава цяло число Така ,че ако в задачата са дадени цели числа ,може да се обяват, като: byte - only positive integer numbers, sbyte, short, ushort - only positive integer numbers, int, uint - only positiv integer numbers, long, ulong - only positive integer numbers, BigInteger, всичките са валидни типове за целочислените (интежер числа) и се избират според големината на числата и според това дали са само положителни или или и положителни и отрицателни числа.
1
ViValDam avatar ViValDam 15 Точки

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

 

http://pastebin.com/GZ5Ek8ke

1
ZvetanIG avatar ZvetanIG 907 Точки

Може да превърнеш числото в стринг, като използваш  ToString(). След това  обхождаш низа през един символ. За да получиш цифрата като число е парсваш.

string numberAsString = number.ToString();

for (int i = 0; i > numberAsString.Lenght; i+=2)

{

       int OddDigit = int.Parse(numberAsString[i].ToString());

}

По този начин взимаш, нечетните цифри, ако първоначално i = 1, ще взимаш четните.

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