1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
program n3;
uses crt;
var x:shortint;
y:longint;
begin
write('Введите x: ');
readln(x);
if (x<0) then y:=2*x+3elseif (x>0) and (x<=100) then y:=sqr(x)*x+1else y:=abs(x);
writeln('y= ',y);
readln;
end.
не пому почему считает не правильно когда задаешь например 99, ведь результат вроде вписывается в тип Longint?
В LongInt - то вписывается, но Паскаль делает не так, как тебе хочется. Он сначала возводит число в квадрат (а поскольку аргумент - типа ShortInt, то и результат такого же типа, все что не поместилось - усекается), потом домножает на X (опять же в рамках ShortInt) и только потом, после прибавления 1 конвертирует результат в LongInt... Поищи по форуму по слову 90000, если не ошибаюсь, найдешь тему, где это объяснялось.
не пому почему считает не правильно когда задаешь например 99, ведь результат вроде вписывается в тип Longint?
Когда ты вычисляешь это:
y:=sqr(x)*x+1
- у тебя сначала вычисляется выражение в правой части, а потом оно присваивается переменной в левой части. Переменная в левой части - LongInt, но на этапе вычисления про лонгинт никто не знает. Компилятор считает, что ты работаешь с ShortInt. Соответственно, результат должен влезать в диапазон ShortInt, а он явно не влезает. Ты либо поменяй тип x на LongInt, либо делай явное преобразование типов:
y:=sqr(LongInt(x))*x+1
Но это нужно делать тогда и в предыдущей формуле, так что лучше будет описать х как длинное целое. Если это нельзя (например, у тебя массив большой), то перед вычисление перекладывай значение х в z, которая длинная.
Добавлено через 3 мин. Сорри за дублирование, опоздал))..
--------------------
я - ветер, я северный холодный ветер я час расставанья, я год возвращенья домой