Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 445
от 21.09.2007, 08:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 244, Экспертов: 56
В номере:Вопросов: 1, Ответов: 4


Вопрос № 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
Комментарий оценки:
Огромное спасибо за решение первой задачи, Константин Николаевич! Вы мне очень помогли!


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.59 от 18.09.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное