4f62 Паскаль. Ответы. P.46. Алгоритмы. Строки.Операции с числами в символьном представлении. Сборник задач по программированию Александра Приходько
 

Сборник задач по программированию. Старая версия

 

 Приходько А. Н.

 

пролог, prolog, сборник, задачи, учебник, обзоры, обучение, xslt, примеры, паскаль, file, преобразование
 

Паскаль. Ответы. P.46. Алгоритмы. Строки.Операции с числами в символьном представлении



главная страница
P.46.1.
Шаг 1. Если длина первого числа больше длины второго числа, то в признак Pr заносим значение истинна и переходим на Конец. В противном случае переходим на Шаг 2.
Шаг 2. Если длина первого числа меньше длины второго числа, то в признак Pr заносим значение ложь и переходим на Конец. В противном случае переходим на Шаг 3.
Шаг 3. В переменную LL заносим значение истинна. В I заносим 1.
Шаг 4. Пока LL является истинным и I не больше длины первого числа минус 1 повторяем в цикле Шаг 5.
    Шаг 5. Если I-ая цифра первого числа не совпадает с I-ой цифрой второго числа, то в LL заносим ложь, иначе увеличиваем значение I на 1.
Шаг 6. Если I-ая цифра первого числа больше I-ой цифры второго числа, то в Pr заносим значение истинна, в противном случае в Pr заносим значение ложь.
Шаг 7. Конец.

P.46.2.
Шаг 1. Если длина делимого меньше 2-х цифр, то в результат заносим значение 0 и переходим на Конец. Иначе переходим на Шаг 2.
Шаг 2. Отбрасываем от делимого последнюю цифру и копируем получившееся число в резудьтат.
Шаг 3. Конец.

P.46.3.
Шаг 1. Корируем в результат последнюю цифру делимого.
Шаг 2. Конец.

P.46.4.
Шаг 1. Если длина исходного числа является максимальной, то выдаем ошибку и переходим на Конец. Иначе переходим на Шаг 2.
Шаг 2. Если исходное число является нулем, то и в результат заносим число 0. Иначе к исходному числу приписываем справа цифру 0 и копируем в результат.
Шаг 3. Конец.

P.46.5.
Шаг 1. Если длина исходного числа является максимальной, то выдаем ошибку и переходим на Конец. Иначе переходим на Шаг 2.
Шаг 2. В Z заносим исходное число. В Per (перенос) заносим 0. В I заносим длину исходного числа. В Y заносим исходную цифру.
Шаг 3. Пока I>0 в цикле выполняем Шаги 4, 5, 6, 7.
    Шаг 4. Умножаем I-ю цифру числа Z на Y, прибавляем Per и это значение заносим в переменную K.
    Шаг 5. В I-ю цифру числа Z заносим остаток от деления K на 10.
    Шаг 6. В Per заносим частное от деления K на 10.
    Шаг 7. Уменьшаем значение I на 1.
Шаг 8. Если Per>0, то слева к числу Z приписываем цифру, значение которой равняется значению переменной Per.
Шаг 9. Конец.

P.46.6.
Шаг 1. В переменную K заносим длину исходной строки. S=0.
Шаг 2. Проходим переменной J по всем значениям от 1 до K и для каждого значения J выполняем Шаг 3.
    Шаг 3. S=S*10. Извлекаем J-ый символ исходной строки и находим значение цифры, содержащейся в этом символе. Для этого из порядкового номера этого символа отнимаем порядковый номер символа «0». Прибавляем полученное значение к переменной S.
Шаг 4. Выводим значение S. Конец.

P.46.7.
Шаг 1. В переменную K заносим исходное число. Создаем пустую результирующую строку.
Шаг 2. Пока K не равно 0 повторяем Шаг 3.
    Шаг 3. В переменную L заносим остаток от деления K на 10. В переменную K заносим частное от деления K на 10. Создаем символ, соответствующий цифре, содержащейся в переменной L. Для этого создаем символ с порядковым номером, равным порядковому номеру символа «0» плюс значение L. Добавляем этот символ слева к результирующей строке.
Шаг 4. Конец.

P.46.8.
Шаг 1. Если длина хоть одного из исходных чисел является максимальной, то выдаем ошибку и переходим на Конец. Иначе переходим на Шаг 2.
Шаг 2. В результирующее число (строка) заносим пустую строку. В переменную Ix заносим длину первого слагаемого, в Iy - длину второго слагаемого. В переменную Per (перенос) заносим значение 0.
Шаг 3. Пока Ix>0 и Iy>0 в цикле выполняем Шаги 4, 5, 6, 7, 8, 9.
    Шаг 4. Если Ix>0, то в переменную Ax заносим значение Ix-ой цифры первого слагаемого, иначе в Ax заносим значение 0.
    Шаг 5. Если Iy>0, то в переменную Ay заносим значение Iy-ой цифры второго слагаемого, иначе в Ay заносим значение 0.
    Шаг 6. В переменную Sum заносим сумму переменных Ax, Ay и Per.
    Шаг 7. В переменную Per заносим частное от деления Sum на 10.
    Шаг 8. Слева к результирующему числу (строка) приписываем цифру, значение которой равно остатку от деления переменной Sum на 10.
    Шаг 9. Уменьшаем значение Ix на 1. Уменьшаем значение Iy на 1.
Шаг 10. Если значение переменной Per больше 0, то к результирующему числу (строка) слева приписываем цифру, значение которой равно значению переменной Per.
Шаг 11. Конец.

P.46.9.
Шаг 1. Если суммарная длина исходных чисел превышает максимальную, то выдаем ошибку и переходим на Конец. Иначе переходим на Шаг 2.
Шаг 2. Если первое исходное число не больше второго, то переставляем их местами.
Шаг 3. Присваиваем результирующему числу (строка) значение 0
Шаг 4. Пока длина второго исходного числа (строка) не является нулевой в цикле выполняем Шаги 5, 6, 7, 8, 9.
    Шаг 5. В переменную C заносим значение старшей цифры второго исходного числа (строка).
    Шаг 6. Отбрасываем от второго исходного числа (строка) старшую цифру.
    Шаг 7. Результирующее число (строка) умножаем на 10.
    Шаг 8. Первое исходное число (строка) умножаем на цифру, хранящуюся в переменной C, и результат заносим в переменную E (строка).
    Шаг 9. К результирующему числу (строка) прибавляем число из переменной E (строка).
Шаг 10. Конец.

P.46.10.
Шаг 1. В переменную I1 заносим длину первого исходного числа (строка), в I2 - длину второго исходного числа (строка). В переменную Per (перенос) заносим значение 0.
Шаг 2. Пока I1>0 и I2>0 в цикле выполняем Шаги 3, 7, 10.
    Шаг 3. Если Per>0, то выполняем Шаг 4.
        Шаг 4. Если I1-ая цифра первого исходного числа (строка) больше 0, то выполняем Шаг 5, иначе выполняем Шаг 6.
            Шаг 5. Уменьшаем значение I1-ой цифры первого исходного числа (строка) на 1. В переменную Per заносим значение 0.
            Шаг 6. В I1-ю цифру первого исходного числа (строка) заносим значение 9.
    Шаг 7. Если I1-ая цифра первого исходного числа (строка) не меньше I2-ой цифры второго исходного числа (строка), то выполняем Шаг 8, иначе выполняем Шаг 9.
        Шаг 8. От I1-ой цифры первого исходного числа отнимаем I2-ю цифру второго исходного числа.
        Шаг 9. Заменяем I1-ю цифру первого исходного числа на цифру, значение которой равняется I1-ая цифра первого исходного числа минус I2-ая цифра второго исходного числа плюс 10. В переменную Per заносим значение 1.
    Шаг 10. Уменьшаем значение I1 на 1. Уменьшаем значение I2 на 1.
Шаг 11. Если Per>0, то выполняем Шаг 12.
    Шаг 12. Если I1-ая цифра первого исходного числа больше 0, то выполняем Шаг 13, иначе выполняем Шаг 14, 15, 16, 17.
        Шаг 13. Уменьшаем I1-ю цифру первого исходного числа на 1.
        Шаг 14. I3=I1-1.
        Шаг 15. Пока I3-ая цифра первого исходного числа равняется 0 уменьшаем значение I3 на 1.
        Шаг 16. Уменьшаем I3-ю цифру первого исходного числа на 1.
        Шаг 17. Все цифры первого исходного числа, начиная с I3+1-ой цифры и кончая I1-ой цифрой включительно, меняем на цифры 9.
Шаг 18. Конец.

P.46.11.
Шаг 1. I=0. В M копируем значение делимого.
Шаг 2. Выполняем в цикле Шаг 3, пока делитель не больше M.
    Шаг 3. Увеличиваем значение I на 1. От M отнимаем значение делителя.
Шаг 4. В частное заносим значение I. В остаток заносим значение M.
Шаг 5. Конец.

P.46.12.
Шаг 1. Если делитель равен нулю, то выдаем ошибку и переходим на Конец. Иначе переходим на Шаг 2.
Шаг 2. Если делимое и делитель равны, то в частное заносим значение 1, в остаток 0 и переходим на Конец. . Иначе переходим на Шаг 3.
Шаг 3. Если делимое меньше делителя, то в частное заносим 0, в остаток значение делимого и переходим на Конец. . Иначе переходим на Шаг 4.
Шаг 4. Заносим в N длину делителя. Копируем в G1 первые N цифр делимого. В G2 копируем оставшиеся цифры делимого.
Шаг 5. Делим G1 на делитель по алгоритму P.46.11. Частное заносим в Z1, остаток в T1.
Шаг 6. Заносим значение Z1 в частное. В II заносим длину T1.
Шаг 7. Повторяем в цикли Шаги 8 - 16, пока G2 не является пустой строкой.
    Шаг 8. Увеличиваем II на 1.
    Шаг 9. Сцепляем строки T1 и G2 и результат заносим в G3.
    Шаг 10. Копируем в G1 первые II символов строки G3.
    Шаг 11. В JJ заносим значение II.
    Шаг 12. Отбрасываем от строки G1 впередистоящие нули. Уменьшаем значение II на число отброшенных нулей.
    Шаг 13. В G2 копируем из G3 все символы, начиная с JJ+1-го символа и до последнего.
    Шаг 14. Делим G1 на делитель по алгоритму P.46.11. Частное заносим в Z1, остаток в T1.
    Шаг 15. К частному справа приписываем строку Z1.
    Шаг 16. Если Z1 не равняется нулю, то в II заносим длину строки T1.
Шаг 17. В остаток копируем значение T1.
Шаг 18. Конец.

 

©   Александр Приходько    1996 - 2006

69 0