Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Простая задачка!ПОМОГИТЕ СРОЧНО!

Автор: bestlover 19.10.2008 20:30


Дано натуральное число. Приписать к нему такое же. Но чтобы можно было с этой цифрой потом операции выполнять!

Автор: Vinchkovsky 19.10.2008 21:34

Я правильно понял - напр., если дано число 23, то на выходе получаем 2323?

Если да, то так:

program ValStr;
uses Crt;
var A:longint;
i:integer;
S:string;
begin
ClrScr;
write('Enter the number: '); readLn(A); {Читаем число}
str(A,S); {Переводим числовую переменную в строковую}
S:=S+S; {Дописываем нужные цифры}
val(S,A,i); {Переводим из строковой переменной в числовую}
writeLn('New number: ', A); {Выводим измененное число}
Repeat until KeyPressed
end.

Автор: Lapp 19.10.2008 21:52

Можно попроще, мне кажется..
Типа вот так:

var
n,m: LongInt;

begin
n:=1234;
m:=10;
while n div m>0 do m:=m*10;
n:=n*m+n;
WriteLn(n)
end.

Автор: Vinchkovsky 19.10.2008 22:10

Ну да, конечно, немного проще, как-то и не подумал - написал наиболее очевидный (для меня) вариант wink.gif
Хотя, мой вариант тоже можно упростить smile.gif blum.gif

var A:longint;
i:integer;
S:string;
begin
A:=1234;
str(A,S);
val(S+S,A,i);
writeLn('New number: ', A);
end.

Автор: Lapp 19.10.2008 22:22

Цитата(Vinchkovsky @ 19.10.2008 18:10) *
Хотя, мой вариант тоже можно упростить

Ты его не только упростил, но и улучшил smile.gif. Последняя строчка в первом варианте просто вредная - ты оставляешь символ в буфере.
Но простота моего решения не в количестве строчек. Оно годится практически без переделок для любой системы счисления. И оно проще в смысле внутреннего представления: меньше код, меньше памяти нужно, быстрее выполнение.

М
Приношу всем извинения, что не заметил сразу.
bestlover, прошу тебя соблюдать Правила Форума (п.4)


Автор: Vinchkovsky 19.10.2008 22:41

Цитата
Последняя строчка в первом варианте просто вредная - ты оставляешь символ в буфере.

А как этого избежать? Ранее пользовалься readLn всегда, но от преподавателя узнал о конструкции repeat until Keypressed, по-настоящему стал ценить ее при создании игр (Press any key... вместо Рress ENTER...), удобнее как-то выходить по нажатию любой клавиши.
Цитата
Но простота моего решения не в количестве строчек. Оно годится практически без переделок для любой системы счисления. И оно проще в смысле внутреннего представления: меньше код, меньше памяти нужно, быстрее выполнение.

Понимаю, "упрощение" делал не очень-то всерьез wink.gif

Автор: Lapp 19.10.2008 22:43

Цитата(Vinchkovsky @ 19.10.2008 18:41) *

А как этого избежать?

после того цикла вставь еще такой:
while KeyPressed do ReadKey;


Автор: bestlover 20.10.2008 7:57

Спасибо! Большое! За помощь! Вы мне очень помогли! good.gif