Показать сообщение отдельно

  #6  
Старый 12.09.2009, 13:19
geforse
Постоянный
Регистрация: 02.03.2008
Сообщений: 893
С нами: 9574565

Репутация: 712


Question

Составить структурированнуб программу преобразования заданных вещественных хначений Х и Т по правилу:
  • если Х < 0, то X и Т заменить модулем
  • если X < 0 или T < 0, то Х и Т увеличить на 0.5
  • если Х > T и Т > 0 и ни одно из них не принадлежит отрезку [0.5-2], то Х и Т * 10
в противном случае Х и Т оставить без изменеий

Код:
program z1n17;
 uses crt;
 var
  x,t: real;
 begin
  clrscr;
  writeln ('Enter X,T');
  read(x,t);
  if (x < 0) and (t < 0) then { ШАГ 1 }
                           begin
                            x:=abs(x);
                            t:=abs(t);
                            clrscr;
                            writeln('Result:');
                            writeln('|X|=', x:5:3, ' and |T|=', t:5:3);
                           end

                          else

                           if (x < 0) or (t < 0) then { ШАГ 2 }
                                                   begin
                                                    x:=x+0.5;
                                                    t:=t+0.5;
                                                    clrscr;
                                                    writeln('Result:');
                                                    writeln('X+0.5=', x:5:3, ' and T+0.5=', t:5:3);
                                                   end

                                                  else

                                                   if (x>0) and (t>0) and (x<0.5) and (x>2) and (t<0.5) and (t>2) then { ШАГ 3 }
                                                                                                                    begin
                                                                                x:=x*10;
                                                                                t:=t*10;
                                                                                clrscr;
                                                                                writeln('Result:');
                                                                                writeln('X*10=', x:5:3, ' and T*10=', t:5:3);
                                                                                                                     end

                                                                                                                  else

                                                                                                                    begin

                                                                                clrscr;
                                                                                writeln('Result:');
                                                                                writeln('X=', x:5:3, ' and T=', t:5:3);
                                                                                writeln;
                                                                                writeln('Without changes');
                                                                                                                    end;
  read(x);
 end.
Вот у меня проблема на шаге 3:

if (x>0) and (t>0) and (x<0.5) and (x>2) and (t<0.5) and (t>2)

Это условие ни в какую не хочет работать

P.S. После третьего условия у меня действия "смещены" влево, т.к. в паскале повидимому ограничение на количество символов в строке.
Это как-то можно обойти, чтобы код выглядил "красиво" ?) (но это не принципиально, главная проблема с условием)

P.S.S. первая прога на паскале)
 
Ответить с цитированием