![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Account |
![]()
Сообщение
#1
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: ![]() ![]() ![]() |
есть вот такая прога
program n3; не пому почему считает не правильно когда задаешь например 99, ведь результат вроде вписывается в тип Longint? |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
В LongInt - то вписывается, но Паскаль делает не так, как тебе хочется. Он сначала возводит число в квадрат (а поскольку аргумент - типа ShortInt, то и результат такого же типа, все что не поместилось - усекается), потом домножает на X (опять же в рамках ShortInt) и только потом, после прибавления 1 конвертирует результат в LongInt... Поищи по форуму по слову 90000, если не ошибаюсь, найдешь тему, где это объяснялось.
|
Account |
![]()
Сообщение
#3
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата Поищи по форуму по слову 90000 Что то не нашел((( |
Lapp |
![]()
Сообщение
#4
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
не пому почему считает не правильно когда задаешь например 99, ведь результат вроде вписывается в тип Longint? Когда ты вычисляешь это: y:=sqr(x)*x+1 - у тебя сначала вычисляется выражение в правой части, а потом оно присваивается переменной в левой части. Переменная в левой части - LongInt, но на этапе вычисления про лонгинт никто не знает. Компилятор считает, что ты работаешь с ShortInt. Соответственно, результат должен влезать в диапазон ShortInt, а он явно не влезает. Ты либо поменяй тип x на LongInt, либо делай явное преобразование типов: y:=sqr(LongInt(x))*x+1 Но это нужно делать тогда и в предыдущей формуле, так что лучше будет описать х как длинное целое. Если это нельзя (например, у тебя массив большой), то перед вычисление перекладывай значение х в z, которая длинная. Добавлено через 3 мин. Сорри за дублирование, опоздал)).. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Цитата Что то не нашел((( Что значит "не нашел"? ![]() |
Account |
![]()
Сообщение
#6
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: ![]() ![]() ![]() |
volvo, ЗВИНЯЙ, тему то нашел, а невнимательно посмотрел. СПАСИБО!!!
|
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 2:30 |