Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > задача на условие IF


Автор: luna 30.3.2007, 22:19
Помогите пожалуйста...столько вариантов перпробывала и не получается....
а истина где то рядом....
текс задачи: 
Задайте два числа a и b. и проверте...если точка с координатами (a;b) попадает в область рисунка, то проверить на условие: 
a>b, то z=b-2;
если нет то z=a*a-b.
если не попадает на область рисунка, то z=a+b.
Рисунок тут: 
http://www.e1.ru/fun/photo/view_album.php?id=82259&pic=c2525ffe95bb9126953ec7a866e4de00&page=0#top
файл прикреплю...

Добавлено через 1 минуту и 22 секунды
заранее спасибо...
я просто уже не знаю как и написать ее...
 smile

Добавлено через 11 минут и 19 секунд
я запуталась в условиях...где то лишее написала..где то не знаю, что дописать...

Автор: powerfox 30.3.2007, 22:36
Код

program coords;
var
a,b,z:Integer;
begin
if (not ( (a>0) and (b>0) ) ) and ( (a*a+b*b) = 36) then
 if a > b then
    z:=b-2
 else
    z:=a*a-b
else
 z:=a+b;
end.


Добавлено через 2 минуты и 22 секунды
Поправил, забыл про окружность.

Автор: luna 30.3.2007, 22:45
это так и писать....или там еще надо Begin дописывать где-то?*?

Автор: powerfox 30.3.2007, 22:51
luna, это полный код. Если будешь дописывать внутрь ифоф свои writeln'ы, то операторные скобки (begin/end) потребуются.

Автор: luna 30.3.2007, 22:54
спасибо щас...допишу и проверю...если все как надо....тогда супер....

Добавлено через 9 минут и 36 секунд
хм....ен получается....
при проверке: 
a=-2
b=-3
он должен писать: Попадает в область, z=-5.
а он пишет не попадает
и так со всеми другими координатами...выдает не правильные ответы...
прикрепляю файл который изменила...

Автор: powerfox 30.3.2007, 23:17
Неправильно расставили операторные скопки.

Код

Program kontrolnaya;
uses crt;
var a,b,z:integer;
Begin
clrscr;
Writeln('a: ');
Readln(a);
Writeln('b: ');
Readln(b);

    If (not ( (a>0) and (b>0))) and ((a*a+b*b)<=36) then
     begin
    Writeln('Point (a;b) is on the image area');
           if a>b then
        begin
        z:=b-2;
        writeln('a>b. We count z like z:=b-2');
        end
           else
        begin
        writeln('a<b, so z:=a*a - b');
        z:=a*a-b;
        end;
     end
    else
      begin
      writeln('Point (a;b) is not on the image area');
      z:=a+b;
      end;
Writeln('z:=',z);
Readln;

end.



Добавлено @ 23:18
Пожалуйста, форматируйте нормально ваш код!

Автор: luna 30.3.2007, 23:40
 smile 
черт не получается
а что за сообщения в скобках на англ.языке?
я просто новичок в паскале...вроед понимаю все что написано...а с проверкой не сходиться... smile 

Автор: powerfox 31.3.2007, 11:33
Цитата(luna @  31.3.2007,  00:40 Найти цитируемый пост)
черт не получается

Что именно? Я проверил, всё пашет...


Цитата(luna @  31.3.2007,  00:40 Найти цитируемый пост)
а что за сообщения в скобках на англ.языке?


Цитата(powerfox @  31.3.2007,  00:17 Найти цитируемый пост)
Point (a;b) is on the image area

Точка (a;b) лежит в области рисунка


Цитата(powerfox @  31.3.2007,  00:17 Найти цитируемый пост)
a<b, so z:=a*a - b

a<b, поэтому z:=...


Цитата(powerfox @  31.3.2007,  00:17 Найти цитируемый пост)
a>b. We count z like z:=b-2

a>b. Мы находим z, как z:=b-2


Цитата(powerfox @  31.3.2007,  00:17 Найти цитируемый пост)
Point (a;b) is not on the image area

Точка (a;b) не принадлежит области рисунка.

Добавлено через 4 минуты и 12 секунд
Виноват, я поставил = вместо <= + end один забыл, когда дописывал writeln; Исправил.

Автор: luna 1.4.2007, 10:32
Огромное спасибо, вот сейчас все работает!
 smile  smile 
 smile  Вы супер! 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)