Помогите написать прогу (цикл repeat-until, while-do)

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Medved
Сообщения: 256
Зарегистрирован: 14 фев 2008, 20:51
Контактная информация:

&quot писал(а):Цитата:
Сообщение от Хыиуду Посмотреть сообщение
2 MotoCoder:
Функция pow с двумя аргументами тут немного лишняя. Все равно в программе используется только возведение в куб. Так что проще
function cube(x:integer):integer; begin cube:=x*x*x; end;
Пытался сделать так, но программа вырубается из-за runtime-ошибки.
К тому же, функцию я брал из другой своей программы.
Возможно потому, что x*x*x > maxint ?
Ваши руки совершили идиотскую ошибку и будут оторваны!
[OK]
Medved
Сообщения: 256
Зарегистрирован: 14 фев 2008, 20:51
Контактная информация:

Попробуй сделать function cube(x:integer):longint ; { а лучше int64 в фри паскале} cube:=x*x*x; end;
Ваши руки совершили идиотскую ошибку и будут оторваны!
[OK]
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

Скорее всего так оно и есть, хотя если отрубить проверку переполнения, то просто получится отрицательное значение(хотя возможно я не прав).
Ни что так не ограничивает фантазию программиста, как компилятор...
Medved
Сообщения: 256
Зарегистрирован: 14 фев 2008, 20:51
Контактная информация:

Ты прав! В интегер можно добавлять до опупения без range check - он по кругу закручен (в паскале, а в делфе не пробовал) А весело - в делфе:
integer --> -2000000000..2000000000 (точно не помню)
longint --> integer
Ваши руки совершили идиотскую ошибку и будут оторваны!
[OK]
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Если число N - integer, а цикл идет до его кубического корня, то х*х*х переполнения не даст
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить