Напишете програма, която въвежда естествено число N и проверява дали то е съвършено (равно на сумата от делителите си, без самото число)
Всички задачи за:
Оградете кода с:
[c] за С++ програми [/c]
[pascal] за паскал [/pascal]Достъп до сайта:
С повишена трудност:
Задачите със звездичка са с повишена трудност - решавайте ги, ако сте решили другите.-
Последни задачи:
Последни решения:
- Marin за Къде се намира точка
- Marin за Вмъкване и изтриване на елемент *
- Marin за Позицията на X
- Alexander1 за Броят на максималните елементи
- Alexander1 за Броят на максималните елементи
- Marin за Пари за закуска
- Alexander1 за Ученици с дадена оценка
- Alexander1 за По-големи от средното
Топ участници за момента:
kaloyan164 решения/коментараGadget131 решения/коментараdreanor112 решения/коментараmarant74 решения/коментараsup3rEva68 решения/коментараБоряна65 решения/коментараNadq53 решения/коментараmaleboldjia48 решения/коментараkrisizdravi9543 решения/коментараMartinPlamenov38 решения/коментараЗадачи за дата:
януари 2025 П В С Ч П С Н « февр. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Предишни задачи:
- февруари 2017 (38)
- януари 2017 (16)
- декември 2016 (17)
- ноември 2016 (14)
- октомври 2016 (26)
- юни 2016 (3)
- май 2016 (15)
- април 2016 (12)
- март 2016 (14)
- февруари 2016 (9)
- май 2015 (2)
- април 2015 (8)
- март 2015 (8)
- февруари 2015 (13)
- януари 2015 (11)
- декември 2014 (9)
- ноември 2014 (24)
- октомври 2014 (16)
- юни 2014 (2)
- май 2014 (8)
- април 2014 (10)
- март 2014 (14)
- февруари 2014 (22)
- януари 2014 (25)
- декември 2013 (27)
- ноември 2013 (37)
- октомври 2013 (38)
- септември 2013 (2)
- юни 2013 (6)
- май 2013 (10)
- април 2013 (19)
- март 2013 (35)
- февруари 2013 (32)
- януари 2013 (29)
- декември 2012 (28)
- ноември 2012 (37)
- октомври 2012 (26)
- септември 2012 (3)
- май 2012 (16)
- април 2012 (16)
- март 2012 (27)
- февруари 2012 (10)
- януари 2012 (13)
- ноември 2011 (16)
- октомври 2011 (8)
- април 2011 (4)
- март 2011 (19)
- февруари 2011 (19)
- януари 2011 (18)
- декември 2010 (25)
- ноември 2010 (10)
- октомври 2010 (33)
- септември 2010 (1)
По теми:
- break
- бройни системи
- булев тип
- вариантен избор
- вложена условна команда
- вложени цикли
- дати
- динамична променлива
- дървета
- запис
- изброим тип
- класове
- манипулатори на извеждането
- масив
- масив от записи
- многомерни масиви
- множества
- модули
- низ
- низове
- низови функции
- опашки
- отпечатване
- преобразуване на типовете
- реален тип
- рекурсия
- символен тип
- сортиране на масиви
- специфични операции за цели числа
- списъци
- стекове
- структури
- текстов файл
- типизирани файлове
- условна команда
- файл
- функции
- хедър файлове
- целочислен тип
- цикъл do-while
- цикъл for
- цикъл repeat
- цикъл while
- цифри на число
- шах
Всички задачи:
- 2016-2017 (111)
- Архив задачи (791)
- 2010-2011 (131)
- Информатика (131)
- 2011-2012 (109)
- ЗИП Информатика (4)
- 10в (4)
- Информатика (105)
- ЗИП Информатика (4)
- 2012-2013 (227)
- 2013-2014 (182)
- 2014-2015 (91)
- 2015-2016 (53)
- 2010-2011 (131)
Мета
Препоръчваме хостинг:
Я, krisizdravi95 с решение? И използване на функции извън материала? Мноооого добре! :-)
Задачата е вярна и много добре структурирана. Само бих препоръчал вложените команди да се пишат по-навътре, за да е по-прегледен кода…
Вярно и добре подредено!
Калояне, много добре! Явно започваш да се специализираш в рекурсиите :-)
Задачата е вярна, имам само една забележка по функцията – тъй като в твоя случай тя не връща резултат, би трябвало да я укажеш от тип void вместо int. Но, макар че не е грешно и така, не печелиш много от функции, които печатат на екрана (освен ако задачата им не е изрично това) – защото така функцията престава да бъде инструмент, нещо универсално, което може да бъде използвано по най-различни начини.
Ето ти два примера за различна употреба на създадената от теб функция (с леки промени по кода):
Ако увеличиш горната граница на търсенето на съвършени числа на 1 милион да кажем, ще забележиш едно чувствително забавяне на завършването на програмата. Ето кога ефективността на кода става от решаваща важност – при множество изчисления забавянето от всеки оператор е от значение, защото се умножава по 100000. Става важно и това кой точно подход да бъде избран – например в случая на рекурсия ще имаме до 100000 вложени едно в друго извиквания на една функция, което може да дойде малко множко. Пробвай тази задача с цикъл и с рекурсия и пиши кой подход е по-бърз и кой харчи повече памет.
Измерих времето и с цикъл for се оказа по-удачно от използването на функция с рекурсия. Също позволява работа с големи числа.
Охо, използваш и макроси :-) Браво, хубаво е, че ползваш и странична литература – това е начинът човек непрекъснато да се ъпгрейдва. А в днешно време с помощта на Гугъл и Интернет това не е чак толкова трудна и времеемка задача – просто трябва човек да има желание…
Да, конкретно за тази задача е по-удачно с цикъл. Можеше да провериш в Task manager-a и колко памет заема програмата при работа – при рекурсията ще е със сигурност доста повече. Но има други задачи, в които рекурсивното решение е много по-бързо и кодът е по-кратък и прост. Така че се преценява според случая. Ако се очаква да има много голям брой рекурсивни извиквания, тогава е по-добре да се избягват рекурсиите. Виж за повече пояснения например тук, секцията „Условия за избор на рекурсивно решение“.
Ще очаквам с интерес и следващите решения…