Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.02.2008, 15:00
Cubar Cubar вне форума
Прохожий
 
Регистрация: 21.01.2008
Сообщения: 20
Репутация: 10
По умолчанию Метод Ньютона

Здравствуйте!
Я сейчас делаю программу "Метод Ньютона".
Цель: разработать программу, которая решает линейные алгебраические уравнения методом Ньютона.
Вид уравнений, которые будет решать программа, такой:
Ax(3)+Bx(2)+Cx+D=0,
где: x - неизвестное;
A,B,C,D - заданные числа.

Сейчас делаю защиту "от дурака".
Надо сделать так, чтобы в поле "TEdit", можно было вводить только цифры, знаки "-", "." или ",". Так вот, я сделал только то, что можно ввести:
1) цифры.
2) "-", но только чтобы выводился на первом месте и чтобы нельзя было ввести повторно это символ.
3) "." или ",", чтобы если пользователь введет "." или ",", то автоматически вместо это символа появлялся тот, который по умолчанию стоит в Windows для ввода действительных чисел, также чтобы нельзя было ввести "," на первом месте.

А вот чтобы "," или "." можно было ввести только 1 раз никак не получается.
Помогите, пожалуйста, кто знает, как это сделать.

Вот код защиты, которую я сделал:
Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
Case Key of
'.',',':
// разделитель целой и дробной частей числа
  begin
  If Key<>DecimalSeparator then
    begin
    Key:=DecimalSeparator; // заменим разделитель на допустимый
    end;
  If (Length (Edit1.Text)=0) and (Key=DecimalSeparator) then
    begin
    Key:=Chr (0);
    end;
  end;
'-': // минус можно ввести только первым символом, т.е. когда ячейка пустая
If Length (Edit1.Text)<>0 then
  begin
  // остальные символы запрещены
  Key:=Chr (0);
  end;
#48..#57:;
#13:Edit2.SetFocus;
#8:;
else
Key:=Chr(0);
end;
end;
Ответить с цитированием
  #2  
Старый 07.02.2008, 22:12
Аватар для 4erep_88
4erep_88 4erep_88 вне форума
Новичок
 
Регистрация: 18.07.2007
Сообщения: 51
Репутация: 15
По умолчанию

Код:
Case Key of
'.',',':
begin
If Key<>DecimalSeparator then Key:=DecimalSeparator;
If (Length (Edit1.Text)=0)or(Edit1.Text=Edit1.SelText) then Key:=Chr (0);
If pos(DecimalSeparator,Edit1.SelText)<>0 then exit;
If pos(DecimalSeparator,Edit1.Text)<>0 then Key:=Chr(0);
end;
...
Ответить с цитированием
  #3  
Старый 08.02.2008, 21:57
dnd_digger dnd_digger вне форума
Прохожий
 
Регистрация: 31.01.2008
Сообщения: 6
Репутация: 10
По умолчанию

еще сделай проверку чтобы нельзя было вводить
3.078.888 (т.е. 2 запятые или точки в одном числе)
так чтобы не более одного знака подряд. ++- (нельзя)
короче гемор но все же. если это прям так надо, но для начало сделай сам алгоритм, а после всякую защиту.
Ответить с цитированием
  #4  
Старый 09.02.2008, 18:31
Cubar Cubar вне форума
Прохожий
 
Регистрация: 21.01.2008
Сообщения: 20
Репутация: 10
По умолчанию Re: Метод Ньютона

Ребят, спасибо всем, кто пытался помочь мне.
Защиту от дурака я уже сделал.
У меня для Вас есть еще 1 вопрос:
Как сделать, так, чтобы выводилось действительное число с определенным количеством символов, т.е.
"X=0,983928383", нужно вывести "X" в таком виде "X=0,98".
В "Borland Pascal 7.0" это делается вот так:
Код:
WriteLn (X.2.0);
А как это сделать в "Borland Delphi 7.0"?
Ответить с цитированием
  #5  
Старый 09.02.2008, 20:16
Cubar Cubar вне форума
Прохожий
 
Регистрация: 21.01.2008
Сообщения: 20
Репутация: 10
По умолчанию

Насчет вывода действительного числа с определенным количеством знаков я уже решил:
Label13.Caption:='x [ '+FloatToStr (RoundTo (x1,-3))+' , '+FloatToStr (RoundTo (x2,-3))+' ]'; {Вывод промежутка, в котором лежит ответ}

А вот возникла такая проблема: при выводе результата выводится сообщение: NAN. Что это такое может быть?
Ответить с цитированием
  #6  
Старый 09.02.2008, 21:27
Cubar Cubar вне форума
Прохожий
 
Регистрация: 21.01.2008
Сообщения: 20
Репутация: 10
По умолчанию

Спасибо всем, кто мне помогал.
Программу я сделал все-таки.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:04.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter