• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите с программой в паскале

  • Автор темы Автор темы JCHacker
  • Дата начала Дата начала

JCHacker

Новые
Регистрация
23 Июл 2008
Сообщения
584
Реакции
6
Баллы
0
Помогите с программой в паскале

Ссылка удалена
program A2;
var a,b,s,p:real;
begin
writeln ('vvedite p');
readln(p);
writeln('vvedite a');
readln(a);
writeln ('vvedite b');
readln(b);
if (p<=2.5) and (p<a) then
s:=(sqr(a)-p)/(b*(ln(b+p)/ln(2))
else if (p<4) and (p<=b) then
s:=(3.51*sqrt(p))/(a-1)
else writeln ('nevernoe uslovye');
writeln ('s=',s);
readln
end.

выдает ошибку else if (p<4) and (p<=b) then
 
выдает ошибку else if (p<4) and (p<=b) then
Правильно выдает - потому что в предыдущей строке не хватает закрывающей скобки.
А еще у Вас неправильно заданы неравенства
(p<=2.5) and (p<a)
и
(p<4) and (p<=b)
В обеих строках неравенства в ПЕРВЫХ скобках должны быть обратными.
 
Правильно выдает - потому что в предыдущей строке не хватает закрывающей скобки.
А еще у Вас неправильно заданы неравенства
(p<=2.5) and (p<a)
и
(p<4) and (p<=b)
В обеих строках неравенства в ПЕРВЫХ скобках должны быть обратными.
если так
(p<=2.5) and (p<a)
и
(p>4) and (p>=b)
то получается то же самое
а может ли так
(p>=2.5) and (p<a)
и
(p>4) and (p<=b)
 
Последнее редактирование:
а может ли так
(p>=2.5) and (p<a)
и
(p>4) and (p<=b)
Вот именно ТАК! И только ТАК!
А вообще - в математике следует не гадать на кофейной гуще, а разобраться.
Двойное неравенство
2.5 ≤ p < a
читается, как "p больше или равно 2.5, но меньше а". В Паскале двойные неравенства не предусмотрены, поэтому условия нужно задать порознь и соединить их логическим отношением "и" ("and"). При этом, если мы меняем местами члены неравенства, то отношение их друг к другу должно остаться тем же, т.е. на кого из них "смотрело" острие знака "<", "≤", ">" или "≥", на того и должно смотреть, так же, как и "раструб". Поэтому указанное неравенство записываем так:
(p ≥ 2.5) and (p < a).
 
все равно получается та же ошибка

Вот именно ТАК! И только ТАК!
А вообще - в математике следует не гадать на кофейной гуще, а разобраться.
Двойное неравенство
2.5 ≤ p < a
читается, как "p больше или равно 2.5, но меньше а". В Паскале двойные неравенства не предусмотрены, поэтому условия нужно задать порознь и соединить их логическим отношением "и" ("and"). При этом, если мы меняем местами члены неравенства, то отношение их друг к другу должно остаться тем же, т.е. на кого из них "смотрело" острие знака "<", "≤", ">" или "≥", на того и должно смотреть, так же, как и "раструб". Поэтому указанное неравенство записываем так:
(p ≥ 2.5) and (p < a).

если я делаю так
program A2;
var a,b,s,p:real;
begin
writeln ('vvedite p');
readln(p);
writeln('vvedite a');
readln(a);
writeln ('vvedite b');
readln(b);
if (p>=2.5) and (p<a) then
s:=(sqr(a)-p)/(b*(ln(b+p)/ln(2))
else if (p>4) and (p<=b) then
s:=(3.51*sqrt(p))/(a-1)
else writeln ('nevernoe uslovye');
writeln ('s=',s);
readln
end.
то все равно получается та же ошибка
 
то все равно получается та же ошибка
Дорогой товарищ!
Может быть, Вы всё-таки соблаговолите ВНИМАТЕЛЬНО прочитать то, что я написал в #2? А написано там следующее - ладно уж, для особо рассеянных повторю:
1. В программе ошибка - не хватает закрывающей скобки в строке
s:=(sqr(a)-p)/(b*(ln(b+p)/ln(2))
Отсюда и ошибка.
2. Неправильно записаны неравенства. Это - дополнительное замечание, никакого отношения к ошибке не имеющее. Просто если не исправить, то программа будет работать неправильно.
Пункт первый Вы проигнорировали - так чего Вы от меня хотите?
 
Назад
Сверху