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

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

Форум «Всё о Паскале» _ Задачи _ Цикл

Автор: йцукен 15.01.2008 4:38

Сдрасте

даны 2 числа , "a" и "b" , нужно найти есть ли в этих 2 - ух числах одинаковые цифры , например
256 и 216 , совпадающими буду 2 и 6 , заранее неизвестно какой длины число , в этом собственно и проблема.
есть идея сделать цикл repeat и в нём делить числа (mod) но как правильно это сделать никак не пойму , помогите пожалуйста smile.gif

Автор: Michael_Rybak 15.01.2008 4:43

сделай цикл for от 0 до 9, и внутри него проверяй, есть ли такая цифра в каждом из чисел.

Автор: мисс_граффити 15.01.2008 4:57

а они должны быть на одинаковых местах? или не обязательно?

Автор: йцукен 15.01.2008 13:12

цифры должны быть на одинаковых местах , и нам заранее низвестно СКОЛЬКО цифр в числе и КАКИЕ они , как я понял нужно использовать mod но вот на что именно делить ...

Автор: volvo 15.01.2008 13:14

На 10, естественно... Проходишь по двум числам одновременно деля их на 10, и смотришь, равны ли остатки от деления. Если равны - то и выводишь их на печать...

Цикл заканчивается, когда одно из чисел становится равным 0...

Автор: йцукен 15.01.2008 13:24

вот что у меня получилось

Код

program awda;
var a,b:integer;
begin
readln(a);
readln(b);
repeat
a:=a mod 10;
b:=b mod 10;
if a = b then writeln('da');
until a or b <> 0
end.

Автор: volvo 15.01.2008 13:31

Я бы на твоем месте почитал книжку (в частности - о работе с логическими выражениями, ибо оно у тебя записано вообще неправильно)...

var
a, b: integer;
begin
readln(a);
readln(b);
repeat
if (a mod 10) = (b mod 10) then writeln(a mod 10);
a := a div 10; b := b div 10;
until (a = 0) or (b = 0)
end.

Так лучше?