Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2012, 13:52   #1
Лександра
 
Регистрация: 01.05.2012
Сообщений: 5
По умолчанию Исправить ошибку в программе.

Условия программы:
Даны два четырехзначных числа, необходимо найти количество совпадений
по две одинаковые цифры в равносильных разрядах чисел, а так же количество совпадений по две одинаковые цифры в различных разрядах этихчисел. Цифра, которая уже участвовала в одной паре совпадения, не учитывается повторно.
Например:
Дано: 1234
2735
Количество совпадений одинаковых цифр в равносильном разряде равно 1,
это цифра 3.
Количество совпадений одинаковых цифр в различных разрядах равно 1, это
цифра 2.
Код программы:
Код:
USES CRT;
VAR
P:BOOLEAN;
I,J,C,F,D,K:INTEGER;
A,B : ARRAY  [1..4] OF INTEGER;
BEGIN
WRITELN('Введите первое число');
READLN (C);
WRITELN('Введите второе число');
READLN (F);

A[1]:=C DIV 1000 ;
A[2]:=C DIV 100- 10*(C DIV 1000);
A[3]:=C DIV 10 - A[1]*100-A[2]*10;
A[4]:=C MOD 10;

B[1]:=F DIV 1000 ;
B[2]:=F DIV 100- 10*(F DIV 1000);
B[3]:=F DIV 10 - B[1]*100-B[2]*10;
B[4]:=F MOD 10;

FOR I:=1 TO 4 DO
BEGIN
P:=FALSE;
FOR J:=1 TO 4 DO
BEGIN
P:=FALSE;
IF A[I]=B[J] THEN
IF I=J THEN
BEGIN
//K:= K+1;
//P:= TRUE
ELSE
IF P=FALSE THEN
D:=D+1;
END;
END;
END;
WRITELN('Колличество совпадений в одинаковых разрядах = ', K)
WRITELN('Колличество совпадений в разных разрядах = ', D)
END.

Последний раз редактировалось ACE Valery; 13.05.2012 в 15:30. Причина: не все дописала
Лександра вне форума Ответить с цитированием
Старый 13.05.2012, 15:46   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,299
По умолчанию

Код:
uses
  crt;

var
  a, b: set of byte;
  c, d: integer;
  s1, s2, i, t1, t2: integer;

begin
  writeln('Input 2 numbers:');
  readln(c, d);
  a := [];
  b := [];
  s1 := 0;
  s2 := 0;
  for i := 1 to 4 do
  begin
    t1 := c mod 10;
    t2 := d mod 10;
    if t1 = t2 then
      inc(s1)
    else
    begin
      a := a + [t1];
      b := b + [t2];
    end;
    c := c div 10;
    d := d div 10;
  end;
  for i := 0 to 9 do
    if (i in a) and (i in b) then
      inc(s2);
  writeln('Count of bitwise matches: ', s1);
  writeln('Count of remaining matches: ', s2);
  readln;
end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Исправить ошибку в программе MedvedPnZ Общие вопросы C/C++ 1 01.05.2012 20:37
Помогите исправить ошибку в программе Antifa Помощь студентам 3 29.04.2009 23:17
Помогите исправить ошибку в программе Paul_AG Общие вопросы C/C++ 12 24.03.2009 19:36
ПОМОГИТЕ исправить ошибку в программе SYL@R Помощь студентам 1 07.12.2008 19:42
ПОМОГИТЕ исправить ошибку в программе SYL@R Помощь студентам 1 21.11.2008 14:48