Задачка на Pascal

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by LASS0, 11 Mar 2009.

  1. LASS0

    LASS0 Member

    Joined:
    3 Jan 2009
    Messages:
    0
    Likes Received:
    17
    Reputations:
    1
    Помогите пожалуйста решить задачку двумя способами, через цикл repeat until
    и через for

    --------------------------------------------------
    Дано a=2.8 , b=-0.3 , c=4
    Вычислить и напечатать значение функции:

    y=(a+b*x)/sqrt(x*x+4) ,если x<1.4
    y=a*(x*x)+b*x+c ,если x=1.4
    y=a/x+exp(a*b) ,ecли x>1.4

    где x изменяется в интервале от 0.8 до 2.8 с шагом 0.2
    --------------------------------------------------

    Через while do смог написать, а через repeat until
    и через for незнаю :(



    Code:
    Program z1;
    uses crt;
     var a,b,c,x,y:real;
    
     begin 
      a:=2.8;
      b:=-0.3;
      c:=4;
      x:=0.8;
        while x<2.8 do
           begin if x<1.4 then
              y:=(a+b*x)/sqrt(x*x+4)
              else 
              if x=1.4 then
              y:=a*(x*x)+b*x+c
              else 
              y:=a/x+exp(a*b);
                writeln ('x=',x:8:2,' y=',y:8:2);
              x:=x+0.2;
           end;
     readkey;
     end.
     
  2. eLWAux

    eLWAux Elder - Старейшина

    Joined:
    15 Jun 2008
    Messages:
    860
    Likes Received:
    616
    Reputations:
    211
    через while:
    Code:
    program _while;
    uses crt;
    const a  = 2.8;
          b  = -0.3;
          c  = 4;
          x0 = 0.8;
          xE = 2.8;
          h  = 0.2;
    var
     x,y:double;
    
    begin
     x:=x0;
     clrscr;
     while x<xE do begin
           if x<1.4 then y:=-1 else
           if x=1.4 then y:=0  else
           if x>1.4 then y:=1;
           writeln('x =',x:3:3,',  y =',y:3:3);
           x:=x+h;
     end;
    
     readln;
    end.
     
  3. eLWAux

    eLWAux Elder - Старейшина

    Joined:
    15 Jun 2008
    Messages:
    860
    Likes Received:
    616
    Reputations:
    211
    через repeat..until:
    Code:
    program _for;
    uses crt;
    const a  = 2.8;
          b  = -0.3;
          c  = 4;
          x0 = 0.8;
          xE = 2.8;
          h  = 0.2;
    var
     x,y:double;
    begin
     x:=x0;
     clrscr;
     repeat
           if x<1.4 then y:=-1 else
           if x=1.4 then y:=0  else
           if x>1.4 then y:=1;
           writeln('x =',x:3:3,',  y =',y:3:3);
           x:=x+h;
     until x>xE;
    
     readln;
    end.
     
  4. RedAlert

    RedAlert Elder - Старейшина

    Joined:
    26 May 2008
    Messages:
    66
    Likes Received:
    10
    Reputations:
    0
    eLWAux опередил :)
     
    #4 RedAlert, 11 Mar 2009
    Last edited: 11 Mar 2009