Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2020, 22:52   #1
Даниил1234
Новичок
Джуниор
 
Регистрация: 27.04.2020
Сообщений: 1
По умолчанию при вводе любого числа в ответе выдает 0

program qq;
var x, y: integer;
begin
writeln (x);
readln (x);
if x <= 0
then y:= 2*x + 3
else
if (x<=100) and (x>0)
then y:= x * x * x + 1
else
if (x>0) and (x>=100)
then y:= Abs (x)
else
writeln (y);
end.
Даниил1234 вне форума Ответить с цитированием
Старый 28.04.2020, 00:04   #2
Desc
Участник клуба
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 1,063
По умолчанию

Код:
program OK;
var x: integer;
begin
Readln (x);
Writeln (x);
if (x<=0) then
Writeln (2*x+3)
else
if (x>0) and (x<=100) then
Writeln (x*x*x+1)
else
if (x>100) then
Writeln (Abs(x));
Readln;
end.
I am not a wizard, I am just learning.

Последний раз редактировалось Desc; 28.04.2020 в 02:35. Причина: Удалил не используемую переменную
Desc вне форума Ответить с цитированием
Старый 28.04.2020, 10:19   #3
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

Без лишних заморочек во вложенном условном операторе:
Код:
program OK;
var x: integer;
begin
Readln(x);
Writeln(x);
if (x<=0) then  {тут x <= 0}
    Writeln(2*x+3)
else  {тут x > 0 и можно просто}
    if (x<=100) then  {тут 0 < x <= 100}
        Writeln(x*x*x+1)
    else  {тут x > 0 и x > 100}
        Writeln(x); {это число > 0 и |x| = x. Нет смысла в вызове функции Abs()}
Readln;
end.
С использованием второй переменной:
Код:
program OK;
var x, y: integer;
begin
Readln(x);
Write(' x = ', x);
if (x<=0) then  {тут x <= 0}
    y := 2*x+3
else  {тут x > 0 и можно просто}
    if (x<=100) then  {тут 0 < x <= 100}
        y := x*x*x+1
    else  {тут x > 0 и x > 100}
        y := x; {это число > 0 и |x| = x. Нет смысла в вызове функции Abs()}
Writeln('   y = ', y);
Readln;
end.
Вероятно, что за неправильный ответ
Цитата:
при вводе любого числа в ответе выдает 0
принимался вывод значения x
Код:
...
writeln (x);
...
, который стоит перед вводом значения x. Компилятор Паскаля очищает такие переменные перед запуском программы.
Используйте текстовые вставки, как например показано выше, для правильного понимания выводимых значений.
Такой стиль вывода можно использовать и при отладке программы - отладка принтами (калька от print).

PS: Не стоит привыкать к пробелам между именем функции и скобками, в которых заключены параметры вызова.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При вводе числа (enterid) 1 или 2, должна выводиться информация написанная в cout, но что бы я не ввел, программа выдает весь текст mrxdata Общие вопросы C/C++ 11 09.08.2019 14:11
Написал код , но в ответе выдает 0 hiller123 C# (си шарп) 2 29.05.2017 19:51
В чем ошибка? В ответе выдает нули. Fatalita Помощь студентам 2 31.03.2012 20:03
Почему в ответе компилятор выдает -0 (минус 0)? Igorec Помощь студентам 0 01.04.2010 08:53