Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > Max и min с помощью циклов


Автор: rojam 6.7.2006, 07:02
Помогите советом, в решении задачи!
 Найдите наибольшее и наименьшее значение функции f(x)=3x^2+x-4, если на заданном промежутке [Xmin;Xmax] аргумент меняется с шагом dx. 
Решение только циклами!

Вот мой набросанный исходный код. Уажите на ошибки.

Код

var
 y,xmax,xmin,dx,y1,x,min,max: real;
 i: integer;
begin
 write('Vvedite Xmin: ');
 readln(xmin);
 write('Vvedite Xmax: ');
 readln(xmax);
 write('Vvedite shag dx: ');
 readln(dx);

 x:=xmin;
 y1:= 3*sqr(x)+x-4;
 while x<(xmax+dx/2) do begin
    y:= 3*sqr(x)+x-4;

    if y>y1 then max:=y
    else if y = y1 then y1:=y
    else min:=y;

    if y<y1 then max:=y1
    else if y = y1 then y1:=y
    else min:=y1;

    x:= x+dx;
    y1:=y;
    end;
    writeln('Ymax: ',max:0:2,' Ymin: ', min:0:2);
    readln
end.
 

Автор: Palladin 6.7.2006, 08:21
Писал навскидкуsmile

Код


Program RooR;
var
xmin,xmax:real;
f,dx,min,max:real;
Writeln('vvedite xmin:');
Readln(xmin);
Writeln('Vvedite xmax');
Readln(xmax);
Writeln('vveddite dx');
Readln(dx);
  if xmax>xmin then 
    begin
      min:=3*xmin*xmin+xmin-4;
      max:=3*xmin*xmin+xmin-4;
         repeat 
           f:=3*xmin*xmin+xmin-4;
           xmin:=xmin+dx;
           if min>f then min:=f;
           if max<f then max:=f;
         until xmax>xmin;
      end;

Writeln('Max функции:',max:4:4);
Writeln('Min функции:',min:4:4);
Writeln('F=',f:4:4);
Readln;
end.


Должно работатьsmile smile

Добавлено @ 08:23 
Щас просто на экзамен спешу, приду проверю код, но вроде этот должен работать

P.S. Volvo спасибо что репутациию мне скинул, век не забуду, понимаю еслиб за дело smile   

Автор: Palladin 6.7.2006, 11:29
Вот так точно правильно, проверилsmile


Код

Program RooR;
var
xmin,xmax:real;
f,dx,min,max:real;
begin
Writeln('vvedite xmin:');
Readln(xmin);
Writeln('Vvedite xmax');
Readln(xmax);
Writeln('vveddite dx');
Readln(dx);
  if xmax>xmin then
    begin
      min:=3*xmin*xmin+xmin-4;
      max:=3*xmin*xmin+xmin-4;
         repeat
           f:=3*xmin*xmin+xmin-4;
           xmin:=xmin+dx;
           if min>f then min:=f;
           if max<f then max:=f;
         until xmax>xmin;
      end;

Writeln('Max:',max:4:4);
Writeln('Min:',min:4:4);
Readln;
end.
 

Автор: Palladin 6.7.2006, 19:49
Автор ты вообще заходил в топик, отпиши чтонить smile  

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