Помогите пожалуйста составить программу на Паскале:
Даны два натуральных числа. Проверить, в них совпадают первые и последние цифры.
У меня не выходит с первыми цифрами. Что исправить?
program ind4;
uses crt;
var y,x,k,s:longint;
t,f:boolean;
begin
clrscr;
write('x=');
read(x);
write('y=');
read(y);
t:=false;
f:=false;
k:=y mod 10;
s:=x mod 10;
if k=s then f:=true;
writeln('остання цифра збігається',f);
while x<>0 do
begin
s:=x div 10;
x:=s;
end;
while y<>0 do
begin
k:=y div 10;
y:=k;
end;
if x=y then t:=true;
writeln('перша цифра збігається - ',t);
readln;readln;
end.
Помогите)
Эту задачу проще решать преобразованием чисел в строки и последующим сравнением символов строк. Особенно если числа разных порядков.
It's a long way to the top if you wanna rock'n'roll
у тебя циклы
выполняются до тех пор, пока x не станет 0, но так как ты x изменяешь вместе с s, то и s становится 0 в итоге. В конечном счете у тебя все переменные обнуляются.
Попробуй сделать их разными (например так):
В таком случае у тебя после выполнения цикла в s будет храниться остаток от деления x на 10(до того как он стал нулем) - т. е. первое число. То же самое "y"
А в конце проверять не x и y а опять s и k
while x<>0 do
s:=x div 10;
x:=s;
end;
выполняются до тех пор, пока x не станет 0, но так как ты x изменяешь вместе с s, то и s становится 0 в итоге. В конечном счете у тебя все переменные обнуляются.
Попробуй сделать их разными (например так):
while x<>0 do
s:=x mod 10;
x:=x div 10;
end;
В таком случае у тебя после выполнения цикла в s будет храниться остаток от деления x на 10(до того как он стал нулем) - т. е. первое число. То же самое "y"
А в конце проверять не x и y а опять s и k
if s=k then t:=true;