• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Паскаль.Даны 2 целых числа. Есть ли у них одинаковые(по значению) разряды?

votsarskam

Новые
Регистрация
9 Дек 2015
Сообщения
23
Реакции
0
Баллы
0
Паскаль.Даны 2 целых числа. Есть ли у них одинаковые(по значению) разряды?

Даны 2 целых числа. Есть ли у них одинаковые(по значению) разряды?
 
Ну тут два варианта или преобразовать оба числа в строки, или последовательным делением по модулю на 10
типа
Код:
program a;
var m1,m2,d1,d2:Integer;
begin
write('Введите первое число : ');
readln(d1);
write('Введите второе число : ');
readln(d2);
while (d1<>0) and (d2<>0) do
begin
   m1 := d1 mod 10;
   m2 := d2 mod 10;
   if m1=m2 then 
   begin
      writeln('Одинаковый разряд есть');
      break;
   end;
      d1 := d1 div 10;
      d2 := d2 div 10; 
end;
readln;
end.

правда желательно бы еще предусмотреть обработку особого случая, когда оба числа изначально равны нулю.
 
При вводе разных чисел программа не выдает результат
 
При вводе разных чисел программа не выдает результат
А что должна выдавать, в задании про это нет ничего ?
Ну сделайте, что бы выдавала ... Замените вывод (writeln) на установку какого либо флага, а после цикла анализируйте этот флаг ...
да еще бы надо добавить обработку разно знаковых чисел.
Код:
program a;
var m1,m2,d1,d2:Integer;
f:Boolean;
begin
f:=false;
write('Введите первое число : ');
readln(d1);
write('Введите второе число : ');
readln(d2);

{* проверим частный случай, когда оба числа 0 *}
if (d1=0) and (d2=0) then f:=true;

{* приведем к одному знаку *}
d1:= abs(d1);
d2:= abs(d2);

while (d1<>0) and (d2<>0) do
begin
   m1 := d1 mod 10;
   m2 := d2 mod 10;
   if m1=m2 then 
   begin
     f:=true;
      break;
   end;
      d1 := d1 div 10;
      d2 := d2 div 10; 
end;
if f then
   writeln('Одинаковый разряд есть')
else
   writeln('Одинаковых разрядов не найдено');
readln;
end.
 
Назад
Сверху