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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2012, 12:49   #1
Kalina)
 
Регистрация: 29.10.2012
Сообщений: 7
По умолчанию метод дихотомии

задание было такое: составьте в delphi программу, позволяющую решить нелинейное уравнение на определенном отрезке [a,b] с заданной точностью е с помощью метода дихотомии
своими силами написала такой код. но программа не запускается. подскажите пожалуйста, где моя ошибка
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Button1: TButton;
    Label5: TLabel;
    Label6: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
   a,b,e,f1,f2,f,t,y,x:real;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  a:= StrToInt(Edit1.Text);
  b:= StrToInt(Edit2.Text);
  e:= StrToInt(Edit3.Text);
  y:=1;

      While b-a<=e do
      begin
       y:=y+1;  // считаем итерации
       f1:= sqr(a)-5;
       t:=0.5*(a+b);
       f2:=sqr(t)-5;
         begin
         if f1*f2<=0 then
          begin
           b:=t;
           end
           else
           begin
           a:=t;
          end;
 end;
         end;
  x:=0.5*(a+b);
  f:=sqr(x)-5;
Label5.Caption:= StrToInt(f);
Label6.Caption:= StrToInt(y);
end;

end.
Kalina) вне форума Ответить с цитированием
Старый 21.11.2012, 13:13   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

В каком смысле не запускается? Окно с кнопкой появляется?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.11.2012, 13:56   #3
Kalina)
 
Регистрация: 29.10.2012
Сообщений: 7
По умолчанию

выдает ошибку на строку Label5.Caption:= StrToInt(f)
но там вроде всё правильно
Kalina) вне форума Ответить с цитированием
Старый 21.11.2012, 14:20   #4
rUs_LAN
Форумчанин
 
Регистрация: 15.11.2008
Сообщений: 577
По умолчанию

я паскаля не знаю но по логике вы не ту функцию вызываете.
Вам надо функцию которая с типа real сделает тип string. А вы вызываете функцию которая string превращает в integer.
rUs_LAN вне форума Ответить с цитированием
Старый 21.11.2012, 14:25   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

StrToInt для целочисленных переменных. а f у тебя вещественная.
StrToFloat используй.
Цитата:
выдает ошибку
Мальчишь-Кибальчиш был школотой, поэтому даже за бочку варенья не рассказал, какую ошибку ему доверил компилятор, да?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.11.2012, 14:29   #6
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Код:
Label5.Caption:= StrToInt(f)
Я перевожу это как в метку как строку нужно запихнуть строковое значение f преобразованное в целое число. При этом f действительно вещественное. Был бы у компилятора миниган, он был убил Вас через монитор. И нисколько не сожалел о содеяном.
Цитата:
я паскаля не знаю но по логике вы не ту функцию вызываете.
В стандартном Паскале тоже нет таких функций, это дельфийские.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 21.11.2012 в 14:32.
Utkin вне форума Ответить с цитированием
Старый 21.11.2012, 14:36   #7
Kalina)
 
Регистрация: 29.10.2012
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
StrToInt для целочисленных переменных. а f у тебя вещественная.
StrToFloat используй.

Мальчишь-Кибальчиш был школотой, поэтому даже за бочку варенья не рассказал, какую ошибку ему доверил компилятор, да?
ну как бы объяснить. ВЫДЕЛЯЕТ строку. просто выделяет красным и всё
StrToFloat не помог, продолжает выделять.

Это делфи, я еще в первом сообщении написала
Kalina) вне форума Ответить с цитированием
Старый 21.11.2012, 14:40   #8
rUs_LAN
Форумчанин
 
Регистрация: 15.11.2008
Сообщений: 577
По умолчанию

попробуйте FloatToStr никак не пойму почему вы число в число хотите превращать
rUs_LAN вне форума Ответить с цитированием
Старый 21.11.2012, 14:46   #9
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
StrToFloat не помог, продолжает выделять.
Потому что эта функция на входе рассматривает строку, а там число. Эта функция преобразует строку в число. Вам нужно наоборот. Метка воспринимает строки, а f это число и его нужно преобразовать в строку. Ваша функция пытается выполнить обратное действие
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 21.11.2012, 14:57   #10
Kalina)
 
Регистрация: 29.10.2012
Сообщений: 7
По умолчанию

о, спасибо, поняла теперь! FloatToStr помог.
теперь другой вопросик. программа работает, но цикл почему то считается только один раз. где косяк?
Kalina) вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Метод дихотомии funke_monkey Помощь студентам 1 15.11.2012 21:51
Метод перебора, Метод дихотомии, Метод золотого сечения Delphi !!! OneBri Помощь студентам 0 03.10.2012 08:42
метод дихотомии dielk2006 Помощь студентам 2 28.01.2012 10:58
C++ метод дихотомии MIKE72 Помощь студентам 0 02.10.2011 14:21
Метод Дихотомии Roland_Lviv_ua Помощь студентам 5 13.06.2010 18:23