Чтобы сравнить эти два числа, нужно их рпедставить в одной системе счисления. Удобней всего сделать это в двоичной. Переведем DD в двоичную систему. пишем раскладку степеней двойки: 1 2 4 8 (16 не берем, т.к. в 16-ричной с.с. нет числа 16) берем первую цифру числа DD - D. По сути, D-это 13 число в 16-ричной с.с. (более подробно 16-ричная с.с - это 1,2,3,4,5,6,7,8,9,A(10),B(11),C(12),D(13),E(14),F(15)); смотрим, как число 13 можно разложить по числам 1,2,4,8(см раскладку степеней двойки). 8 влезает в 13 один раз, ставим 1. Остаток 13-8=5. 4 влезает 5 один раз, ставим 1. остаток 5-4=1. 2 не влезает в 1, ставим 0. И на 1 ставим 1. Т.е. первая четверка двочного числа равна 1101. Теперь разбираем вторую цифру 16-ричного числа D. Выше было рассказано, как это сделать. Итого, получаем, что DD в 16с.с = 11011101 в двоичной. Теперь пеерводим 337 из восьмеричной в двоичную пишем раскладку степеней двойка 1 2 4 (8 не берем, т.к в восьмеричной с.с нет числа 8)ж берем первую цифру числа 337 - это 3. Раскладываем по степеням двойки и получаем, что первая двоичная тройка этого числа равна 011 (4 в 3 не влезает, 2 влезает один раз, остаток-один). со второй тройкой аналогично - получаем 011. Теперь 7: 111 (4 влезает 1 раз, остаток-3, двойка в 3 влезает 1 раз, остаток-1, и последняя единица) Итого получаем 337 в восьмеричной с.с. = 011011111, но 0 в начале числа не пишут, поэтому получаем 11011111 выписываем полученные двоичные числа DD= 11011101 337=11011111 по условию нам нужно найти число, которое стоит между этими. Для себя я делаю так, все 1 заменяю на 9, а 0 - на 8, мне так проще. получается, что DD=99899989 337=99899999 очевидно, что между ними стоит число 99899990 или, переводя обратно, 11011110 - вот и ответ
Program Type1; Var X1, Y1, X2, Y2: Integer; BeginWriteLn('X1 = '); ReadLn(X1); WriteLn('Y1 = '); ReadLn(Y1); WriteLn('X2 = '); ReadLn(X2); WriteLn('Y2 = '); ReadLn(Y2); If (X1 = -X2) And (Y1 = -Y2) Then WriteLn('Точки симметричны относительно начала координат') Else If (X1 = -X2) And (Y1 = Y2) Then WriteLn('Точки симметричны относительно оси Y') Else If (X1 = X2) And (Y1 = -Y2) Then WriteLn('Точки симметричны относительно оси X') Else WriteLn('Точки не симметричны'); ReadLn; End.
Без использования составных условий:
Program Type2; Var X1, Y1, X2, Y2: Integer; Begin WriteLn('X1 = '); ReadLn(X1); WriteLn('Y1 = '); ReadLn(Y1); WriteLn('X2 = '); ReadLn(X2); WriteLn('Y2 = '); ReadLn(Y2); If (X1 + X2 = 0) And (Y1 + Y2 = 0) Then WriteLn('Точки симметричны относительно начала координат') Else If (X1 + X2 = 0) And (Abs(Y1) - Abs(Y2) = 0) Then WriteLn('Точки симметричны относительно оси Y') Else If (Abs(X1) - Abs(X2) = 0) And (Y1 + Y2 = 0) Then WriteLn('Точки симметричны относительно оси X') Else WriteLn('Точки не симметричны'); ReadLn; End.
Переведем DD в двоичную систему.
пишем раскладку степеней двойки:
1
2
4
8
(16 не берем, т.к. в 16-ричной с.с. нет числа 16)
берем первую цифру числа DD - D. По сути, D-это 13 число в 16-ричной с.с. (более подробно 16-ричная с.с - это 1,2,3,4,5,6,7,8,9,A(10),B(11),C(12),D(13),E(14),F(15));
смотрим, как число 13 можно разложить по числам 1,2,4,8(см раскладку степеней двойки). 8 влезает в 13 один раз, ставим 1. Остаток 13-8=5. 4 влезает 5 один раз, ставим 1. остаток 5-4=1. 2 не влезает в 1, ставим 0. И на 1 ставим 1. Т.е. первая четверка двочного числа равна 1101.
Теперь разбираем вторую цифру 16-ричного числа D. Выше было рассказано, как это сделать. Итого, получаем, что DD в 16с.с = 11011101 в двоичной.
Теперь пеерводим 337 из восьмеричной в двоичную
пишем раскладку степеней двойка
1
2
4
(8 не берем, т.к в восьмеричной с.с нет числа 8)ж
берем первую цифру числа 337 - это 3. Раскладываем по степеням двойки и получаем, что первая двоичная тройка этого числа равна 011 (4 в 3 не влезает, 2 влезает один раз, остаток-один). со второй тройкой аналогично - получаем 011. Теперь 7: 111 (4 влезает 1 раз, остаток-3, двойка в 3 влезает 1 раз, остаток-1, и последняя единица)
Итого получаем 337 в восьмеричной с.с. = 011011111, но 0 в начале числа не пишут, поэтому получаем 11011111
выписываем полученные двоичные числа
DD= 11011101
337=11011111
по условию нам нужно найти число, которое стоит между этими. Для себя я делаю так, все 1 заменяю на 9, а 0 - на 8, мне так проще. получается, что
DD=99899989
337=99899999
очевидно, что между ними стоит число 99899990 или, переводя обратно, 11011110 - вот и ответ
Program Type1;
Var X1, Y1, X2, Y2: Integer;
BeginWriteLn('X1 = ');
ReadLn(X1);
WriteLn('Y1 = ');
ReadLn(Y1);
WriteLn('X2 = ');
ReadLn(X2);
WriteLn('Y2 = ');
ReadLn(Y2);
If (X1 = -X2) And (Y1 = -Y2) Then
WriteLn('Точки симметричны относительно начала координат')
Else If (X1 = -X2) And (Y1 = Y2) Then
WriteLn('Точки симметричны относительно оси Y')
Else If (X1 = X2) And (Y1 = -Y2) Then
WriteLn('Точки симметричны относительно оси X')
Else
WriteLn('Точки не симметричны');
ReadLn;
End.
Без использования составных условий:
Program Type2;
Var X1, Y1, X2, Y2: Integer;
Begin
WriteLn('X1 = ');
ReadLn(X1);
WriteLn('Y1 = ');
ReadLn(Y1);
WriteLn('X2 = ');
ReadLn(X2);
WriteLn('Y2 = ');
ReadLn(Y2);
If (X1 + X2 = 0) And (Y1 + Y2 = 0) Then
WriteLn('Точки симметричны относительно начала координат')
Else If (X1 + X2 = 0) And (Abs(Y1) - Abs(Y2) = 0) Then
WriteLn('Точки симметричны относительно оси Y')
Else If (Abs(X1) - Abs(X2) = 0) And (Y1 + Y2 = 0) Then
WriteLn('Точки симметричны относительно оси X')
Else
WriteLn('Точки не симметричны');
ReadLn;
End.