Proc9. Описать процедуру AddLeftDigit($$D$$, $$K$$), добавляющую к целому положительному числу $$K$$ слева цифру $$D$$ ($$D$$ — входной параметр целого типа, лежащий в диапазоне 1-9, $$K$$ — параметр целого типа, являющийся одновременно входным и выходным). С помощью этой процедуры последовательно добавить к данному числу $$K$$ слева данные цифры $$D_1$$ и $$D_2$$, выводя результат каждого добавления.
Решение:
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 |
program Proc9; procedure AddLeftDigit(D:Integer; var K:Integer); var temp:integer; begin temp:=10; While ((K div temp)<>0) do temp:=temp*10; K:=D*temp+K; end; var D1,D2,K:Integer; begin Write('K :'); Readln(K); Write('D1 :'); Readln(D1); AddLeftDigit(D1, K); Writeln(K); Write('D2 :'); Readln(D2); AddLeftDigit(D2, K); Writeln(K); end. |
Решение (немного изменил условие в цикле, так даже проще):
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 |
program Proc9; procedure AddLeftDigit(D:Integer; var K:Integer); var temp:integer; begin temp:=10; While (K>temp) do temp:=temp*10; K:=K+D*temp; end; var D1,D2,K:Integer; begin Write('K :'); Readln(K); Write('D1 :'); Readln(D1); AddLeftDigit(D1, K); Writeln(K); Write('D2 :'); Readln(D2); AddLeftDigit(D2, K); Writeln(K); end. |
Решение с помощью строк:
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 |
program Proc9; procedure AddLeftDigit(D:Integer; var K:Integer); var S,Stemp:string; i,error: integer; begin str(D,Stemp); S:=Stemp; str(K,Stemp); S:=S+Stemp; Val(S,K,error); Writeln(S); end; var D1,D2,K:Integer; begin Write('K :'); Readln(K); Write('D1 :'); Readln(D1); AddLeftDigit(D1, K); Writeln(K); Write('D2 :'); Readln(D2); AddLeftDigit(D2, K); Writeln(K); readln; end. |
Другие задачи из раздела Proc можно посмотреть здесь.
Это решение к задаче Proc8
Поправил. Можно сказать использовал ваши идеи. 🙂
Скорее как пишут в фильмах «по мотивам». Вот это — While ((K div temp)….- очень здорово!!
Рад, что понравилось 🙂
[/crayon]
строка 9 должна иметь вид
[/crayon]
Поправил.
Не нравиться, так как процедура задана в задании, довольно конкретно : «AddLeftDigit(D, K)»
[/crayon]
Тоже самое процедура «AddLeftDigit(D, K)», а не «AddLeftDigit()»
Во втором решении при к=10, 100,… не получается.
While (K>=temp) do temp:=temp*10; так правильнее.