Професионална програма
Loading...
melda.h avatar melda.h 4 Точки

Множества от цифри

Да се прочетат две цели числа от конзолата. Да се напише програма, която проверява дали множествата от цифрите им съвпадат. Програмата да извежда “ Yes ” при съвпадение и
No ” в противен случай.  Примери:
123 321 Yes
12 1523 No
-675678 8765 Yes
45 450 No

Тагове:
0
C++ Programming
ThePSXHive avatar ThePSXHive 436 Точки

Идеята на @M.Yankov e сносна, но ако нямаш право да използваш STL (макар че сам по себе си фактът, че " Трябва да се използват само цикли" не означава, че нямаш право на това, освен ако и това не ти е изрично упоменато), то можеш да подходиш с два bool масива. Всеки от тези масиви служи за проследяване на това коя цифра се съдържа в двете цели числа: например, ако в едното число има 5, то целта е да "включиш" стойността на първия bool масив с индекс 5. Това се осъществява докато отделяш всяка цифра от числото поотделно. По този начин, ако стойностите са 123 и 321 (от примерните входни данни по-горе), то в края на този процес, двата bool масива ще изглеждат ето така: 

0 1 1 1 0 0 0 0 0 0 
0 1 1 1 0 0 0 0 0 0 

След това ти е необходим просто един цикъл с който да установиш дали има някакви разлики между "включените" стойности в двата масива. Ако има, излизаш от цикъла веднага и принтираш "No", и т. н. Другият вариант е да използваш допълнителна контролна променлива (отново от тип bool), чиято истинна стойност поначало е true, но при засичането на разлика в масивите й бива присвоявана стойност false, и спрямо нея да принтираш резултатите "Yes/No"). 

0
09/12/2016 21:33:38
M.Yankov avatar M.Yankov 52 Точки

Да добра идея, не задълбах върху по оптимални решения.

0
melda.h avatar melda.h 4 Точки

Само функции, даже без масиви :D

0
ThePSXHive avatar ThePSXHive 436 Точки

В такъв случай, можеш просто да изброиш уникалните цифри в двете числа и да провериш дали бройката им е равна. Например, в числото "123", уникалните цифри са 1, 2 и 3. В "1244", уникалните цифри са 1, 2 и 4. Важно е това да не се обърква с неповтарящи се цифри, защото ако вместо уникалните изброиш неповтарящите се, то за стойността "1244" крайния резултат ще бъде 2, но коректният резултат е 3. Разбира се, задачата може да се реши и без да се използват примитивни структури от данни или STL контейнери. По това, тя прилича на задачата за намиране на най-дългата нарастваща поредица от числа; общото е, че отново трябва да пазиш всяка предишна стойност (в случая, предишната цифра) в отделна променлива, например prev. Ето я и сигнатурата на ф-та, която използвах в решението

unsigned int countUniqueDigits(int number); 

  Резултатът трябва да бъде неотрицателен, и затова връщаме стойност тип unsigned. Оставям детайлите на теб!

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