Професионална програма
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 16 Точки

Ами , като делиш числото на % 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 16 Точки

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

1
ViValDam avatar ViValDam 16 Точки

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

1
ViValDam avatar ViValDam 16 Точки
Интежер на английски означава цяло число Така ,че ако в задачата са дадени цели числа ,може да се обяват, като: 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 16 Точки

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

 

http://pastebin.com/GZ5Ek8ke

1
ZvetanIG avatar ZvetanIG 917 Точки

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

string numberAsString = number.ToString();

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

{

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

}

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

Може да използваш същият подход да разделиш числото на лява и дясна част.
0