Вопрос № 102113: Уважаемые эксперты! Помогите решить 2 задачи:
1. Перевести числа из десятичной системы счисления в двоичную и шестнадцатеричную для каждого типа данных языка Паскаль (Byte, ShortInt, Integer, Word, Longint). Числа: 60, -40, 160, -90, 5010, -4900,...
Вопрос № 102.113
Уважаемые эксперты! Помогите решить 2 задачи:
1. Перевести числа из десятичной системы счисления в двоичную и шестнадцатеричную для каждого типа данных языка Паскаль (Byte, ShortInt, Integer, Word, Longint). Числа: 60, -40, 160, -90, 5010, -4900, 50010, 9990.
2. Даны 3 числа. Определить вид треугольника, для которого эти числа являются длинами сторон. (Меня интересует самый простой вариант решения этой задачи).
Заранее огромное спасибо! Swallow.
Отправлен: 15.09.2007, 11:03
Вопрос задала: Ласточка (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Tenevoi
Здравствуйте, Ласточка!
1.
что-то мне плохо представляются все эти числа в каждом из типов данных...
можно сделать крайне простую вещь:
а - число какого-то типа(не принципиально)
b - размерность типа в битах(важно)
s - String
c - чисто того же типа что и a
c:=1;
for i:=1 to b do begin
if (a and c = 0) then
s[i]:='0'
else
s[i]:='1'
if i<>b then c:=c*2;
end
после чего инвентируем строку
если надо перевести в 16-тиричную систему, то можно рассматривать по 4 символа у этой строки и преобразовывать, к примеру "1101" = 13{если десятичная} = 'D'{16-ти}
составляю требуемую строку
2.
просто сравнить стороны
1)2 стороны равны - равнобедренный
2)3 стороны равны - равносторонний
3)если сумма квадратов меньших сторон = большей стороне в квадрате - прямоугольный
2-й пункт исключает 1-й и 3-й
Ответ отправил: Tenevoi (статус: 2-ой класс)
Ответ отправлен: 15.09.2007, 11:28 Оценка за ответ: 4 Комментарий оценки: Не то, что я бы хотела получить в качестве ответа на мой вопрос. Но в любом случае спасибо, что просто мне ответили.
Отвечает: Boris Rubo
Здравствуйте, Ласточка!
Вторую задачу проще всего решать через синусы углов. Вы сразу сможете определить равнобедренный, прямоугольный ли это треугольник, а также и остальные характеристики треугольников.
Ответ отправил: Boris Rubo (статус: 2-ой класс)
Ответ отправлен: 15.09.2007, 15:54 Оценка за ответ: 4 Комментарий оценки: Честно говоря, для меня это будет ещё сложнее... В любом случае, спасибо за совет, Boris Rubo.
Отвечает: _killhunter_
Здравствуйте, Ласточка!
Приведу свой вариант решения задачи №2
1. проверим существует ли треугольник с такими сторонами.
2. если существует, то найдем самую длиную сторону (назовем ее "с") и проверем знак выражения c*c-a*a-b*b (1)
если (1) < 0, то треугольник остроугольный
если (1) = 0, то треугольник прямоугольный
если (1) > 0, то треугольник тупоугольный
в приложении примерный текст программы
Приложение:
Ответ отправил: _killhunter_ (статус: 1-ый класс)
Ответ отправлен: 17.09.2007, 12:15 Оценка за ответ: 5 Комментарий оценки: Огромное спасибо за помощь,_killhunter_!
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Ласточка!
Все числа данны в 16-ой системе для типа Longint(для других типов обрасываются разряды слева), в скобках возможные типы данных.
60=00000003Ch(Byte,ShortInt,Integer,Word, Longint);
-40=0FFFFFFD8h(ShortInt,Integer,Longint);
160=0000000A0h(Byte,Integer,Word,Longint);
-90=0FFFFFFA6h(ShortInt,Integer,Word,Longint);
5010=000001392h(Integer,Word,Longint);
-4900=0FFFFECDCh(Integer,Longint);
9990=000002706h(Integer,Word,Longint);
50010=00000C35Ah(Longint);
Для перевода в 2-ю ситсему каждую цифру в приведенных числах заменяете на
0=0000;1=0001;2=0010;3=0011;
4=0100;5=0101;6=0110;7=0111;
8=1000;9=1001;A=1010;B=1011;
C=1100;D=1101;E=1110;F=1111;
Удачи!
--------- И только наступив на грабли мы приобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Специалист)
Ответ отправлен: 19.09.2007, 11:07 Оценка за ответ: 5 Комментарий оценки: Огромное спасибо за решение первой задачи, Константин Николаевич! Вы мне очень помогли!