Другие языки программирования и технологии

ввести 2 числа меньше 65000 и определить имебтся ли них одинаковые числа

можно код программы очень нужно...
Доброго времени суток.

Может все-таки одинаковые цифры? Все значительно проще. N1 - первое число, N2 - второе.

Match := False; {признак совпадения цифр}
while N1 > 0 do begin {пока в числе есть цифры}
d := N1 mod 10: {запоминаем младшиц разряд числа N1}
N := N2; {копия числа N2}
while N > 0 do begin
if N mod 10 = d then begin {сравниваем цифру с запомненной}
Match := True; {при совпадении устанавливаем признак}
Break; {и дальше не ищем}
end;
N := N div 10;
if Match then Break;
N1 := N1 div 10; {отбрасываем младший разряд}
end;

А если так уж хочется через строки делать, то можно гораздо элегантнее.

for i:=1 to Length(S1) do
if Pos(S[ i ], S2) > 0 then begin
WriteLn('Есть совпадающая цифра! Это ', S[ i ]);
Break; {дальше не ищем, т. к. задача найти все совпадения не стоит}
end;

Вот и все. Остальное сами.

Удачи!

2Александр: А это бич нашего времени - неумение выразить мысль. ИМХО, конечно.
Марат Базаров
Марат Базаров
59 613
Лучший ответ
а можно задание более понятными словами изложить?
вводишь строку с цифрами сама просто и отделяешь цифры и сравниваешь)) )

const n=65000;
var s:string[n];
s1:string;
a:array[1..n] of string;
i,j,k,f,p,t:integer;
begin
clrscr;
writeln('введите строку');
readln(s);
j:=1; s1:=''; p:=0;
s:=s+' ';
for i:=1 to length(s) do
begin
if (s<>' ')then
begin
s1:=s1+s;
end
else
begin
a[j]:=s1;
j:=j+1;
s1:='';
end;
end;
for t:=1 to j do
writeln(a[t]);
for i:=1 to j do
begin
f:=0;
for t:=1 to i do
if (i<>t)and(a=a[t])then f:=1;
if f=0 then
begin
writeln(a);
inc(p);
end;
end;
writeln(p);
readln;
end.