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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2012, 16:09   #1
Начинающий_Дэльфер
 
Регистрация: 04.12.2012
Сообщений: 7
По умолчанию Missing operator or semicolon ошибка в алгоритме

Здравствуйте! помогите с Delphi! Подскажите где что не так!? все пересмотрел не могу понять!


Код:
 unit Unit6;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm6 = class(TForm)
    RadioGroup1: TRadioGroup;
    Memo1: TMemo;
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form6: TForm6;

implementation

uses Unit1;

{$R *.dfm}


procedure TForm6.FormCreate(Sender: TObject);
begin
edit1.Text:='1';
edit2.Text:='2';
edit3.Text:='0,00001';
memo1.Clear;

end;

procedure TForm6.Button1Click(Sender: TObject);
      var h,e,f,x0:double;

  begin
x0:=strtofloat(edit1.text);
h:=strtofloat(edit2.text);
e:=strtofloat(edit3.text);

   case radiogroup1.ItemIndex of
    0: f:=sin(x0);
    1: f:=sqr(x0)+2*x0+3;
    2: f:=Cos(x0);
       else f:=0;
   end;

        while abs(h)>e do
  begin
if f(x0)<f(x0+e) then h:=-h;
     while (f(x0)>f(x0+h)) do
x0:=x0+h;
h:=-h/4;
  end;


   form1.memo1.Lines.Add('Fmin=' +floattostrf(f(x0),fffixed,8,3));
   form1.memo1.Lines.Add('Xmin=' +floattostrf(x0,fffixed,8,3));





  end;

end.

красным отметил то, где показывает ошибку!


ПЕРВЫЙ ЮНИТ(чтоб было понятней)

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Menus, CheckLst;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Memo1: TMemo;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Label4: TLabel;
    Label5: TLabel;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    N10: TMenuItem;
    N11: TMenuItem;
    N12: TMenuItem;
    N14: TMenuItem;
    RadioGroup1: TMenuItem;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
   

    procedure N7Click(Sender: TObject);
    procedure N9Click(Sender: TObject);
    procedure N11Click(Sender: TObject);
    procedure N10Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure RadioGroup1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Unit2, Unit3, Unit4, Unit5, Unit6;

{$R *.dfm}
Function F1(x:double):double;
begin
Result:=sin(x);
end;
Function F2(x:double):double;
begin
Result:=(sqr(x)+2*x+3);
end;
Function F3(x:double):double;
begin
Result:=cos(x);
end;



                    procedure TForm1.Button1Click(Sender: TObject);
       var x0,h,e:double;
  begin
 Memo1.Lines.Add('F='+button1.Caption);
x0:=StrToFloat(edit1.text);
h:=StrToFloat(edit2.text);
e:=StrToFloat(edit3.text);
         while abs(h)>e do
  begin
if f1(x0)<f1(x0+e) then h:=-h;
         while (f1(x0)>f1(x0+h)) do
x0:=x0+h;
h:=-h/4;
  end;
Memo1.Lines.Add('Xmin='+floattostr(x0));
Memo1.Lines.Add('Fmin='+floattostr(f1(x0)));
Memo1.Lines.Add('_____________');
Memo1.Lines.Add('');
  end;

                    procedure TForm1.Button2Click(Sender: TObject);
       var x0,h,e:double;
  begin
 Memo1.Lines.Add('F='+button2.Caption);
x0:=StrToFloat(edit1.text);
h:=StrToFloat(edit2.text);
e:=StrToFloat(edit3.text);
        while abs(h)>e do
  begin
if f2(x0)<f2(x0+e) then h:=-h;
        while (f2(x0)>f2(x0+h)) do
x0:=x0+h;
h:=-h/4;
  end;
Memo1.Lines.Add('');
Memo1.Lines.Add('Xmin='+floattostr(x0));
Memo1.Lines.Add('Fmin='+floattostr(f2(x0)));
Memo1.Lines.Add('_____________');
Memo1.Lines.Add('');
  end;

                    procedure TForm1.Button3Click(Sender: TObject);
        var x0,h,e:double;
  begin
 Memo1.Lines.Add('F='+button3.Caption);
x0:=StrToFloat(edit1.text);
h:=StrToFloat(edit2.text);
e:=StrToFloat(edit3.text);
        while abs(h)>e do
  begin
if f3(x0)<f3(x0+e) then h:=-h;
        while (f3(x0)>f3(x0+h)) do
x0:=x0+h;
h:=-h/4;
  end;
Memo1.Lines.Add('');
Memo1.Lines.Add('Xmin='+floattostr(x0));
Memo1.Lines.Add('Fmin='+floattostr(f3(x0)));
Memo1.Lines.Add('_____________');
Memo1.Lines.Add('');
  end;



end.

Последний раз редактировалось Начинающий_Дэльфер; 07.12.2012 в 16:54.
Начинающий_Дэльфер вне форума Ответить с цитированием
Старый 07.12.2012, 16:40   #2
MihalNik
МегаМодератор
СуперМодератор
 
Регистрация: 27.11.2012
Сообщений: 5,723
По умолчанию

Вот у Вас функция f (из Unit1?), а локальный параметр зачем с таким же именем? Потом, Вы его используете?
Благими намерениями устлана дорога на programmersforum.ru
MihalNik вне форума Ответить с цитированием
Старый 07.12.2012, 16:48   #3
Начинающий_Дэльфер
 
Регистрация: 04.12.2012
Сообщений: 7
По умолчанию

Цитата:
Сообщение от MihalNik Посмотреть сообщение
Вот у Вас функция f (из Unit1?), а локальный параметр зачем с таким же именем? Потом, Вы его используете?
f я только ввел в 6 юните, а f(x0) из 1 юнита

а локальный параметр зачем с таким же именем? Потом, Вы его используете?
-вот этого вообще не понял, по подробней плз я новичек! (понимаю что такое локальные и глобальные параметры)



что бы было понятней то в 1 юните я сделал прогу через кнопки, а в 6 хочу задействовать радиогрупп с этой же программой!

Последний раз редактировалось Начинающий_Дэльфер; 07.12.2012 в 17:04.
Начинающий_Дэльфер вне форума Ответить с цитированием
Старый 07.12.2012, 16:52   #4
MihalNik
МегаМодератор
СуперМодератор
 
Регистрация: 27.11.2012
Сообщений: 5,723
По умолчанию

А я не преподаватель
Гуглите/смотрите в книжке что такое функции и локальные переменные
На форуме тоже есть поиск
Благими намерениями устлана дорога на programmersforum.ru
MihalNik вне форума Ответить с цитированием
Старый 07.12.2012, 17:03   #5
MihalNik
МегаМодератор
СуперМодератор
 
Регистрация: 27.11.2012
Сообщений: 5,723
По умолчанию

Причем здесь Unit'ы? Говорю же, Вы перепутали функции и локальные переменные (конкретно f). Это форум, не надо без особой причины писать ЛС. Помогают здесь добровольно и только когда хотят.
Замените параметр объявлением функции - и все.
Благими намерениями устлана дорога на programmersforum.ru
MihalNik вне форума Ответить с цитированием
Старый 07.12.2012, 17:08   #6
Начинающий_Дэльфер
 
Регистрация: 04.12.2012
Сообщений: 7
По умолчанию

Цитата:
Сообщение от MihalNik Посмотреть сообщение
Причем здесь Unit'ы? Говорю же, Вы перепутали функции и локальные переменные (конкретно f). Это форум, не надо без особой причины писать ЛС. Помогают здесь добровольно и только когда хотят.
Замените параметр объявлением функции - и все.
простите если что не так, сейчас попробую.
Начинающий_Дэльфер вне форума Ответить с цитированием
Старый 07.12.2012, 17:36   #7
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Обьявим функу
Код:
Function f(x:double;num:integer):double;
begin
  case num  of
  0:Result:=sin(x);
  1:Result:=x*x+2*x+3;
  2:Result:=cos(x);
  end;
end;
ну а код нажатия кнопачки напишем
Код:
procedure TForm1.Button1Click(Sender: TObject);
var x0,h,e:double;
op:integer;
begin
x0:=StrToFloat(edit1.text);
h:=StrToFloat(edit2.text);
e:=StrToFloat(edit3.text);
op:=radiogroup1.ItemIndex;
Memo1.Lines.Add('F='+Radiogroup1.Items[op]);
while abs(h)>e do
begin
if f(x0,op)<f(x0+e,op) then h:=-h;
while (f(x0,op)>f(x0+h,op)) do
x0:=x0+h;
h:=-h/4;
end;
Memo1.Lines.Add('Xmin='+floattostr(x0));
Memo1.Lines.Add('Fmin='+floattostr(f(x0,op)));
end;
ну и добавьте в Formcreate
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
radiogroup1.itemindex:=0;
end;
Enjoy!!!
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 07.12.2012, 18:01   #8
Начинающий_Дэльфер
 
Регистрация: 04.12.2012
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Mad_Cat Посмотреть сообщение
Обьявим функу
Код:
Function f(x:double;num:integer):double;
begin
  case num  of
  0:Result:=sin(x);
  1:Result:=x*x+2*x+3;
  2:Result:=cos(x);
  end;
end;
ну а код нажатия кнопачки напишем
Код:
procedure TForm1.Button1Click(Sender: TObject);
var x0,h,e:double;
op:integer;
begin
x0:=StrToFloat(edit1.text);
h:=StrToFloat(edit2.text);
e:=StrToFloat(edit3.text);
op:=radiogroup1.ItemIndex;
Memo1.Lines.Add('F='+Radiogroup1.Items[op]);
while abs(h)>e do
begin
if f(x0,op)<f(x0+e,op) then h:=-h;
while (f(x0,op)>f(x0+h,op)) do
x0:=x0+h;
h:=-h/4;
end;
Memo1.Lines.Add('Xmin='+floattostr(x0));
Memo1.Lines.Add('Fmin='+floattostr(f(x0,op)));
end;
ну и добавьте в Formcreate
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
radiogroup1.itemindex:=0;
end;
Enjoy!!!
благодарю очень сильно! теперь разобрался что и как, с меня еще клиенты!)
Начинающий_Дэльфер вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Missing operator or semicolon impulsgraw Общие вопросы Delphi 7 04.12.2011 02:59
возникает ошибка Missing operator or semicolon (классы) fate Общие вопросы Delphi 16 22.02.2011 19:12
missing operator or semicolon - Как получить секунды [Delphi] bulldog5293 Помощь студентам 8 10.12.2010 16:30
ошибкa "missing operator or semicolon" Дим@@ Помощь студентам 3 11.11.2010 15:14
ошибка: no match for ‘operator<<’ in ‘std::operator<< [with _Traits = std::char_traits<char> Critter Общие вопросы C/C++ 5 08.08.2010 23:38