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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.09.2011, 16:33   #1
JL25A
Пользователь
 
Регистрация: 06.08.2011
Сообщений: 11
По умолчанию Для данной области составить линейную программу

Для данной области составить линейную программу, которая печатает true, если точка с координатами (х, у) принадлежит закрашенной области, и false — в противном случае

вот что я набросал, но тут ошибки в коде..что не так? Подскажите пожалуйста
Код:
var x,y: real;
    ind:integer;
begin
 write('Введите x: '); readln(x);
 write('Введите y: '); readln(y);
ind:=0;
if (x>-3) and (x<0) then 
if (y>0) and sqrt(9-x*x) then ind:=1;
if (x>0) and (x<6) and (y>0) and (y<3-x/2) then ind:=1;
if(ind=1) then 
writeln('true') else writeln('false'); 
readln;
end.

Последний раз редактировалось JL25A; 26.09.2011 в 10:37.
JL25A вне форума Ответить с цитированием
Старый 26.09.2011, 10:58   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Например, sqrt(9-x*x) вылез за скобки. Да и это выражение должно вернуть true или false, а не корень из чего-то там, как и
Код:
(y<3-x/2)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 26.09.2011 в 11:02.
Alex11223 вне форума Ответить с цитированием
Старый 26.09.2011, 11:00   #3
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Код:
if (x > -3) and (x < 6) and  (y > 0) and (y < 3) and (x * x + y * y < 9) and (x + 2 * y -6 < 0) then
Примерно так
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 26.09.2011, 11:18   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Vanta11a, общая идея правильная.

только нужно всё таки по диапазонам разделять.
вот, например, если ввести X=3 и Y=1 - получите, что точка не входит!

я бы предложил примерно так:
Код:
WriteLn(
 ((x > -3) and (x < 0) and  (y > 0) and (x * x + y * y < 9))
 or ((x > 0) and (x < 6)  and (y > 0) and (y < 3) and (x + 2 * y -6 < 0)))
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.09.2011, 11:20   #5
JL25A
Пользователь
 
Регистрация: 06.08.2011
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Vanta11a Посмотреть сообщение
Код:
if (x > -3) and (x < 6) and  (y > 0) and (y < 3) and (x * x + y * y < 9) and (x + 2 * y -6 < 0) then
Примерно так
спасибо тебе большое, выручил

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Vanta11a, общая идея правильная.

только нужно всё таки по диапазонам разделять.
вот, например, если ввести X=3 и Y=1 - получите, что точка не входит!

я бы предложил примерно так:
Код:
WriteLn(
 ((x > -3) and (x < 0) and  (y > 0) and (x * x + y * y < 9))
 or ((x > 0) and (x < 6)  and (y > 0) and (y < 3) and (x + 2 * y -6 < 0)))
Благодарю)

Последний раз редактировалось Stilet; 26.09.2011 в 13:24.
JL25A вне форума Ответить с цитированием
Старый 26.09.2011, 11:27   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

JL25A, обратите внимание на мой пост выше!

да и if в данной программе совсем не нужен (просили же составить ЛИНЕЙНУЮ программу)!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.09.2011, 13:12   #7
JL25A
Пользователь
 
Регистрация: 06.08.2011
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
JL25A, обратите внимание на мой пост выше!

да и if в данной программе совсем не нужен (просили же составить ЛИНЕЙНУЮ программу)!
Вот мне уже помогли составить программу, тут полегче вроде как)
Код:
var x,y: real;
    f:boolean;
begin
 write('Введите x: '); readln(x);
 write('Введите y: '); readln(y);
f:=((x>=-3)and (x<=0)and(y>=0) and (y<=sqrt(9-x*x)))
 or((x>0)  and (x<=6)and (y>=0)and (y<=3-x/2));
write(f);
end.
JL25A вне форума Ответить с цитированием
Старый 26.09.2011, 20:49   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
тут полегче вроде как)
а по моему - то же самое!

ну, во-первых, согласен. Это вполне себе рабочая программа.
Но можно и проще.
я же такой вариант предлагал (вот ПОЛНЫЙ код программы):
Код:
var x,y: real;
begin
 write('Введите x: '); readln(x);
 write('Введите y: '); readln(y);
 WriteLn(
 ((x > -3) and (x < 0) and  (y > 0) and (x * x + y * y < 9))
 or ((x > 0) and (x < 6)  and (y > 0) and (y < 3) and (x + 2 * y -6 < 0)));
  Readln; {Ждем нажатия Enter (это чтобы программа сразу не закрывалась) }
end.
да. есть только одна ПРИНЦИПИАЛЬНАЯ разница:
если точка попадает на границу области - считать, что она принадлежит области или нет..
если неравенства строгие (как у меня) - то точки на границах НЕ ВХОДЯТ в область,
если неравенства нестрогие (как у Вас) - то входят.
А как правильно - решать Вам (обычно в условиях задачи это оговаривается,
если не оговорено - программист волен поступать так, как он сам считает нужным/правильным!).

Последний раз редактировалось Serge_Bliznykov; 26.09.2011 в 20:52.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составить программу для вычисления функции у(х) grongost Помощь студентам 2 21.02.2011 19:45
. Составить программу для вычисления степеней чисел Figushkin Помощь студентам 0 05.06.2010 17:40
Составить программу для игры в домино igarek222 Помощь студентам 0 01.06.2010 20:03
Составить программу для n-разрядных чисел LiptonICE Помощь студентам 18 06.05.2010 09:08
8. Составить программу для расчета выражения ivil19 Помощь студентам 4 11.03.2010 18:25