Анализ на проблем C4 (демо USE 2011)
Анализ на проблем C4 (демо USE 2011)
Входът към програмата е набор от знаци, завършващи с точка (в BASIC програма знаците могат да се въвеждат един по един, докато се въведе точка, или данните могат да се четат от файл). Напишете ефективна, ефективна по отношение на паметта програма (посочете версията на езика за програмиране, която използвате, например Borland Pascal 7.0), която първо ще определи дали в този набор има знаци, които съответстват на десетични цифри. Ако има такива символи, възможно ли е да ги пренаредите така, че полученото число да е симетрично (чете се по един и същ начин както отляво надясно, така и отдясно наляво). В числото не трябва да има водещи нули, изключение прави числото 0, чийто запис съдържа точно една нула.
Ако е невъзможно да се направи необходимия брой, тогава програмата трябва да покаже думата „НЕ“ на екрана. И ако е възможно, тогава в първия ред трябва да отпечатате думата "ДА", а във втория - желаното симетрично число. Ако има няколко такива числа, тогава програмата трябва да изведе максималното от тях. Например, нека бъдат въведени следните знаци: Не правете 911 до 09. В този случай програмата трябва да изведе ДА 91019
Програмата чете всички въведени знаци до точка веднъж, като брои в масив, съдържащ 10 цели числа, номерът на всяка цифра. Самите въведени знаци не се запомнят. След това се проверява колко нечетни елемента има в този масив. Ако има повече от един, проблемът няма решение. Ако има решение, първо се отпечатват половината от наличните цифри 9 (ако има такива, в случай на нечетен брой цифри, по-малката половина), след това 8 и т.н. до 0, след това отпечатайте цифрата, която се среща нечетен брой пъти във входа, и след това останалата половина от цифрите 0 (ако има такива, вв случай на нечетен брой цифри, по-малката половина), 1 и т.н. до 9. Ако във входа няма други цифри освен 0, тогава задачата има решение само ако тази нула е уникална. Ако има четен брой нули и има само една различна от нула цифра, тогава няма решение.
Програмата е написана на езици:
- Pascal (среда за разработка Turbo Pascal 7.0),
- BASIC (среда за разработка Quick Basic 4.5),
- C (среда за разработка Borland C++ 3.1),
- Алгоритмичен език (среда за разработка Kumir 1.9.0).
Срещу името на езика за програмиране в скоби има връзки за изтегляне на източници и exe (изпълними файлове).