![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Здравствуйте!
Очень прошу, не кидайте в меня тапками за мои вопросы! Я совершеннеший новичок в программировании и очень нуждаюсь в помощи! Задача такова: "Необходимо высчитать квадратный корень числа (задано число в SpinEdit) вавилонским способом: 1) Нужно, что бы число было больше ноля 2) Что бы число было больше единицы. Если число отрицательное, то необходимо сделать его положительным и запомнить его. Это число нужно разделить на 2 и получить результат, который в сл. шаге будет делителем. Полученное среднее значение будет делителем в сл. шаге. Делитель и среднее значение приводят к приблизительно одному результату, которе и является квадратным корнем. Программа будет прервана после 6 попыток и именно шестая будет наиболее близка к ответу. " Уфф....если не совсем понятно, что значит по вавилонски, пожалуйста, посмотрите тут: http://en.wikipedia.org/wiki/Methods...onian_metho d Вот, мои мучения...позориться нам не привыкать :Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Spin;
type
TForm1 = class(TForm)
SpinEdit1: TSpinEdit;
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Zahl1,Zahl2,Wurzel: Real;
Quadratwurzel:Integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Zahl1:=StrToFloat(SpinEdit1.Text);
If Zahl1>1 then
Wurzel:= Quadratwurzel(Zahl1);
Label1.Caption:=FloatToStr(Wurzel);
end;
If Zahl1<1 then
Zahl2:=Zahl1*(1/-1);
Wurzel:=Quadratwurzel(Zahl2);
Label1.Caption:=FloatToStr(Wurzel);
end;
function TForm1.Quadratwurzel:String;
Mittelwert1:= (Zahl1+1)/2;
Mittelwert2:=(Mittelwert1+Zahl1/Mittelwert1);
Mittelwert3:=(Mittelwert2+Zahl1/Mittelwert2);
Mittelwert4:=(Mittelwert3+Zahl1/Mittelwert3);
Mittelwert5:=(Mittelwert4+Zahl1/Mittelwert4);
Mittelwert6:=(Mittelwert5+Zahl1/Mittelwert5);
Ergebnis:=Mittelwert6;
Label1.Caption:=FloatToStr(Ergebnis);
end;
end.Буду очень признательна за помощь! Уж хочется решить задачку и начать спокойно спать по ночам! Последний раз редактировалось Admin, 07.01.2013 в 14:26. |